]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: return the loop, it is needed for best performance
authorBjörn Lindqvist <bjourne@gmail.com>
Mon, 26 Sep 2016 03:16:33 +0000 (05:16 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Mon, 26 Sep 2016 03:16:33 +0000 (05:16 +0200)
vm/nursery_collector.cpp

index 54e5a59d438cec04e8c4601e2f54f5b94c7d7c17..e2c005f09f94ad1d6973a9eb07ab975aa7c306bb 100644 (file)
@@ -14,10 +14,13 @@ struct nursery_copier : no_fixup {
       return obj;
     }
 
-    if (obj->forwarding_pointer_p()) {
-      object* dest = obj->forwarding_pointer();
-      FACTOR_ASSERT(!nursery->contains_p(dest));
-      return dest;
+    // The while-loop is a needed micro-optimization.
+    while (obj->forwarding_pointer_p()) {
+      obj = obj->forwarding_pointer();
+    }
+
+    if (!nursery->contains_p(obj)) {
+      return obj;
     }
 
     cell size = obj->size();