[前][次][番号順一覧][スレッド一覧]

ruby-changes:49565

From: nobu <ko1@a...>
Date: Mon, 8 Jan 2018 18:11:32 +0900 (JST)
Subject: [ruby-changes:49565] nobu:r61681 (trunk): vm_insnhelper.c: vm_invoke_block_opt_call

nobu	2018-01-08 18:11:26 +0900 (Mon, 08 Jan 2018)

  New Revision: 61681

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61681

  Log:
    vm_insnhelper.c: vm_invoke_block_opt_call
    
    * vm_insnhelper.c (vm_invoke_block_opt_call): renamed with sliding
      arguments.

  Modified files:
    trunk/vm_insnhelper.c
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c	(revision 61680)
+++ vm_insnhelper.c	(revision 61681)
@@ -2050,13 +2050,19 @@ vm_call_opt_send(rb_execution_context_t https://github.com/ruby/ruby/blob/trunk/vm_insnhelper.c#L2050
 static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler);
 
 NOINLINE(static VALUE
-	 vm_invoke_block_noinline(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
+	 vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
 				  struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler));
 
 static VALUE
-vm_invoke_block_noinline(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
-				      struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
+vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
+			 struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
 {
+    int argc = calling->argc;
+
+    /* remove self */
+    if (argc > 0) MEMMOVE(&TOPN(argc), &TOPN(argc-1), VALUE, argc);
+    DEC_SP(1);
+
     return vm_invoke_block(ec, reg_cfp, calling, ci, block_handler);
 }
 
@@ -2064,25 +2070,16 @@ static VALUE https://github.com/ruby/ruby/blob/trunk/vm_insnhelper.c#L2070
 vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
 {
     VALUE procval = calling->recv;
-    int argc = calling->argc;
-
-    /* remove self */
-    if (argc > 0) MEMMOVE(&TOPN(argc), &TOPN(argc-1), VALUE, argc);
-    DEC_SP(1);
-
-    return vm_invoke_block_noinline(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
+    return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
 }
 
 static VALUE
 vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, struct rb_call_cache *cc)
 {
-    int argc = calling->argc;
     VALUE block_handler = VM_ENV_BLOCK_HANDLER(reg_cfp->ep);
 
     if (BASIC_OP_UNREDEFINED_P(BOP_CALL, PROC_REDEFINED_OP_FLAG)) {
-	if (argc > 0) MEMMOVE(&TOPN(argc), &TOPN(argc-1), VALUE, argc);
-	DEC_SP(1);
-	return vm_invoke_block_noinline(ec, reg_cfp, calling, ci, block_handler);
+	return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
     }
     else {
 	calling->recv = rb_vm_bh_to_procval(ec, block_handler);

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]