aboutsummaryrefslogtreecommitdiffstats
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c76
1 files changed, 38 insertions, 38 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c
index 1d5c3a5d86..856178d5d0 100644
--- a/vm_insnhelper.c
+++ b/vm_insnhelper.c
@@ -2250,44 +2250,44 @@ vm_call_method_each_type(rb_thread_t *th, rb_control_frame_t *cfp, struct rb_cal
return vm_call_zsuper(th, cfp, calling, ci, cc, RCLASS_ORIGIN(cc->me->owner));
case VM_METHOD_TYPE_REFINED: {
- const rb_cref_t *cref = rb_vm_get_cref(cfp->ep);
- VALUE refinements = cref ? CREF_REFINEMENTS(cref) : Qnil;
- VALUE refinement;
- const rb_callable_method_entry_t *ref_me;
-
- refinement = find_refinement(refinements, cc->me->owner);
-
- if (NIL_P(refinement)) {
- goto no_refinement_dispatch;
- }
- ref_me = rb_callable_method_entry(refinement, ci->mid);
-
- if (ref_me) {
- if (cc->call == vm_call_super_method) {
- const rb_control_frame_t *top_cfp = current_method_entry(th, cfp);
- const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
- if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
- goto no_refinement_dispatch;
- }
- }
- cc->me = ref_me;
- if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
- return vm_call_method(th, cfp, calling, ci, cc);
- }
- }
- else {
- cc->me = NULL;
- return vm_call_method_nome(th, cfp, calling, ci, cc);
- }
-
- no_refinement_dispatch:
- if (cc->me->def->body.refined.orig_me) {
- cc->me = refined_method_callable_without_refinement(cc->me);
- return vm_call_method(th, cfp, calling, ci, cc);
- }
- else {
- return vm_call_zsuper(th, cfp, calling, ci, cc, cc->me->owner);
- }
+ const rb_cref_t *cref = rb_vm_get_cref(cfp->ep);
+ VALUE refinements = cref ? CREF_REFINEMENTS(cref) : Qnil;
+ VALUE refinement;
+ const rb_callable_method_entry_t *ref_me;
+
+ refinement = find_refinement(refinements, cc->me->owner);
+
+ if (NIL_P(refinement)) {
+ goto no_refinement_dispatch;
+ }
+ ref_me = rb_callable_method_entry(refinement, ci->mid);
+
+ if (ref_me) {
+ if (cc->call == vm_call_super_method) {
+ const rb_control_frame_t *top_cfp = current_method_entry(th, cfp);
+ const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
+ if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
+ goto no_refinement_dispatch;
+ }
+ }
+ cc->me = ref_me;
+ if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
+ return vm_call_method(th, cfp, calling, ci, cc);
+ }
+ }
+ else {
+ cc->me = NULL;
+ return vm_call_method_nome(th, cfp, calling, ci, cc);
+ }
+
+ no_refinement_dispatch:
+ if (cc->me->def->body.refined.orig_me) {
+ cc->me = refined_method_callable_without_refinement(cc->me);
+ return vm_call_method(th, cfp, calling, ci, cc);
+ }
+ else {
+ return vm_call_zsuper(th, cfp, calling, ci, cc, cc->me->owner);
+ }
}
}