From 2138f24c7017298c9fffa6d3de7a53cb55b567b4 Mon Sep 17 00:00:00 2001 From: mame Date: Fri, 10 Aug 2018 07:45:16 +0000 Subject: insns.def (invokesuper): remove a dummy receiever flag hack for ZSUPER This is just a refactoring. The receiver of "invokesuper" was a boolean to represent if it is ZSUPER or not. This was used in vm_search_super_method to prohibit ZSUPER call in define_method. (It is currently prohibited because of the limitation of the implementation.) This change removes the hack by introducing an explicit flag, VM_CALL_SUPER, to signal the information. Now, the implementation of "invokesuper" is consistent with "send" instruction. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64268 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- insns.def | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'insns.def') diff --git a/insns.def b/insns.def index 75f522cd9b..1903da2068 100644 --- a/insns.def +++ b/insns.def @@ -716,7 +716,8 @@ send struct rb_calling_info calling; vm_caller_setup_arg_block(ec, reg_cfp, &calling, ci, blockiseq, FALSE); - vm_search_method(ci, cc, calling.recv = TOPN(calling.argc = ci->orig_argc)); + calling.recv = TOPN(calling.argc = ci->orig_argc); + vm_search_method(ci, cc, calling.recv); CALL_METHOD(&calling, ci, cc); } @@ -783,10 +784,9 @@ invokesuper // attr rb_snum_t sp_inc = - (int)(ci->orig_argc + ((ci->flag & VM_CALL_ARGS_BLOCKARG) ? 1 : 0)); { struct rb_calling_info calling; - calling.argc = ci->orig_argc; vm_caller_setup_arg_block(ec, reg_cfp, &calling, ci, blockiseq, TRUE); - calling.recv = GET_SELF(); + calling.recv = TOPN(calling.argc = ci->orig_argc); vm_search_super_method(ec, GET_CFP(), &calling, ci, cc); CALL_METHOD(&calling, ci, cc); } -- cgit v1.2.3