@@ -1356,7 +1356,7 @@ rb_gc_imemo_needs_cleanup_p(VALUE obj)
13561356 return ((rb_imemo_tmpbuf_t * )obj )-> ptr != NULL ;
13571357
13581358 case imemo_fields :
1359- return FL_TEST_RAW (obj , OBJ_FIELD_HEAP ) || (id2ref_tbl && rb_obj_shape_has_id (obj ));
1359+ return rb_obj_shape_heap_p (obj ) || (id2ref_tbl && rb_obj_shape_has_id (obj ));
13601360 }
13611361 UNREACHABLE_RETURN (true);
13621362}
@@ -1412,7 +1412,7 @@ rb_gc_obj_needs_cleanup_p(VALUE obj)
14121412
14131413 switch (flags & RUBY_T_MASK ) {
14141414 case T_OBJECT :
1415- if (flags & ROBJECT_HEAP ) return true;
1415+ if (rb_obj_shape_heap_p ( obj ) ) return true;
14161416 return false;
14171417
14181418 case T_DATA :
@@ -1557,7 +1557,7 @@ rb_gc_obj_free(void *objspace, VALUE obj)
15571557
15581558 switch (BUILTIN_TYPE (obj )) {
15591559 case T_OBJECT :
1560- if (FL_TEST_RAW (obj , ROBJECT_HEAP )) {
1560+ if (rb_obj_shape_heap_p (obj )) {
15611561 if (rb_obj_shape_complex_p (obj )) {
15621562 RB_DEBUG_COUNTER_INC (obj_obj_complex );
15631563 st_free_table (ROBJECT_FIELDS_HASH (obj ));
@@ -2198,7 +2198,7 @@ object_id0(VALUE obj)
21982198 id = generate_next_object_id ();
21992199 rb_obj_field_set (obj , object_id_shape_id , 0 , id );
22002200
2201- RUBY_ASSERT (RBASIC_SHAPE_ID (obj ) == object_id_shape_id );
2201+ RUBY_ASSERT (RBASIC_SHAPE_ID (obj ) == object_id_shape_id || RBASIC_SHAPE_ID ( obj ) == rb_shape_transition_heap ( object_id_shape_id ) );
22022202 RUBY_ASSERT (rb_obj_shape_has_id (obj ));
22032203
22042204 if (RB_UNLIKELY (id2ref_tbl )) {
@@ -2604,7 +2604,7 @@ rb_obj_memsize_of(VALUE obj)
26042604
26052605 switch (BUILTIN_TYPE (obj )) {
26062606 case T_OBJECT :
2607- if (FL_TEST_RAW (obj , ROBJECT_HEAP )) {
2607+ if (rb_obj_shape_heap_p (obj )) {
26082608 if (rb_obj_shape_complex_p (obj )) {
26092609 size += rb_st_memsize (ROBJECT_FIELDS_HASH (obj ));
26102610 }
@@ -3882,7 +3882,7 @@ gc_ref_update_object(void *objspace, VALUE v)
38823882{
38833883 VALUE * ptr = ROBJECT_FIELDS (v );
38843884
3885- if (FL_TEST_RAW ( v , ROBJECT_HEAP )) {
3885+ if (rb_obj_shape_heap_p ( v )) {
38863886 if (rb_obj_shape_complex_p (v )) {
38873887 gc_ref_update_table_values_only (ROBJECT_FIELDS_HASH (v ));
38883888 return ;
@@ -3894,7 +3894,7 @@ gc_ref_update_object(void *objspace, VALUE v)
38943894 // Object can be re-embedded
38953895 memcpy (ROBJECT (v )-> as .ary , ptr , sizeof (VALUE ) * ROBJECT_FIELDS_COUNT (v ));
38963896 SIZED_FREE_N (ptr , ROBJECT_FIELDS_CAPACITY (v ));
3897- FL_UNSET_RAW (v , ROBJECT_HEAP );
3897+ RBASIC_SET_SHAPE_ID (v , rb_obj_shape_transition_embedded ( v ) );
38983898 ptr = ROBJECT (v )-> as .ary ;
38993899 }
39003900 }
@@ -5087,7 +5087,7 @@ rb_raw_obj_info_buitin_type(char *const buff, const size_t buff_size, const VALU
50875087 }
50885088 case T_OBJECT :
50895089 {
5090- if (FL_TEST_RAW (obj , ROBJECT_HEAP )) {
5090+ if (rb_obj_shape_heap_p (obj )) {
50915091 if (rb_obj_shape_complex_p (obj )) {
50925092 size_t hash_len = rb_st_table_size (ROBJECT_FIELDS_HASH (obj ));
50935093 APPEND_F ("(complex) len:%zu" , hash_len );
0 commit comments