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

ruby-changes:20436

From: mame <ko1@a...>
Date: Sun, 10 Jul 2011 12:12:02 +0900 (JST)
Subject: [ruby-changes:20436] mame:r32484 (trunk): * compile.c (when_vals): when a string literal is written on when

mame	2011-07-10 12:11:52 +0900 (Sun, 10 Jul 2011)

  New Revision: 32484

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

  Log:
    * compile.c (when_vals): when a string literal is written on when
      clause, skip string creation to make it faster.  [ruby-dev:44068]
      [Feature #5000]

  Modified files:
    trunk/ChangeLog
    trunk/compile.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 32483)
+++ ChangeLog	(revision 32484)
@@ -1,3 +1,9 @@
+Sun Jul 10 12:08:39 2011  Yusuke Endoh  <mame@t...>
+
+	* compile.c (when_vals): when a string literal is written on when
+	  clause, skip string creation to make it faster.  [ruby-dev:44068]
+	  [Feature #5000]
+
 Sun Jul 10 11:35:29 2011  Yusuke Endoh  <mame@t...>
 
 	* parse.y (reduce_nodes_gen): NODE_RETURN in rescue body must not be
Index: compile.c
===================================================================
--- compile.c	(revision 32483)
+++ compile.c	(revision 32484)
@@ -2362,7 +2362,14 @@
 	    special_literals = Qfalse;
 	}
 
-	COMPILE(cond_seq, "when cond", val);
+	if (nd_type(val) == NODE_STR) {
+	    debugp_param("nd_lit", val->nd_lit);
+	    OBJ_FREEZE(val->nd_lit);
+	    ADD_INSN1(cond_seq, nd_line(val), putobject, val->nd_lit);
+	}
+	else {
+	    COMPILE(cond_seq, "when cond", val);
+	}
 	ADD_INSN1(cond_seq, nd_line(val), topn, INT2FIX(1));
 	ADD_SEND(cond_seq, nd_line(val), ID2SYM(idEqq), INT2FIX(1));
 	ADD_INSNL(cond_seq, nd_line(val), branchif, l1);

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

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