]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: checking addresses differ before memmoving
authorBjörn Lindqvist <bjourne@gmail.com>
Fri, 14 Oct 2016 11:50:47 +0000 (13:50 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Fri, 14 Oct 2016 11:52:44 +0000 (13:52 +0200)
It appears to speed up compaction a bit in cases where only a few
objects need to move.

vm/free_list.hpp

index a93084315b673bf200bbe3a3295b83738b0a58f2..d19dea5b159ca516af0a15815e01a37d0d7f3f4f 100644 (file)
@@ -279,7 +279,9 @@ void free_list_allocator<Block>::compact(Iterator& iter, Fixup fixup,
     if (!state.marked_p(block_addr))
       return;
     *finger = (Block*)(block_addr + size);
-    memmove((Block*)dest_addr, block, size);
+    if (dest_addr != (cell)block) {
+      memmove((Block*)dest_addr, block, size);
+    }
     iter(block, (Block*)dest_addr, size);
     dest_addr += size;
   };