Commit 489b9758 authored by Yukihiro "Matz" Matsumoto's avatar Yukihiro "Matz" Matsumoto

Merge pull request #439 from masamitsu-murase/modify_ci_nregs_in_yield

ci->nregs for ruby proc.
parents a2b62a64 138acc77
...@@ -267,7 +267,12 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr ...@@ -267,7 +267,12 @@ mrb_funcall_with_block(mrb_state *mrb, mrb_value self, mrb_sym mid, int argc, mr
ci->stackidx = mrb->stack - mrb->stbase; ci->stackidx = mrb->stack - mrb->stbase;
ci->argc = argc; ci->argc = argc;
ci->target_class = p->target_class; ci->target_class = p->target_class;
if (MRB_PROC_CFUNC_P(p)) {
ci->nregs = argc + 2; ci->nregs = argc + 2;
}
else {
ci->nregs = p->body.irep->nregs + 2;
}
ci->acc = -1; ci->acc = -1;
mrb->stack = mrb->stack + n; mrb->stack = mrb->stack + n;
...@@ -318,7 +323,12 @@ mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_v ...@@ -318,7 +323,12 @@ mrb_yield_internal(mrb_state *mrb, mrb_value b, int argc, mrb_value *argv, mrb_v
ci->stackidx = mrb->stack - mrb->stbase; ci->stackidx = mrb->stack - mrb->stbase;
ci->argc = argc; ci->argc = argc;
ci->target_class = c; ci->target_class = c;
if (MRB_PROC_CFUNC_P(p)) {
ci->nregs = argc + 2; ci->nregs = argc + 2;
}
else {
ci->nregs = p->body.irep->nregs + 2;
}
ci->acc = -1; ci->acc = -1;
mrb->stack = mrb->stack + n; mrb->stack = mrb->stack + n;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment