From 43f9901ec2fc94287f918dc720084af6f5483e14 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Thu, 12 Aug 2021 11:42:27 +0900 Subject: Revert "Drop unnecessary upper procs linked from class/module/def syntax" Fix #5528 This reverts commit 59201b59046b9e73c309508350cd3c0fafd20e4d; #5497 --- src/vm.c | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'src') diff --git a/src/vm.c b/src/vm.c index a584f6b13..57531797c 100644 --- a/src/vm.c +++ b/src/vm.c @@ -1066,19 +1066,6 @@ get_send_args(mrb_state *mrb, mrb_int argc, mrb_value *regs) return mrb_ary_new_from_values(mrb, argc, regs); } -static void -proc_adjust_upper(struct RProc *p) -{ - /* skip upper procs while unnamed blocks and method closures */ - while (p->upper) { - if (MRB_FLAG_TEST(p->upper, MRB_PROC_SCOPE) && - !MRB_FLAG_TEST(p->upper, MRB_PROC_STRICT)) { - break; - } - p->upper = p->upper->upper; - } -} - mrb_value mrb_obj_missing(mrb_state *mrb, mrb_value mod); void mrb_hash_check_kdict(mrb_state *mrb, mrb_value self); void mrb_method_added(mrb_state *mrb, struct RClass *c, mrb_sym mid); @@ -2717,7 +2704,6 @@ RETRY_TRY_BLOCK: p->flags |= MRB_PROC_SCOPE; } if (c & OP_L_STRICT) p->flags |= MRB_PROC_STRICT; - if (c == OP_L_METHOD) proc_adjust_upper(p); regs[a] = mrb_obj_value(p); mrb_gc_arena_restore(mrb, ai); NEXT; @@ -2797,7 +2783,6 @@ RETRY_TRY_BLOCK: mrb_field_write_barrier(mrb, (struct RBasic*)p, (struct RBasic*)proc); MRB_PROC_SET_TARGET_CLASS(p, mrb_class_ptr(recv)); p->flags |= MRB_PROC_SCOPE; - proc_adjust_upper(p); /* prepare call stack */ cipush(mrb, a, a, mrb_class_ptr(recv), p, 0, 0); -- cgit v1.2.3