From 67bb9a7c716b27a274080b28799f7e64f89facd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Fri, 14 Oct 2016 13:50:47 +0200 Subject: [PATCH] VM: checking addresses differ before memmoving It appears to speed up compaction a bit in cases where only a few objects need to move. --- vm/free_list.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/vm/free_list.hpp b/vm/free_list.hpp index a93084315b..d19dea5b15 100644 --- a/vm/free_list.hpp +++ b/vm/free_list.hpp @@ -279,7 +279,9 @@ void free_list_allocator::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; };