@@ -1275,6 +1275,8 @@ rb_obj_set_fields(VALUE obj, VALUE fields_obj, ID field_name, VALUE original_fie
12751275 rb_imemo_fields_clear (original_fields_obj );
12761276 }
12771277 }
1278+
1279+ RBASIC_SET_SHAPE_ID (obj , RBASIC_SHAPE_ID (fields_obj ));
12781280}
12791281
12801282void
@@ -1637,7 +1639,6 @@ obj_transition_too_complex(VALUE obj, st_table *table)
16371639 VALUE fields_obj = rb_imemo_fields_new_complex_tbl (rb_obj_class (obj ), table );
16381640 RBASIC_SET_SHAPE_ID (fields_obj , shape_id );
16391641 rb_obj_replace_fields (obj , fields_obj , 0 );
1640- RBASIC_SET_SHAPE_ID (obj , shape_id );
16411642 }
16421643 }
16431644
@@ -1889,13 +1890,7 @@ generic_field_set(VALUE obj, shape_id_t target_shape_id, ID field_name, VALUE va
18891890 const VALUE original_fields_obj = rb_obj_fields (obj , field_name );
18901891 VALUE fields_obj = imemo_fields_set (rb_obj_class (obj ), original_fields_obj , target_shape_id , field_name , val , false);
18911892
1892- rb_obj_replace_fields (obj , fields_obj , field_name );
1893-
1894- if (RBASIC_SHAPE_ID (fields_obj ) == target_shape_id ) {
1895- RBASIC_SET_SHAPE_ID (obj , target_shape_id );
1896- }
1897-
1898- RUBY_ASSERT (RBASIC_SHAPE_ID (obj ) == RBASIC_SHAPE_ID (fields_obj ));
1893+ rb_obj_set_fields (obj , fields_obj , field_name , original_fields_obj );
18991894}
19001895
19011896static shape_id_t
0 commit comments