diff options
Diffstat (limited to 'insns.def')
-rw-r--r-- | insns.def | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -1045,7 +1045,12 @@ invokesuper while (ip && !ip->klass) { ip = ip->parent_iseq; } - me = rb_method_entry_get_with_omod(Qnil, klass, id, &klass); + me = rb_method_entry(klass, id, &klass); + if (me && me->def->type == VM_METHOD_TYPE_ISEQ && + me->def->body.iseq == ip) { + klass = RCLASS_SUPER(klass); + me = rb_method_entry_get_with_omod(Qnil, klass, id, &klass); + } CALL_METHOD(num, blockptr, flag, id, me, recv, klass); } |