diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-12 05:52:42 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-03-12 05:52:42 +0000 |
commit | c0764a3cd89ec5c81d2f0163228b3ab2b3fb708a (patch) | |
tree | 1431a7f4699dee13429ceef20aa1fbd47e549bf2 /compile.c | |
parent | ae46708c1014c7b6cd66a86e3b501b34112e08eb (diff) |
compile.c: omit newhash
* compile.c (iseq_compile_each): omit creating literal-only hash
to be popped immediately.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57892 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r-- | compile.c | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -5521,11 +5521,12 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int popp INIT_ANCHOR(list); switch (type) { case NODE_ARRAY: - compile_array(iseq, list, node->nd_head, COMPILE_ARRAY_TYPE_HASH); + compile_array_(iseq, list, node->nd_head, COMPILE_ARRAY_TYPE_HASH, NULL, popped); ADD_SEQ(ret, list); break; case NODE_ZARRAY: + if (popped) break; ADD_INSN1(ret, line, newhash, INT2FIX(0)); break; @@ -5533,10 +5534,6 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, NODE *node, int popp compile_bug(ERROR_ARGS_AT(node->nd_head) "can't make hash with this node: %s", ruby_node_name(type)); } - - if (popped) { - ADD_INSN(ret, line, pop); - } break; } case NODE_RETURN:{ |