keep stack with nlocals instead of nregs; fix #1706

This commit is contained in:
Li Yazhou
2014-02-14 11:16:56 +08:00
parent ba8a8e75c7
commit 9ebfeac111
+3 -5
View File
@@ -251,8 +251,7 @@ main(int argc, char **argv)
int n;
mrb_bool code_block_open = FALSE;
int ai;
mrb_bool first_command = TRUE;
unsigned int nregs;
unsigned int stack_keep = 0;
/* new interpreter instance */
mrb = mrb_open();
@@ -365,12 +364,12 @@ main(int argc, char **argv)
mrb_codedump_all(mrb, proc);
}
/* pass a proc for evaulation */
nregs = first_command ? 0: proc->body.irep->nregs;
/* evaluate the bytecode */
result = mrb_context_run(mrb,
proc,
mrb_top_self(mrb),
nregs);
stack_keep);
stack_keep = proc->body.irep->nlocals;
/* did an exception occur? */
if (mrb->exc) {
p(mrb, mrb_obj_value(mrb->exc), 0);
@@ -390,7 +389,6 @@ main(int argc, char **argv)
}
mrb_parser_free(parser);
cxt->lineno++;
first_command = FALSE;
}
mrbc_context_free(mrb, cxt);
mrb_close(mrb);