From 6bf1ee78c8cdc5c1b0265694c404ada0ec32cb28 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Fri, 30 May 2014 15:25:58 +0900 Subject: add internal function mrb_toplevel_run_keep() to keep stack contents; close #2326 --- src/vm.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'src/vm.c') diff --git a/src/vm.c b/src/vm.c index 649596713..d604e5d9e 100644 --- a/src/vm.c +++ b/src/vm.c @@ -2402,19 +2402,25 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) } mrb_value -mrb_toplevel_run(mrb_state *mrb, struct RProc *proc) +mrb_toplevel_run_keep(mrb_state *mrb, struct RProc *proc, unsigned int stack_keep) { mrb_callinfo *ci; mrb_value v; if (!mrb->c->cibase || mrb->c->ci == mrb->c->cibase) { - return mrb_context_run(mrb, proc, mrb_top_self(mrb), 0); + return mrb_context_run(mrb, proc, mrb_top_self(mrb), stack_keep); } ci = cipush(mrb); ci->acc = CI_ACC_SKIP; ci->target_class = mrb->object_class; - v = mrb_context_run(mrb, proc, mrb_top_self(mrb), 0); + v = mrb_context_run(mrb, proc, mrb_top_self(mrb), stack_keep); cipop(mrb); return v; } + +mrb_value +mrb_toplevel_run(mrb_state *mrb, struct RProc *proc) +{ + return mrb_toplevel_run_keep(mrb, proc, 0); +} -- cgit v1.2.3