From c0bf2c5efec6e5c94236ca24cd35de5869ed7216 Mon Sep 17 00:00:00 2001 From: nobu Date: Fri, 3 Apr 2015 02:43:20 +0000 Subject: vm_core.h: update for OPT_CALL_CFUNC_WITHOUT_FRAME * vm_eval.c (vm_call0_cfunc): update invoker arguments. * vm_insnhelper.c (vm_call_cfunc_latter): ditto. * vm_insnhelper.c (rb_vm_call_cfunc_push_frame): ditto, and prefix with rb_. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@50154 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_insnhelper.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'vm_insnhelper.c') diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 0bede8f8ac..365a8bf773 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -1436,13 +1436,14 @@ vm_call_cfunc_latter(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_ VALUE val; int argc = ci->argc; VALUE *argv = STACK_ADDR_FROM_TOP(argc); + VALUE recv = ci->recv; const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(ci->me); th->passed_ci = ci; reg_cfp->sp -= argc + 1; ci->aux.inc_sp = argc + 1; VM_PROFILE_UP(0); - val = (*cfunc->invoker)(cfunc->func, ci, argv); + val = (*cfunc->invoker)(cfunc->func, recv, argc, argv); /* check */ if (reg_cfp == th->cfp) { /* no frame push */ @@ -1490,7 +1491,7 @@ vm_call_cfunc(rb_thread_t *th, rb_control_frame_t *reg_cfp, rb_call_info_t *ci) } void -vm_call_cfunc_push_frame(rb_thread_t *th) +rb_vm_call_cfunc_push_frame(rb_thread_t *th) { rb_call_info_t *ci = th->passed_ci; const rb_method_entry_t *me = ci->me; @@ -1498,7 +1499,7 @@ vm_call_cfunc_push_frame(rb_thread_t *th) vm_push_frame(th, 0, VM_FRAME_MAGIC_CFUNC, ci->recv, ci->defined_class, VM_ENVVAL_BLOCK_PTR(ci->blockptr), NULL /* cref */, - 0, th->cfp->sp + ci->aux.inc_sp, 1, me); + 0, th->cfp->sp + ci->aux.inc_sp, 1, me, 0); if (ci->call != vm_call_general) { ci->call = vm_call_cfunc_with_frame; -- cgit v1.2.3