diff options
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r-- | vm_insnhelper.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 9136a4aee4..01f5b9283f 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -1943,9 +1943,8 @@ vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling VALUE val; /* control block frame */ - ec->passed_bmethod_me = cc->me; GetProcPtr(cc->me->def->body.proc, proc); - val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->block_handler); + val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->block_handler, cc->me); return val; } @@ -2517,8 +2516,6 @@ vm_yield_with_cfunc(rb_execution_context_t *ec, int is_lambda = FALSE; /* TODO */ VALUE val, arg, blockarg; const struct vm_ifunc *ifunc = captured->code.ifunc; - const rb_callable_method_entry_t *me = ec->passed_bmethod_me; - ec->passed_bmethod_me = NULL; if (is_lambda) { arg = rb_ary_new4(argc, argv); @@ -2536,7 +2533,7 @@ vm_yield_with_cfunc(rb_execution_context_t *ec, VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME, self, VM_GUARDED_PREV_EP(captured->ep), - (VALUE)me, + Qfalse, 0, ec->cfp->sp, 0, 0); val = (*ifunc->func)(arg, ifunc->data, argc, argv, blockarg); rb_vm_pop_frame(ec); |