summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-11-05 00:13:01 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-11-05 00:13:01 +0900
commitf80401de6c9b7dd9e0676c4414aae7a6e033ac5f (patch)
tree27663cfee57ca8652671087e01b99d69f814a32a /src/vm.c
parente386760cc7b7958a8948b0a23b35b3a9df30c354 (diff)
parent82c5b486e0d788aa7a391574c59959da2216990e (diff)
downloadmruby-f80401de6c9b7dd9e0676c4414aae7a6e033ac5f.tar.gz
mruby-f80401de6c9b7dd9e0676c4414aae7a6e033ac5f.zip
resolved conflicts and updated to latest return value change of mrb_generate_code()
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/vm.c b/src/vm.c
index 1099db8a1..d35ab59f2 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -547,7 +547,7 @@ void mrb_gv_val_set(mrb_state *mrb, mrb_sym sym, mrb_value val);
#define CALL_MAXARGS 127
mrb_value
-mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
+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;
@@ -595,7 +595,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
if (!mrb->c->stack) {
stack_init(mrb);
}
- stack_extend(mrb, irep->nregs, mrb->c->ci->argc + 2); /* argc + 2 (receiver and block) */
+ stack_extend(mrb, irep->nregs, stack_keep);
mrb->c->ci->err = pc;
mrb->c->ci->proc = proc;
mrb->c->ci->nregs = irep->nregs + 1;
@@ -2145,6 +2145,12 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
END_DISPATCH;
}
+mrb_value
+mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
+{
+ return mrb_context_run(mrb, proc, self, mrb->c->ci->argc + 2); /* argc + 2 (receiver and block) */
+}
+
void
mrb_longjmp(mrb_state *mrb)
{