summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/gc.c b/src/gc.c
index 8569cc085..8d0ad5500 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -941,11 +941,15 @@ clear_all_old(mrb_state *mrb)
incremental_gc_until(mrb, GC_STATE_NONE);
}
+ /* Sweep the dead objects, then reset all the live objects
+ * (including all the old objects, of course) to white. */
mrb->is_generational_gc_mode = FALSE;
prepare_incremental_sweep(mrb);
incremental_gc_until(mrb, GC_STATE_NONE);
- mrb->atomic_gray_list = mrb->gray_list = NULL;
mrb->is_generational_gc_mode = origin_mode;
+
+ /* The gray objects has already been painted as white */
+ mrb->atomic_gray_list = mrb->gray_list = NULL;
}
void