avoid unnecessary pool/syms restoration

This commit is contained in:
Yukihiro "Matz" Matsumoto
2013-05-20 22:33:25 +09:00
parent 7320139fd9
commit 58b25fdcb3
2 changed files with 12 additions and 4 deletions
+6 -4
View File
@@ -920,10 +920,12 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
if (mrb->exc) goto L_RAISE;
/* pop stackpos */
ci = mrb->c->ci;
if (!MRB_PROC_CFUNC_P(ci[-1].proc)) {
irep = ci[-1].proc->body.irep;
pool = irep->pool;
syms = irep->syms;
if (!ci->target_class) { /* return from context modifying method (resume/yield) */
if (!MRB_PROC_CFUNC_P(ci[-1].proc)) {
irep = ci[-1].proc->body.irep;
pool = irep->pool;
syms = irep->syms;
}
}
regs = mrb->c->stack = mrb->c->stbase + ci->stackidx;
pc = ci->pc;