summaryrefslogtreecommitdiff
path: root/template
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-27 16:44:57 (GMT)
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-10-27 16:44:57 (GMT)
commite35fe8d11b889a5646a23df06bbecf16f88c518a (patch)
treed4346b34db86ab7c09ccb2db3f0e2803664e9421 /template
parent15270f48a9f3ccd7e57798d7eff4dd8d5d83c259 (diff)
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.tmpl10
1 files changed, 7 insertions, 3 deletions
diff --git a/template/prelude.c.tmpl b/template/prelude.c.tmpl
index 873146f..b791c14 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