summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-eval
diff options
context:
space:
mode:
authordearblue <[email protected]>2021-01-10 10:20:01 +0900
committerdearblue <[email protected]>2021-01-10 13:23:28 +0900
commit58e94427377952b0953bcdf2d544c62b0fefd4a6 (patch)
treeca0092df0d3e983166b0753a463663b583a6d414 /mrbgems/mruby-eval
parentb210cfa34ea9e0d288d35b3c9b78c98d33f25dae (diff)
downloadmruby-58e94427377952b0953bcdf2d544c62b0fefd4a6.tar.gz
mruby-58e94427377952b0953bcdf2d544c62b0fefd4a6.zip
Unified `target_class` and `env` of `mrb_callinfo`
If there is `env`, `env->c` means `target_class`.
Diffstat (limited to 'mrbgems/mruby-eval')
-rw-r--r--mrbgems/mruby-eval/src/eval.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/mrbgems/mruby-eval/src/eval.c b/mrbgems/mruby-eval/src/eval.c
index c7a511fe4..26bc039e1 100644
--- a/mrbgems/mruby-eval/src/eval.c
+++ b/mrbgems/mruby-eval/src/eval.c
@@ -79,19 +79,19 @@ create_proc_from_string(mrb_state *mrb, const char *s, mrb_int len, mrb_value bi
target_class = MRB_PROC_TARGET_CLASS(ci->proc);
}
if (ci->proc && !MRB_PROC_CFUNC_P(ci->proc)) {
- if (ci->env) {
- e = ci->env;
+ if ((e = mrb_vm_ci_env(ci)) != NULL) {
+ /* do nothing, because e is assigned already */
}
else {
e = mrb_env_new(mrb, mrb->c, ci, ci->proc->body.irep->nlocals, ci[1].stackent, target_class);
- ci->env = e;
+ ci->u.env = e;
}
proc->e.env = e;
proc->flags |= MRB_PROC_ENVSET;
mrb_field_write_barrier(mrb, (struct RBasic*)proc, (struct RBasic*)e);
}
proc->upper = ci->proc;
- mrb->c->ci->target_class = target_class;
+ mrb_vm_ci_target_class_set(mrb->c->ci, target_class);
/* mrb_codedump_all(mrb, proc); */
mrb_parser_free(p);
@@ -157,7 +157,7 @@ f_instance_eval(mrb_state *mrb, mrb_value self)
proc = create_proc_from_string(mrb, s, len, mrb_nil_value(), file, line);
MRB_PROC_SET_TARGET_CLASS(proc, mrb_class_ptr(cv));
mrb_assert(!MRB_PROC_CFUNC_P(proc));
- mrb->c->ci->target_class = mrb_class_ptr(cv);
+ mrb_vm_ci_target_class_set(mrb->c->ci, mrb_class_ptr(cv));
return exec_irep(mrb, self, proc);
}
else {