@@ -839,14 +839,20 @@ RVALUE_AGE_GET(VALUE obj)
839839}
840840
841841static void
842- RVALUE_AGE_SET (VALUE obj , int age )
842+ RVALUE_AGE_SET_BITMAP (VALUE obj , int age )
843843{
844844 RUBY_ASSERT (age <= RVALUE_OLD_AGE );
845845 bits_t * age_bits = GET_HEAP_PAGE (obj )-> age_bits ;
846846 // clear the bits
847847 age_bits [RVALUE_AGE_BITMAP_INDEX (obj )] &= ~(RVALUE_AGE_BIT_MASK << (RVALUE_AGE_BITMAP_OFFSET (obj )));
848848 // shift the correct value in
849849 age_bits [RVALUE_AGE_BITMAP_INDEX (obj )] |= ((bits_t )age << RVALUE_AGE_BITMAP_OFFSET (obj ));
850+ }
851+
852+ static void
853+ RVALUE_AGE_SET (VALUE obj , int age )
854+ {
855+ RVALUE_AGE_SET_BITMAP (obj , age );
850856 if (age == RVALUE_OLD_AGE ) {
851857 RB_FL_SET_RAW (obj , RUBY_FL_PROMOTED );
852858 }
@@ -1581,7 +1587,7 @@ heap_page_add_freeobj(rb_objspace_t *objspace, struct heap_page *page, VALUE obj
15811587 page -> freelist = slot ;
15821588 asan_lock_freelist (page );
15831589
1584- RVALUE_AGE_RESET (obj );
1590+ RVALUE_AGE_SET_BITMAP (obj , 0 );
15851591
15861592 if (RGENGC_CHECK_MODE &&
15871593 /* obj should belong to page */
@@ -6951,7 +6957,7 @@ gc_move(rb_objspace_t *objspace, VALUE src, VALUE dest, size_t src_slot_size, si
69516957 }
69526958
69536959 memset ((void * )src , 0 , src_slot_size );
6954- RVALUE_AGE_RESET (src );
6960+ RVALUE_AGE_SET_BITMAP (src , 0 );
69556961
69566962 /* Set bits for object in new location */
69576963 if (remembered ) {
0 commit comments