mirror of
https://github.com/ruby/ruby.git
synced 2026-01-27 04:24:23 +00:00
[ruby/mmtk] Check RUBY_FL_FINALIZE on new location of object if moved
https://github.com/ruby/mmtk/commit/a31deee342
This commit is contained in:
parent
4111c5465f
commit
b7e9e66b59
@ -348,11 +348,8 @@ rb_mmtk_vm_live_bytes(void)
|
||||
static void
|
||||
make_final_job(struct objspace *objspace, VALUE obj, VALUE table)
|
||||
{
|
||||
MMTK_ASSERT(RB_FL_TEST(obj, RUBY_FL_FINALIZE));
|
||||
MMTK_ASSERT(RB_BUILTIN_TYPE(table) == T_ARRAY);
|
||||
|
||||
RB_FL_UNSET(obj, RUBY_FL_FINALIZE);
|
||||
|
||||
struct MMTk_final_job *job = xmalloc(sizeof(struct MMTk_final_job));
|
||||
job->next = objspace->finalizer_jobs;
|
||||
job->kind = MMTK_FINAL_JOB_FINALIZE;
|
||||
@ -364,7 +361,6 @@ make_final_job(struct objspace *objspace, VALUE obj, VALUE table)
|
||||
static int
|
||||
rb_mmtk_update_finalizer_table_i(st_data_t key, st_data_t value, st_data_t data, int error)
|
||||
{
|
||||
MMTK_ASSERT(RB_FL_TEST(key, RUBY_FL_FINALIZE));
|
||||
MMTK_ASSERT(mmtk_is_reachable((MMTk_ObjectReference)value));
|
||||
MMTK_ASSERT(RB_BUILTIN_TYPE(value) == T_ARRAY);
|
||||
|
||||
@ -373,6 +369,8 @@ rb_mmtk_update_finalizer_table_i(st_data_t key, st_data_t value, st_data_t data,
|
||||
if (mmtk_is_reachable((MMTk_ObjectReference)key)) {
|
||||
VALUE new_key_location = rb_mmtk_call_object_closure((VALUE)key, false);
|
||||
|
||||
MMTK_ASSERT(RB_FL_TEST(new_key_location, RUBY_FL_FINALIZE));
|
||||
|
||||
if (new_key_location != key) {
|
||||
return ST_REPLACE;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user