From a511957ec8f075d24d971987ebe2cf41ce332629 Mon Sep 17 00:00:00 2001 From: fleuria Date: Sun, 3 Nov 2013 12:05:25 +0800 Subject: refactor mrb_context_run() --- src/load.c | 4 ++-- src/parse.y | 2 +- src/vm.c | 12 +++--------- 3 files changed, 6 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/load.c b/src/load.c index 3d7b54eef..d6397d652 100644 --- a/src/load.c +++ b/src/load.c @@ -510,7 +510,7 @@ mrb_load_irep(mrb_state *mrb, const uint8_t *bin) irep_error(mrb, n); return mrb_nil_value(); } - return mrb_context_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb)); + return mrb_context_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb), 0); } #ifdef ENABLE_STDIO @@ -760,6 +760,6 @@ mrb_load_irep_file(mrb_state *mrb, FILE* fp) irep_error(mrb, n); return mrb_nil_value(); } - return mrb_context_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb)); + return mrb_context_run(mrb, mrb_proc_new(mrb, mrb->irep[n]), mrb_top_self(mrb), 0); } #endif /* ENABLE_STDIO */ diff --git a/src/parse.y b/src/parse.y index 12dcfa471..5f6a286ab 100644 --- a/src/parse.y +++ b/src/parse.y @@ -5388,7 +5388,7 @@ load_exec(mrb_state *mrb, parser_state *p, mrbc_context *c) if (mrb->c->ci) { mrb->c->ci->target_class = target; } - v = mrb_run(mrb, proc, mrb_top_self(mrb)); + v = mrb_context_run(mrb, proc, mrb_top_self(mrb), 0); if (mrb->exc) return mrb_nil_value(); return v; } diff --git a/src/vm.c b/src/vm.c index d15358d42..d35ab59f2 100644 --- a/src/vm.c +++ b/src/vm.c @@ -546,8 +546,8 @@ void mrb_gv_val_set(mrb_state *mrb, mrb_sym sym, mrb_value val); #define CALL_MAXARGS 127 -static mrb_value -run_proc(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep) +mrb_value +mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_keep) { /* mrb_assert(mrb_proc_cfunc_p(proc)) */ mrb_irep *irep = proc->body.irep; @@ -2148,13 +2148,7 @@ run_proc(mrb_state *mrb, struct RProc *proc, mrb_value self, unsigned int stack_ mrb_value mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) { - return run_proc(mrb, proc, self, mrb->c->ci->argc + 2); /* argc + 2 (receiver and block) */ -} - -mrb_value -mrb_context_run(mrb_state *mrb, struct RProc *proc, mrb_value self) -{ - return run_proc(mrb, proc, self, proc->body.irep->nregs); + return mrb_context_run(mrb, proc, self, mrb->c->ci->argc + 2); /* argc + 2 (receiver and block) */ } void -- cgit v1.2.3