@@ -348,11 +348,7 @@ rb_mmtk_vm_live_bytes(void)
348348static void
349349make_final_job (struct objspace * objspace , VALUE obj , VALUE table )
350350{
351- RUBY_ASSERT (RB_FL_TEST (obj , RUBY_FL_FINALIZE ));
352- RUBY_ASSERT (mmtk_is_reachable ((MMTk_ObjectReference )table ));
353- RUBY_ASSERT (RB_BUILTIN_TYPE (table ) == T_ARRAY );
354-
355- RB_FL_UNSET (obj , RUBY_FL_FINALIZE );
351+ MMTK_ASSERT (RB_BUILTIN_TYPE (table ) == T_ARRAY );
356352
357353 struct MMTk_final_job * job = xmalloc (sizeof (struct MMTk_final_job ));
358354 job -> next = objspace -> finalizer_jobs ;
@@ -365,15 +361,16 @@ make_final_job(struct objspace *objspace, VALUE obj, VALUE table)
365361static int
366362rb_mmtk_update_finalizer_table_i (st_data_t key , st_data_t value , st_data_t data , int error )
367363{
368- RUBY_ASSERT (RB_FL_TEST (key , RUBY_FL_FINALIZE ));
369- RUBY_ASSERT (mmtk_is_reachable ((MMTk_ObjectReference )value ));
370- RUBY_ASSERT (RB_BUILTIN_TYPE (value ) == T_ARRAY );
364+ MMTK_ASSERT (mmtk_is_reachable ((MMTk_ObjectReference )value ));
365+ MMTK_ASSERT (RB_BUILTIN_TYPE (value ) == T_ARRAY );
371366
372367 struct objspace * objspace = (struct objspace * )data ;
373368
374369 if (mmtk_is_reachable ((MMTk_ObjectReference )key )) {
375370 VALUE new_key_location = rb_mmtk_call_object_closure ((VALUE )key , false);
376371
372+ MMTK_ASSERT (RB_FL_TEST (new_key_location , RUBY_FL_FINALIZE ));
373+
377374 if (new_key_location != key ) {
378375 return ST_REPLACE ;
379376 }
@@ -445,7 +442,7 @@ rb_mmtk_update_global_tables_replace_i(VALUE *ptr, void *data)
445442static void
446443rb_mmtk_update_global_tables (int table )
447444{
448- RUBY_ASSERT (table < RB_GC_VM_WEAK_TABLE_COUNT );
445+ MMTK_ASSERT (table < RB_GC_VM_WEAK_TABLE_COUNT );
449446
450447 // TODO: set weak_only to true for non-moving GC
451448 rb_gc_vm_weak_table_foreach (
@@ -606,7 +603,13 @@ rb_gc_impl_ractor_cache_free(void *objspace_ptr, void *cache_ptr)
606603
607604 ccan_list_del (& cache -> list_node );
608605
609- RUBY_ASSERT (objspace -> live_ractor_cache_count > 1 );
606+ if (ruby_free_at_exit_p ()) {
607+ MMTK_ASSERT (objspace -> live_ractor_cache_count > 0 );
608+ }
609+ else {
610+ MMTK_ASSERT (objspace -> live_ractor_cache_count > 1 );
611+ }
612+
610613 objspace -> live_ractor_cache_count -- ;
611614
612615 mmtk_destroy_mutator (cache -> mutator );
@@ -1502,7 +1505,7 @@ rb_gc_impl_object_metadata(void *objspace_ptr, VALUE obj)
15021505 size_t n = 0 ;
15031506
15041507#define SET_ENTRY (na , v ) do { \
1505- RUBY_ASSERT (n <= RB_GC_OBJECT_METADATA_ENTRY_COUNT); \
1508+ MMTK_ASSERT (n <= RB_GC_OBJECT_METADATA_ENTRY_COUNT); \
15061509 object_metadata_entries[n].name = ID_##na; \
15071510 object_metadata_entries[n].val = v; \
15081511 n++; \
0 commit comments