]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/free_list.hpp
xmode.marker: more correct faster update-match-group
[factor.git] / vm / free_list.hpp
index a93084315b673bf200bbe3a3295b83738b0a58f2..a996ee834a8dc2b5be527c3436afd2f9fea971fa 100644 (file)
@@ -263,7 +263,7 @@ void free_list_allocator<Block>::sweep(Iterator& iter) {
 }
 
 template <typename Block> void free_list_allocator<Block>::sweep() {
-  auto null_sweep = [](Block* free_block, cell size) { };
+  auto null_sweep = [](Block* free_block, cell size) { (void)free_block; (void)size; };
   sweep(null_sweep);
 }
 
@@ -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;
   };