summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-01-13 17:42:16 -0800
committerYukihiro "Matz" Matsumoto <[email protected]>2013-01-13 17:42:16 -0800
commita3c3f00323f33dc7844e4a0179798648fe70a85b (patch)
tree43e613eb3f0a3b1d5fba9224e202270acbadeb47 /src
parent983065aa0d95c39ba5b834509d68ae10be8af478 (diff)
parenta80e9b5bc85d669912cca11b9e707f125ce82d5c (diff)
downloadmruby-a3c3f00323f33dc7844e4a0179798648fe70a85b.tar.gz
mruby-a3c3f00323f33dc7844e4a0179798648fe70a85b.zip
Merge pull request #729 from authorNari/unclear-black-in-major-collector
Doesn't clear black of all marked objects in the major collector.
Diffstat (limited to 'src')
-rw-r--r--src/gc.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/gc.c b/src/gc.c
index b3e4b291c..3577db1c2 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -780,7 +780,7 @@ incremental_sweep_phase(mrb_state *mrb, size_t limit)
}
}
else {
- if (!is_minor_gc(mrb))
+ if (!is_generational(mrb))
paint_partial_white(mrb, &p->as.basic); /* next gc target */
dead_slot = 0;
}
@@ -863,11 +863,10 @@ clear_all_old(mrb_state *mrb)
if (is_major_gc(mrb)) {
advance_phase(mrb, GC_STATE_NONE);
}
- else {
- mrb->is_generational_gc_mode = FALSE;
- prepare_incremental_sweep(mrb);
- advance_phase(mrb, GC_STATE_NONE);
- }
+
+ mrb->is_generational_gc_mode = FALSE;
+ prepare_incremental_sweep(mrb);
+ advance_phase(mrb, GC_STATE_NONE);
mrb->variable_gray_list = mrb->gray_list = NULL;
mrb->is_generational_gc_mode = origin_mode;
}