From 01f78258524dabdd183ed75fa6488450f693cd53 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 22 Apr 2017 15:29:17 +0900 Subject: Use fiber marking instead of `mark_context`. To avoid redundant `mark_context()`. --- src/gc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index c703428b5..766fbd330 100644 --- a/src/gc.c +++ b/src/gc.c @@ -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 -- cgit v1.2.3