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:
parent
4d60654690
commit
139eb4e862
8
node.c
8
node.c
@ -1147,17 +1147,17 @@ rb_ast_mark(rb_ast_t *ast)
|
|||||||
void
|
void
|
||||||
rb_ast_free(rb_ast_t *ast)
|
rb_ast_free(rb_ast_t *ast)
|
||||||
{
|
{
|
||||||
if (ast->node_buffer) rb_node_buffer_free(ast->node_buffer);
|
if (ast->node_buffer) {
|
||||||
|
rb_node_buffer_free(ast->node_buffer);
|
||||||
ast->node_buffer = 0;
|
ast->node_buffer = 0;
|
||||||
ast->root = 0;
|
}
|
||||||
ast->mark_ary = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
rb_ast_dispose(rb_ast_t *ast)
|
rb_ast_dispose(rb_ast_t *ast)
|
||||||
{
|
{
|
||||||
rb_ast_free(ast);
|
rb_ast_free(ast);
|
||||||
rb_gc_writebarrier_remember((VALUE)ast);
|
RB_OBJ_WRITE(ast, &ast->mark_ary, Qnil);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
x
Reference in New Issue
Block a user