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/