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 | e35fe8d11b889a5646a23df06bbecf16f88c518a (patch) | |
tree | d4346b34db86ab7c09ccb2db3f0e2803664e9421 /gc.c | |
parent | 15270f48a9f3ccd7e57798d7eff4dd8d5d83c259 (diff) | |
download | ruby-e35fe8d11b889a5646a23df06bbecf16f88c518a.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 'gc.c')
-rw-r--r-- | gc.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -434,6 +434,7 @@ typedef struct RVALUE { const rb_iseq_t iseq; rb_env_t env; struct rb_imemo_alloc_struct alloc; + ast_t ast; } imemo; struct { struct RBasic basic; @@ -2359,6 +2360,9 @@ obj_free(rb_objspace_t *objspace, VALUE obj) case imemo_alloc: xfree(RANY(obj)->as.imemo.alloc.ptr); break; + case imemo_ast: + rb_ast_free(&RANY(obj)->as.imemo.ast); + break; default: break; } @@ -4540,6 +4544,9 @@ gc_mark_imemo(rb_objspace_t *objspace, VALUE obj) } while ((m = m->next) != NULL); } return; + case imemo_ast: + rb_ast_mark(&RANY(obj)->as.imemo.ast); + return; #if VM_CHECK_MODE > 0 default: VM_UNREACHABLE(gc_mark_imemo); |