summaryrefslogtreecommitdiffhomepage
path: root/src/proc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-01-12 18:38:42 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-01-12 18:38:42 +0900
commitbec4d30dc6620c4102ce7acc08a4cb1c735a6ad5 (patch)
tree9b7912d7b859c3cb2ee026a48582934c7af5cd2c /src/proc.c
parente13f34e30866add2ec1829ec1819366844701c34 (diff)
parent9877f4ca3c10e21b9d525256fe8cebc4ea404727 (diff)
downloadmruby-bec4d30dc6620c4102ce7acc08a4cb1c735a6ad5.tar.gz
mruby-bec4d30dc6620c4102ce7acc08a4cb1c735a6ad5.zip
Merge branch 'reorganize-ci' of https://github.com/dearblue/mruby into dearblue-reorganize-ci
Diffstat (limited to 'src/proc.c')
-rw-r--r--src/proc.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/proc.c b/src/proc.c
index 68ca941c3..72d7ad120 100644
--- a/src/proc.c
+++ b/src/proc.c
@@ -46,7 +46,7 @@ mrb_proc_new(mrb_state *mrb, const mrb_irep *irep)
tc = MRB_PROC_TARGET_CLASS(ci->proc);
}
if (tc == NULL) {
- tc = ci->target_class;
+ tc = mrb_vm_ci_target_class(ci);
}
p->upper = ci->proc;
p->e.target_class = tc;
@@ -85,14 +85,14 @@ closure_setup(mrb_state *mrb, struct RProc *p)
const struct RProc *up = p->upper;
struct REnv *e = NULL;
- if (ci && ci->env) {
- e = ci->env;
+ if (ci && (e = mrb_vm_ci_env(ci)) != NULL) {
+ /* do nothing, because e is assigned already */
}
else if (up) {
struct RClass *tc = MRB_PROC_TARGET_CLASS(p);
- e = mrb_env_new(mrb, mrb->c, ci, up->body.irep->nlocals, mrb->c->stack, tc);
- ci->env = e;
+ e = mrb_env_new(mrb, mrb->c, ci, up->body.irep->nlocals, ci->stack, tc);
+ ci->u.env = e;
if (MRB_PROC_ENV_P(up) && MRB_PROC_ENV(up)->cxt == NULL) {
e->mid = MRB_PROC_ENV(up)->mid;
}
@@ -213,7 +213,7 @@ mrb_proc_s_new(mrb_state *mrb, mrb_value proc_class)
proc = mrb_obj_value(p);
mrb_funcall_with_block(mrb, proc, MRB_SYM(initialize), 0, NULL, proc);
if (!MRB_PROC_STRICT_P(p) &&
- mrb->c->ci > mrb->c->cibase && MRB_PROC_ENV(p) == mrb->c->ci[-1].env) {
+ mrb->c->ci > mrb->c->cibase && MRB_PROC_ENV(p) == mrb->c->ci[-1].u.env) {
p->flags |= MRB_PROC_ORPHAN;
}
return proc;