diff options
| author | dearblue <[email protected]> | 2021-01-10 10:20:01 +0900 |
|---|---|---|
| committer | dearblue <[email protected]> | 2021-01-10 13:23:28 +0900 |
| commit | 58e94427377952b0953bcdf2d544c62b0fefd4a6 (patch) | |
| tree | ca0092df0d3e983166b0753a463663b583a6d414 /src/gc.c | |
| parent | b210cfa34ea9e0d288d35b3c9b78c98d33f25dae (diff) | |
| download | mruby-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 'src/gc.c')
| -rw-r--r-- | src/gc.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -660,9 +660,8 @@ mark_context(mrb_state *mrb, struct mrb_context *c) /* mark call stack */ if (c->cibase) { for (ci = c->cibase; ci <= c->ci; ci++) { - mrb_gc_mark(mrb, (struct RBasic*)ci->env); mrb_gc_mark(mrb, (struct RBasic*)ci->proc); - mrb_gc_mark(mrb, (struct RBasic*)ci->target_class); + mrb_gc_mark(mrb, (struct RBasic*)ci->u.target_class); } } /* mark fibers */ @@ -840,7 +839,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end) mrb_callinfo *ce = c->cibase; while (ce <= ci) { - struct REnv *e = ci->env; + struct REnv *e = ci->u.env; if (e && !mrb_object_dead_p(mrb, (struct RBasic*)e) && e->tt == MRB_TT_ENV && MRB_ENV_ONSTACK_P(e)) { mrb_env_unshare(mrb, e); |
