Skip to content

Commit b7e9e66

Browse files
peterzhu2118matzbot
authored andcommitted
[ruby/mmtk] Check RUBY_FL_FINALIZE on new location of object if moved
ruby/mmtk@a31deee342
1 parent 4111c54 commit b7e9e66

File tree

1 file changed

+2
-4
lines changed

1 file changed

+2
-4
lines changed

gc/mmtk/mmtk.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,11 +348,8 @@ rb_mmtk_vm_live_bytes(void)
348348
static void
349349
make_final_job(struct objspace *objspace, VALUE obj, VALUE table)
350350
{
351-
MMTK_ASSERT(RB_FL_TEST(obj, RUBY_FL_FINALIZE));
352351
MMTK_ASSERT(RB_BUILTIN_TYPE(table) == T_ARRAY);
353352

354-
RB_FL_UNSET(obj, RUBY_FL_FINALIZE);
355-
356353
struct MMTk_final_job *job = xmalloc(sizeof(struct MMTk_final_job));
357354
job->next = objspace->finalizer_jobs;
358355
job->kind = MMTK_FINAL_JOB_FINALIZE;
@@ -364,7 +361,6 @@ make_final_job(struct objspace *objspace, VALUE obj, VALUE table)
364361
static int
365362
rb_mmtk_update_finalizer_table_i(st_data_t key, st_data_t value, st_data_t data, int error)
366363
{
367-
MMTK_ASSERT(RB_FL_TEST(key, RUBY_FL_FINALIZE));
368364
MMTK_ASSERT(mmtk_is_reachable((MMTk_ObjectReference)value));
369365
MMTK_ASSERT(RB_BUILTIN_TYPE(value) == T_ARRAY);
370366

@@ -373,6 +369,8 @@ rb_mmtk_update_finalizer_table_i(st_data_t key, st_data_t value, st_data_t data,
373369
if (mmtk_is_reachable((MMTk_ObjectReference)key)) {
374370
VALUE new_key_location = rb_mmtk_call_object_closure((VALUE)key, false);
375371

372+
MMTK_ASSERT(RB_FL_TEST(new_key_location, RUBY_FL_FINALIZE));
373+
376374
if (new_key_location != key) {
377375
return ST_REPLACE;
378376
}

0 commit comments

Comments
 (0)