VM: checking addresses differ before memmoving
It appears to speed up compaction a bit in cases where only a few objects need to move.char-rename
parent
aace892527
commit
67bb9a7c71
|
@ -279,7 +279,9 @@ void free_list_allocator<Block>::compact(Iterator& iter, Fixup fixup,
|
||||||
if (!state.marked_p(block_addr))
|
if (!state.marked_p(block_addr))
|
||||||
return;
|
return;
|
||||||
*finger = (Block*)(block_addr + size);
|
*finger = (Block*)(block_addr + size);
|
||||||
|
if (dest_addr != (cell)block) {
|
||||||
memmove((Block*)dest_addr, block, size);
|
memmove((Block*)dest_addr, block, size);
|
||||||
|
}
|
||||||
iter(block, (Block*)dest_addr, size);
|
iter(block, (Block*)dest_addr, size);
|
||||||
dest_addr += size;
|
dest_addr += size;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue