summaryrefslogtreecommitdiff
path: root/vm_insnhelper.c
diff options
context:
space:
mode:
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r--vm_insnhelper.c7
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);