mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
gc.c (obj_free): need not to unshare env object when freeing fibers
Since when env objects reference the context, we no longer need to unshare (stack reallocate) env objects. Currently all env objects referenced from fibers are already recycled, so we removed unnecessary code altogether.
This commit is contained in:
@@ -791,20 +791,7 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
|
||||
{
|
||||
struct mrb_context *c = ((struct RFiber*)obj)->cxt;
|
||||
|
||||
if (c && c != mrb->root_c) {
|
||||
if (!end && c->status != MRB_FIBER_TERMINATED) {
|
||||
mrb_callinfo *ci = c->ci;
|
||||
mrb_callinfo *ce = c->cibase;
|
||||
|
||||
while (ce <= ci) {
|
||||
struct REnv *e = ci->u.env;
|
||||
if (e && !is_dead(&mrb->gc, (struct RBasic*)e) &&
|
||||
e->tt == MRB_TT_ENV && MRB_ENV_ONSTACK_P(e)) {
|
||||
mrb_env_unshare(mrb, e, TRUE);
|
||||
}
|
||||
ci--;
|
||||
}
|
||||
}
|
||||
if (c != mrb->root_c) {
|
||||
mrb_free_context(mrb, c);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user