diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-24 06:16:31 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-24 06:16:31 +0000 |
commit | ac3bad418c37195547a09bf6d1e3fc9d5ec99460 (patch) | |
tree | c3110ced5a14785b9b2afd2f03c1cc1a08aa8a8b /node.c | |
parent | f70aa7637b68dc7035c4598f97220ad778693aa2 (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.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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) { |