summaryrefslogtreecommitdiff
path: root/node.c
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-24 06:16:31 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-24 06:16:31 +0000
commitac3bad418c37195547a09bf6d1e3fc9d5ec99460 (patch)
treec3110ced5a14785b9b2afd2f03c1cc1a08aa8a8b /node.c
parentf70aa7637b68dc7035c4598f97220ad778693aa2 (diff)
Remove dynamic NODE allocation out of parser
A temporary NODE object was allocated to create iseq. Instead, this patch allocates a dummy NODE as auto variable, and discard it soon. This change is intended as a preparation to manage AST NODEs out of GC. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60390 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'node.c')
-rw-r--r--node.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/node.c b/node.c
index 4070bec825..d0288beead 100644
--- a/node.c
+++ b/node.c
@@ -1062,6 +1062,18 @@ rb_gc_free_node(VALUE obj)
}
}
+void
+rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
+{
+ VALUE klass = 0;
+ n->flags = T_NODE;
+ RBASIC_SET_CLASS_RAW((VALUE)n, klass);
+ n->u1.value = a0;
+ n->u2.value = a1;
+ n->u3.value = a2;
+ nd_set_type(n, type);
+}
+
size_t
rb_node_memsize(VALUE obj)
{