]> gitweb.factorcode.org Git - factor.git/commitdiff
VM: don't end the gc event in start_gc_again, fixes #659
authorBjörn Lindqvist <bjourne@gmail.com>
Wed, 4 May 2016 20:47:50 +0000 (22:47 +0200)
committerBjörn Lindqvist <bjourne@gmail.com>
Wed, 4 May 2016 20:47:50 +0000 (22:47 +0200)
basis/tools/memory/memory-tests.factor
vm/gc.cpp

index a4b1e5a9cab19fbcf3664193ee31f19f22e000c8..154efde736fc140adfa0282025a1451234eb45f8 100644 (file)
@@ -1,4 +1,5 @@
-USING: tools.test tools.memory memory arrays ;
+USING: arrays math memory namespaces parser sequences tools.memory
+tools.memory.private tools.test tools.time ;
 IN: tools.memory.tests
 
 { } [ room. ] unit-test
@@ -8,3 +9,9 @@ IN: tools.memory.tests
 { } [ gc-stats. ] unit-test
 { } [ gc-summary. ] unit-test
 { } [ callback-room. ] unit-test
+
+! Each gc-event must reclaim something. #659
+{ f } [
+    [ "resource:basis/tools/memory/memory.factor" run-file ] time
+    gc-events get [ space-reclaimed 0 < ] any?
+] unit-test
index cff2aa2c1445d3aa9d090e4c933575d67035ec64..14ac2c7d675079d6afb91b32d12a187e43fff480 100644 (file)
--- a/vm/gc.cpp
+++ b/vm/gc.cpp
@@ -72,8 +72,6 @@ void factor_vm::end_gc() {
 }
 
 void factor_vm::start_gc_again() {
-  end_gc();
-
   switch (current_gc->op) {
     case collect_nursery_op:
       /* Nursery collection can fail if aging does not have enough
@@ -92,9 +90,6 @@ void factor_vm::start_gc_again() {
       critical_error("in start_gc_again, bad GC op", current_gc->op);
       break;
   }
-
-  if (gc_events)
-    current_gc->event = new gc_event(current_gc->op, this);
 }
 
 void factor_vm::set_current_gc_op(gc_op op) {