summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-08-12 11:42:27 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-08-12 11:42:27 +0900
commit43f9901ec2fc94287f918dc720084af6f5483e14 (patch)
tree0023cc7c88f5d179401e2011dbf9d0660410f3e7 /src/vm.c
parent80893811c0e56d7cc61b100d546a44ceab2e43a4 (diff)
downloadmruby-43f9901ec2fc94287f918dc720084af6f5483e14.tar.gz
mruby-43f9901ec2fc94287f918dc720084af6f5483e14.zip
Revert "Drop unnecessary upper procs linked from class/module/def syntax"
Fix #5528 This reverts commit 59201b59046b9e73c309508350cd3c0fafd20e4d; #5497
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c15
1 files changed, 0 insertions, 15 deletions
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);