diff options
author | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-27 16:44:57 +0000 |
---|---|---|
committer | mame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-27 16:44:57 +0000 |
commit | 6dd10a11da3fcfecf0e41bafa3c05ff76f1769e4 (patch) | |
tree | d4346b34db86ab7c09ccb2db3f0e2803664e9421 /template | |
parent | 6743ba2093da68d47929b16d0c6cf15bfdf285ad (diff) | |
download | ruby-6dd10a11da3fcfecf0e41bafa3c05ff76f1769e4.tar.gz |
Revert "Revert "Manage AST NODEs out of GC""
This re-introduces r60485.
This reverts commit 5a176b75b1187cbd3861c387bde65ff66396a07c.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60488 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'template')
-rw-r--r-- | template/prelude.c.tmpl | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/template/prelude.c.tmpl b/template/prelude.c.tmpl index 873146fc39..b791c14ae4 100644 --- a/template/prelude.c.tmpl +++ b/template/prelude.c.tmpl @@ -121,10 +121,14 @@ prelude_eval(VALUE code, VALUE name, int line) FALSE, /* int debug_frozen_string_literal; */ }; - NODE *node = rb_parser_compile_string_path(rb_parser_new(), name, code, line); - if (!node) rb_exc_raise(rb_errinfo()); - rb_iseq_eval(rb_iseq_new_with_opt(node, name, name, Qnil, INT2FIX(line), + ast_t *ast = rb_parser_compile_string_path(rb_parser_new(), name, code, line); + if (!ast->root) { + rb_ast_dispose(ast); + rb_exc_raise(rb_errinfo()); + } + rb_iseq_eval(rb_iseq_new_with_opt(ast->root, name, name, Qnil, INT2FIX(line), NULL, ISEQ_TYPE_TOP, &optimization)); + rb_ast_dispose(ast); } % end |