Make `rb_ast_dispose` use `RB_OBJ_WRITE`

This fixes the mistake of r60722.
I used `rb_gc_writebarrier_remember` to notify to GC that the references
is changed.  But the function just adds the object to the remember set
blindly.  Ko1 told me that `RB_OBJ_WRITE` is suitable in this case.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
mame 2017-11-10 13:46:38 +00:00
Родитель 4d60654690
Коммит 139eb4e862
1 изменённых файлов: 5 добавлений и 5 удалений

10
node.c
Просмотреть файл

@ -1147,17 +1147,17 @@ rb_ast_mark(rb_ast_t *ast)
void
rb_ast_free(rb_ast_t *ast)
{
if (ast->node_buffer) rb_node_buffer_free(ast->node_buffer);
ast->node_buffer = 0;
ast->root = 0;
ast->mark_ary = 0;
if (ast->node_buffer) {
rb_node_buffer_free(ast->node_buffer);
ast->node_buffer = 0;
}
}
void
rb_ast_dispose(rb_ast_t *ast)
{
rb_ast_free(ast);
rb_gc_writebarrier_remember((VALUE)ast);
RB_OBJ_WRITE(ast, &ast->mark_ary, Qnil);
}
void