[armedbear-devel] Patch for LispThread.java, do not copy arrays in StackFrame

Mark Evenson evenson at panix.com
Wed Jul 29 07:30:54 UTC 2009


On 7/24/09 12:31 AM, Ville Voutilainen wrote:
> Here's a very simple patch that should make function calls faster. I
> have only anecdotal tests with the raytracing shootout test and the
> compiled ansi-tests, but the numbers seem to support this patch.
>
> If nobody objects, I'll commit this.

Sorry for the late reply.

In this case, I think it is the correct decision to copy the reference 
as opposed to the values into StackFrame.  Presumably the args never go 
out of scope as long as its corresponding StackFrame is contained in 
LispThread.stack.

But if we wished to retain the code, there is a little Java "trick" for 
copying arrays, namely that java.lang.System contains a arraycopy() method:

    static void arraycopy(Object src, int srcPos, Object dest,
			 int destPos, int length)

which "Copies an array from the specified source array, beginning at the 
specified position, to the specified position of the destination array."

In the Sun JVM 1.1 this was at least an order or two of magnitude faster 
in array copies for largish arrays (I think it translated down to the 
equivalent memcpy() on the native platform).  I'm not sure what the 
current JVM implementation what the speed gains might be, but it is 
useful to keep in mind.

Mark

-- 
"A screaming comes across the sky.  It has happened before, but there
is nothing to compare to it now."




More information about the armedbear-devel mailing list