diff --git a/src/vm.c b/src/vm.c index 97c14e7aa4..ce77f5b056 100644 --- a/src/vm.c +++ b/src/vm.c @@ -847,14 +847,15 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) mrb->arena_idx = ai; if (mrb->exc) goto L_RAISE; /* pop stackpos */ - regs = mrb->stack = mrb->stbase + mrb->ci->stackidx; - regs[mrb->ci->acc] = recv; + ci = mrb->ci; + regs = mrb->stack = mrb->stbase + ci->stackidx; + regs[ci->acc] = recv; + pc = ci->pc; cipop(mrb); irep = mrb->ci->proc->body.irep; pool = irep->pool; syms = irep->syms; - pc = mrb->ci->pc; - NEXT; + JUMP; } else { /* setup environment for calling method */