From 8b29f10ba9ab4e66a6f79c5aca21d7dd1fb677ae Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 12 Jul 2013 00:15:50 +0900 Subject: factor out context stack marking --- src/gc.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/gc.c b/src/gc.c index d1d6ea1ee..bd7890087 100644 --- a/src/gc.c +++ b/src/gc.c @@ -408,19 +408,29 @@ add_gray_list(mrb_state *mrb, struct RBasic *obj) } static void -mark_context(mrb_state *mrb, struct mrb_context *c) +mark_context_stack(mrb_state *mrb, struct mrb_context *c) { size_t i; size_t e; - mrb_callinfo *ci; - /* mark stack */ e = c->stack - c->stbase; if (c->ci) e += c->ci->nregs; if (c->stbase + e > c->stend) e = c->stend - c->stbase; for (i=0; istbase[i]); } +} + +static void +mark_context(mrb_state *mrb, struct mrb_context *c) +{ + size_t i; + size_t e; + mrb_callinfo *ci; + + /* mark stack */ + mark_context_stack(mrb, c); + /* mark ensure stack */ e = (c->ci) ? c->ci->eidx : 0; for (i=0; i