Index: vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.cpp =================================================================== --- vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.cpp (revision 590662) +++ vm/gc_gen/src/finalizer_weakref/finalizer_weakref_metadata.cpp (working copy) @@ -297,6 +297,7 @@ { GC *gc = mutator->gc; Finref_Metadata *metadata = gc->finref_metadata; + assert(obj_get_vt_raw(p_obj)); mutator->obj_with_fin = finref_metadata_add_entry(gc, mutator->obj_with_fin, metadata->obj_with_fin_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(p_obj)); } @@ -304,12 +305,14 @@ Vector_Block *gc_add_finalizer(GC *gc, Vector_Block *vector_block_in_use, Partial_Reveal_Object *p_obj) { Finref_Metadata *metadata = gc->finref_metadata; + assert(obj_get_vt_raw(p_obj)); return finref_metadata_add_entry(gc, vector_block_in_use, metadata->obj_with_fin_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(p_obj)); } void gc_add_finalizable_obj(GC *gc, Partial_Reveal_Object *p_obj) { Finref_Metadata *metadata = gc->finref_metadata; + assert(obj_get_vt_raw(p_obj)); metadata->finalizable_obj_set = finref_metadata_add_entry(gc, metadata->finalizable_obj_set, metadata->finalizable_obj_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(p_obj)); } @@ -317,6 +320,7 @@ { GC *gc = collector->gc; Finref_Metadata *metadata = gc->finref_metadata; + assert(obj_get_vt_raw(ref)); collector->softref_set = finref_metadata_add_entry(gc, collector->softref_set, metadata->softref_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(ref)); } @@ -324,6 +328,7 @@ { GC *gc = collector->gc; Finref_Metadata *metadata = gc->finref_metadata; + assert(obj_get_vt_raw(ref)); collector->weakref_set = finref_metadata_add_entry(gc, collector->weakref_set, metadata->weakref_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(ref)); } @@ -331,6 +336,7 @@ { GC *gc = collector->gc; Finref_Metadata *metadata = gc->finref_metadata; + assert(obj_get_vt_raw(ref)); collector->phanref_set = finref_metadata_add_entry(gc, collector->phanref_set, metadata->phanref_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(ref)); } @@ -338,6 +344,7 @@ { assert(*p_ref); assert(read_slot(p_ref)); + assert(obj_get_vt_raw(read_slot(p_ref))); Finref_Metadata *metadata = gc->finref_metadata; metadata->repset = finref_metadata_add_entry(gc, metadata->repset, metadata->repset_pool, (POINTER_SIZE_INT)p_ref); } @@ -346,6 +353,7 @@ Vector_Block *finref_add_fallback_ref(GC *gc, Vector_Block *vector_block_in_use, Partial_Reveal_Object *p_obj) { assert(p_obj); + assert(obj_get_vt_raw(p_obj)); Finref_Metadata *metadata = gc->finref_metadata; return finref_metadata_add_entry(gc, vector_block_in_use, metadata->fallback_ref_pool, (POINTER_SIZE_INT)obj_ptr_to_ref(p_obj)); }