allow copying a chunk of floats to a list in a single operation. Also

improve performance of sum out operation on arrays.
This commit is contained in:
Vítor Santos Costa
2011-12-30 16:04:16 +00:00
parent 5d3d20f723
commit 00b5edd8da
12 changed files with 104 additions and 53 deletions

View File

@@ -3432,6 +3432,16 @@ compact_heap( USES_REGS1 )
*dest++ = *current++;
}
*old_dest = *current;
/* if we have are calling from the C-interface,
we may have an open array when we start the gc */
if (LOCAL_OpenArray) {
CELL *start = current + (dest-old_dest);
if (LOCAL_OpenArray < current &&
LOCAL_OpenArray > start) {
UInt off = LOCAL_OpenArray-start;
LOCAL_OpenArray = old_dest+off;
}
}
*dest++ = EndSpecials;
#ifdef DEBUG
found_marked += (dest-old_dest);