diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-01-12 18:38:42 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2021-01-12 18:38:42 +0900 |
| commit | bec4d30dc6620c4102ce7acc08a4cb1c735a6ad5 (patch) | |
| tree | 9b7912d7b859c3cb2ee026a48582934c7af5cd2c /src/proc.c | |
| parent | e13f34e30866add2ec1829ec1819366844701c34 (diff) | |
| parent | 9877f4ca3c10e21b9d525256fe8cebc4ea404727 (diff) | |
| download | mruby-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.c | 12 |
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; |
