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 | f218f42488c5dfcd75079d74c035e7bbf1a014f9 (patch) | |
tree | 1431a7f4699dee13429ceef20aa1fbd47e549bf2 /compile.c | |
parent | 61d707cb8a6a5c863e54bf1b13328c339e9369b0 (diff) | |
download | ruby-f218f42488c5dfcd75079d74c035e7bbf1a014f9.tar.gz |
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:{ |