summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-08-01 07:01:26 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2013-08-01 07:01:26 -0700
commita32fdf3e5d3cd4238afd5e5627659269e31211ef (patch)
treec7adb25081e1f54e47dcbf22967d5b66da389b79 /src
parent429e69243ce7d47075c5d4e638602f7f2e24a46f (diff)
parent107906e3cb1d7f538bdecba9b171502a682cde0f (diff)
downloadmruby-a32fdf3e5d3cd4238afd5e5627659269e31211ef.tar.gz
mruby-a32fdf3e5d3cd4238afd5e5627659269e31211ef.zip
Merge pull request #1426 from Fleurer/clear-all-old
add comments for clear_all_old()
Diffstat (limited to 'src')
-rw-r--r--src/gc.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index 8569cc085..f8e4a3b20 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
@@ -998,7 +1002,7 @@ mrb_full_gc(mrb_state *mrb)
incremental_gc_until(mrb, GC_STATE_NONE);
}
- /* clean all black object as old */
+ /* clear all the old objects back to young */
if (is_generational(mrb)) {
clear_all_old(mrb);
mrb->gc_full = TRUE;