diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-20 10:01:05 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2009-07-20 10:01:05 +0000 |
commit | 5a392c71dbf5cdc5af261acd3c56eac39e217988 (patch) | |
tree | 669c874771eb57da68840d114b456ce247a81067 /compile.c | |
parent | abc20ed0f4b0067ad912f345245161426d331ed8 (diff) | |
download | ruby-5a392c71dbf5cdc5af261acd3c56eac39e217988.tar.gz |
* compile.c (compile_dstr_fragments): reduced needless literal.
* parse.y (xstring, regexp, dsym, literal_concat, evstr2dstr):
literal at the top of dstr is no longer needed if it is empty,
since concatstrings and toregexp always create new strings.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@24212 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -2143,11 +2143,14 @@ compile_dstr_fragments(rb_iseq_t *iseq, LINK_ANCHOR *ret, NODE * node, int *cntp { NODE *list = node->nd_next; VALUE lit = node->nd_lit; - int cnt = 1; + int cnt = 0; debugp_param("nd_lit", lit); - hide_obj(lit); - ADD_INSN1(ret, nd_line(node), putobject, lit); + if (!NIL_P(lit)) { + hide_obj(lit); + cnt++; + ADD_INSN1(ret, nd_line(node), putobject, lit); + } while (list) { COMPILE(ret, "each string", list->nd_head); |