summaryrefslogtreecommitdiff
path: root/compile.c
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-04 12:47:22 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-04 12:47:22 +0000
commit0947c2ba63d6f0da53a181edb98c0cde77142670 (patch)
treecd6912441ff0f62bb1a5dcface427b83c68a4d3e /compile.c
parent3ec5c75594720a0b4ddb515a301c1fbc29539541 (diff)
node.h: add NODE_ONCE instead of reuse of NODE_SCOPE
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61597 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'compile.c')
-rw-r--r--compile.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/compile.c b/compile.c
index 9f79a727b5..b876d9ab98 100644
--- a/compile.c
+++ b/compile.c
@@ -6619,10 +6619,12 @@ iseq_compile_each0(rb_iseq_t *iseq, LINK_ANCHOR *const ret, const NODE *node, in
}
break;
}
- case NODE_SCOPE:{
+ case NODE_ONCE:{
int ic_index = iseq->body->is_size++;
- const rb_iseq_t *block_iseq = NEW_CHILD_ISEQ(node, make_name_for_block(iseq),
- ISEQ_TYPE_ONCE_GUARD, line);
+ NODE tmp_node;
+ const rb_iseq_t *block_iseq;
+ rb_node_init(&tmp_node, NODE_SCOPE, 0, (VALUE)node->nd_body, 0);
+ block_iseq = NEW_CHILD_ISEQ(&tmp_node, make_name_for_block(iseq), ISEQ_TYPE_ONCE_GUARD, line);
ADD_INSN2(ret, line, once, block_iseq, INT2FIX(ic_index));