From 8911ad2a162d249facf3e2a995ce3a97e6c07bc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Lindqvist?= Date: Wed, 4 May 2016 22:47:50 +0200 Subject: [PATCH] VM: don't end the gc event in start_gc_again, fixes #659 --- basis/tools/memory/memory-tests.factor | 9 ++++++++- vm/gc.cpp | 5 ----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/basis/tools/memory/memory-tests.factor b/basis/tools/memory/memory-tests.factor index a4b1e5a9ca..154efde736 100644 --- a/basis/tools/memory/memory-tests.factor +++ b/basis/tools/memory/memory-tests.factor @@ -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 diff --git a/vm/gc.cpp b/vm/gc.cpp index cff2aa2c14..14ac2c7d67 100644 --- 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) {