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

ruby-changes:24997

From: ko1 <ko1@a...>
Date: Fri, 28 Sep 2012 17:59:59 +0900 (JST)
Subject: [ruby-changes:24997] ko1:r37049 (trunk): * vm_insnhelper.c (vm_setup_method): refactoring.

ko1	2012-09-28 17:58:22 +0900 (Fri, 28 Sep 2012)

  New Revision: 37049

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37049

  Log:
    * vm_insnhelper.c (vm_setup_method): refactoring.
      Remove src_argc and use iseq->arg_size directly.

  Modified files:
    trunk/ChangeLog
    trunk/vm_insnhelper.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37048)
+++ ChangeLog	(revision 37049)
@@ -1,3 +1,8 @@
+Fri Sep 28 17:54:31 2012  Koichi Sasada  <ko1@a...>
+
+	* vm_insnhelper.c (vm_setup_method): refactoring.
+	  Remove src_argc and use iseq->arg_size directly.
+
 Fri Sep 28 17:26:27 2012  NARUSE, Yui  <naruse@r...>
 
 	* lib/rubygems/installer.rb (check_that_user_bin_dir_is_in_path):
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c	(revision 37048)
+++ vm_insnhelper.c	(revision 37049)
@@ -496,16 +496,16 @@
 		const rb_method_entry_t *me, VALUE defined_class)
 {
     int opt_pc, i;
-    VALUE *sp, *argv = cfp->sp - argc;
+    VALUE *argv = cfp->sp - argc;
     rb_iseq_t *iseq = me->def->body.iseq;
 
     VM_CALLEE_SETUP_ARG(opt_pc, th, iseq, argc, argv, &blockptr);
 
     /* stack overflow check */
     CHECK_STACK_OVERFLOW(cfp, iseq->stack_max);
-    sp = argv + iseq->arg_size;
 
     if (LIKELY(!(flag & VM_CALL_TAILCALL_BIT))) {
+	VALUE *sp = argv + iseq->arg_size;
 
 	/* clear local variables */
 	for (i = 0; i < iseq->local_size - iseq->arg_size; i++) {
@@ -520,19 +520,18 @@
     }
     else {
 	VALUE *src_argv = argv;
-	VALUE *sp_orig;
-	const int src_argc = iseq->arg_size;
+	VALUE *sp_orig, *sp;
 	VALUE finish_flag = VM_FRAME_TYPE_FINISH_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
+
 	cfp = th->cfp = RUBY_VM_PREVIOUS_CONTROL_FRAME(th->cfp); /* pop cf */
+	sp_orig = sp = cfp->sp;
 
-	sp = sp_orig = cfp->sp;
-
 	/* push self */
 	sp[0] = recv;
 	sp++;
 
 	/* copy arguments */
-	for (i=0; i < src_argc; i++) {
+	for (i=0; i < iseq->arg_size; i++) {
 	    *sp++ = src_argv[i];
 	}
 

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

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