diff options
| author | Narihiro Nakamura <[email protected]> | 2013-01-13 18:56:23 +0900 |
|---|---|---|
| committer | Narihiro Nakamura <[email protected]> | 2013-01-13 18:56:23 +0900 |
| commit | a80e9b5bc85d669912cca11b9e707f125ce82d5c (patch) | |
| tree | d2ace6d0b86147e42bef0228e76ecb7db6a4d9a7 /src | |
| parent | 9614f134879f58ee3532e3e7dd4d75814fbc73ee (diff) | |
| download | mruby-a80e9b5bc85d669912cca11b9e707f125ce82d5c.tar.gz mruby-a80e9b5bc85d669912cca11b9e707f125ce82d5c.zip | |
Doesn't clear black of all marked objects in major collections.
Since the minor collector doesn't need to mark these objects, the worst-case pause time is reduced.
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 11 |
1 files changed, 5 insertions, 6 deletions
@@ -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; } |
