diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-04-22 15:29:17 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-04-25 10:41:50 +0900 |
| commit | 01f78258524dabdd183ed75fa6488450f693cd53 (patch) | |
| tree | dbefd88b3010ea46292aa8f4ca7888be4c3ffdde /src/gc.c | |
| parent | 6088276cc833c104d0228f5c03140601c7fc06df (diff) | |
| download | mruby-01f78258524dabdd183ed75fa6488450f693cd53.tar.gz mruby-01f78258524dabdd183ed75fa6488450f693cd53.zip | |
Use fiber marking instead of `mark_context`.
To avoid redundant `mark_context()`.
Diffstat (limited to 'src/gc.c')
| -rw-r--r-- | src/gc.c | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -594,8 +594,8 @@ mark_context(mrb_state *mrb, struct mrb_context *c) } /* mark fibers */ mrb_gc_mark(mrb, (struct RBasic*)c->fib); - if (c->prev) { - mark_context(mrb, c->prev); + if (c->prev && c->prev->fib) { + mrb_gc_mark(mrb, (struct RBasic*)c->prev->fib); } } @@ -882,10 +882,10 @@ root_scan_phase(mrb_state *mrb, mrb_gc *gc) mrb_gc_mark(mrb, (struct RBasic*)mrb->arena_err); #endif + mark_context(mrb, mrb->root_c); if (mrb->root_c != mrb->c) { mark_context(mrb, mrb->c); } - mark_context(mrb, mrb->root_c); } static size_t |
