@@ -217,7 +217,7 @@ static inline void RCLASSEXT_SET_INCLUDER(rb_classext_t *ext, VALUE klass, VALUE
217217// To invalidate CC by inserting&invalidating method entry into tables containing the target cme
218218// See clear_method_cache_by_id_in_class()
219219#define RCLASS_PRIME_FIELDS (c ) (rb_imemo_class_fields_ptr(RCLASS_EXT_PRIME(c)->fields_obj))
220- #define RCLASS_PRIME_FIELDS_VALUE (c ) (RCLASS_EXT_PRIME(c)->fields_obj)
220+ #define RCLASS_PRIME_FIELDS_OBJ (c ) (RCLASS_EXT_PRIME(c)->fields_obj)
221221
222222static inline void
223223RCLASS_PRIME_SET_FIELDS_OBJ (VALUE klass , VALUE fields )
@@ -270,8 +270,8 @@ RCLASS_PRIME_SET_FIELDS_OBJ(VALUE klass, VALUE fields)
270270
271271static inline void RCLASS_SET_SUPER (VALUE klass , VALUE super );
272272static inline void RCLASS_WRITE_SUPER (VALUE klass , VALUE super );
273- static inline st_table * RCLASS_FIELDS_HASH (VALUE obj );
274- static inline st_table * RCLASS_WRITABLE_FIELDS_HASH (VALUE obj );
273+ static inline st_table * RCLASS_FIELDS_HASH (VALUE obj );
274+ static inline st_table * RCLASS_WRITABLE_FIELDS_HASH (VALUE obj );
275275static inline uint32_t RCLASS_FIELDS_COUNT (VALUE obj );
276276static inline void RCLASS_SET_FIELDS_HASH (VALUE obj , st_table * table );
277277static inline void RCLASS_WRITE_FIELDS_HASH (VALUE obj , st_table * table );
@@ -551,15 +551,18 @@ RCLASS_FIELDS_HASH(VALUE obj)
551551{
552552 RUBY_ASSERT (RB_TYPE_P (obj , RUBY_T_CLASS ) || RB_TYPE_P (obj , RUBY_T_MODULE ));
553553 RUBY_ASSERT (rb_shape_obj_too_complex_p (obj ));
554- return (st_table * )RCLASSEXT_FIELDS (RCLASS_EXT_READABLE (obj ));
554+ VALUE fields_obj = RCLASS_EXT_READABLE (obj )-> fields_obj ;
555+ return rb_imemo_class_fields_complex_tbl (fields_obj );
555556}
556557
557558static inline st_table *
558559RCLASS_WRITABLE_FIELDS_HASH (VALUE obj )
559560{
560561 RUBY_ASSERT (RB_TYPE_P (obj , RUBY_T_CLASS ) || RB_TYPE_P (obj , RUBY_T_MODULE ));
561562 RUBY_ASSERT (rb_shape_obj_too_complex_p (obj ));
562- return (st_table * )RCLASSEXT_FIELDS (RCLASS_EXT_WRITABLE (obj ));
563+
564+ VALUE fields_obj = RCLASS_EXT_WRITABLE (obj )-> fields_obj ;
565+ return rb_imemo_class_fields_complex_tbl (fields_obj );
563566}
564567
565568static inline void
@@ -568,8 +571,8 @@ RCLASS_SET_FIELDS_HASH(VALUE obj, st_table *tbl)
568571 RUBY_ASSERT (RB_TYPE_P (obj , RUBY_T_CLASS ) || RB_TYPE_P (obj , RUBY_T_MODULE ));
569572 RUBY_ASSERT (rb_shape_obj_too_complex_p (obj ));
570573
571- VALUE fields = rb_imemo_class_fields_new (obj , sizeof ( tbl ) );
572- IMEMO_OBJ_FIELDS (fields ) -> as . complex . table = tbl ;
574+ VALUE fields = rb_imemo_class_fields_new_complex (obj , tbl );
575+ rb_shape_set_shape_id (fields , RBASIC_SHAPE_ID ( obj )) ;
573576 RCLASSEXT_SET_FIELDS_OBJ (obj , RCLASS_EXT_PRIME (obj ), fields );
574577}
575578
0 commit comments