]> gitweb.factorcode.org Git - factor.git/blobdiff - vm/vm.hpp
VM: each_object() can't iterate the nursery so instead we assume it's empty
[factor.git] / vm / vm.hpp
index 87a8c878e245cde4e9ac5529f37a80779d0f3626..d17a0e9bad8dc12dbb1b05e279497ac013ed20dd 100644 (file)
--- a/vm/vm.hpp
+++ b/vm/vm.hpp
@@ -327,12 +327,15 @@ struct factor_vm {
   }
 
   template <typename Iterator> inline void each_object(Iterator& iterator) {
-    gc_off = true;
 
+    /* The nursery can't be iterated because there may be gaps between
+       the objects (see factor_vm::reallot_array) so we require it to
+       be empty first. */
+    FACTOR_ASSERT(nursery.occupied_space() == 0);
+
+    gc_off = true;
     each_object(data->tenured, iterator);
     each_object(data->aging, iterator);
-    each_object(data->nursery, iterator);
-
     gc_off = false;
   }