@@ -1666,10 +1666,10 @@ imemo_fields_complex_from_obj_i(ID key, VALUE val, st_data_t arg)
16661666}
16671667
16681668static VALUE
1669- imemo_fields_complex_from_obj (VALUE klass , VALUE source_fields_obj , shape_id_t shape_id )
1669+ imemo_fields_complex_from_obj (VALUE owner , VALUE source_fields_obj , shape_id_t shape_id )
16701670{
16711671 attr_index_t len = source_fields_obj ? RSHAPE_LEN (RBASIC_SHAPE_ID (source_fields_obj )) : 0 ;
1672- VALUE fields_obj = rb_imemo_fields_new_complex (klass , len + 1 );
1672+ VALUE fields_obj = rb_imemo_fields_new_complex (owner , len + 1 );
16731673
16741674 rb_field_foreach (source_fields_obj , imemo_fields_complex_from_obj_i , (st_data_t )fields_obj , false);
16751675 RBASIC_SET_SHAPE_ID (fields_obj , shape_id );
@@ -1678,9 +1678,9 @@ imemo_fields_complex_from_obj(VALUE klass, VALUE source_fields_obj, shape_id_t s
16781678}
16791679
16801680static VALUE
1681- imemo_fields_copy_capa (VALUE klass , VALUE source_fields_obj , attr_index_t new_size )
1681+ imemo_fields_copy_capa (VALUE owner , VALUE source_fields_obj , attr_index_t new_size )
16821682{
1683- VALUE fields_obj = rb_imemo_fields_new (klass , new_size );
1683+ VALUE fields_obj = rb_imemo_fields_new (owner , new_size );
16841684 if (source_fields_obj ) {
16851685 attr_index_t fields_count = RSHAPE_LEN (RBASIC_SHAPE_ID (source_fields_obj ));
16861686 VALUE * fields = rb_imemo_fields_ptr (fields_obj );
@@ -1832,7 +1832,7 @@ general_field_set(VALUE obj, shape_id_t target_shape_id, VALUE val, void *data,
18321832}
18331833
18341834static VALUE
1835- imemo_fields_set (VALUE klass , VALUE fields_obj , shape_id_t target_shape_id , ID field_name , VALUE val , bool concurrent )
1835+ imemo_fields_set (VALUE owner , VALUE fields_obj , shape_id_t target_shape_id , ID field_name , VALUE val , bool concurrent )
18361836{
18371837 const VALUE original_fields_obj = fields_obj ;
18381838 shape_id_t current_shape_id = fields_obj ? RBASIC_SHAPE_ID (fields_obj ) : ROOT_SHAPE_ID ;
@@ -1847,7 +1847,7 @@ imemo_fields_set(VALUE klass, VALUE fields_obj, shape_id_t target_shape_id, ID f
18471847 }
18481848 }
18491849 else {
1850- fields_obj = imemo_fields_complex_from_obj (klass , original_fields_obj , target_shape_id );
1850+ fields_obj = imemo_fields_complex_from_obj (owner , original_fields_obj , target_shape_id );
18511851 current_shape_id = target_shape_id ;
18521852 }
18531853
@@ -1861,7 +1861,7 @@ imemo_fields_set(VALUE klass, VALUE fields_obj, shape_id_t target_shape_id, ID f
18611861 else {
18621862 attr_index_t index = RSHAPE_INDEX (target_shape_id );
18631863 if (concurrent || index >= RSHAPE_CAPACITY (current_shape_id )) {
1864- fields_obj = imemo_fields_copy_capa (klass , original_fields_obj , RSHAPE_CAPACITY (target_shape_id ));
1864+ fields_obj = imemo_fields_copy_capa (owner , original_fields_obj , RSHAPE_CAPACITY (target_shape_id ));
18651865 }
18661866
18671867 VALUE * table = rb_imemo_fields_ptr (fields_obj );
@@ -1884,7 +1884,7 @@ generic_field_set(VALUE obj, shape_id_t target_shape_id, ID field_name, VALUE va
18841884 }
18851885
18861886 const VALUE original_fields_obj = rb_obj_fields (obj , field_name );
1887- VALUE fields_obj = imemo_fields_set (rb_obj_class ( obj ) , original_fields_obj , target_shape_id , field_name , val , false);
1887+ VALUE fields_obj = imemo_fields_set (obj , original_fields_obj , target_shape_id , field_name , val , false);
18881888
18891889 rb_obj_set_fields (obj , fields_obj , field_name , original_fields_obj );
18901890}
@@ -2319,7 +2319,7 @@ rb_copy_generic_ivar(VALUE dest, VALUE obj)
23192319 return ;
23202320 }
23212321
2322- new_fields_obj = rb_imemo_fields_new (rb_obj_class ( dest ) , RSHAPE_CAPACITY (dest_shape_id ));
2322+ new_fields_obj = rb_imemo_fields_new (dest , RSHAPE_CAPACITY (dest_shape_id ));
23232323 VALUE * src_buf = rb_imemo_fields_ptr (fields_obj );
23242324 VALUE * dest_buf = rb_imemo_fields_ptr (new_fields_obj );
23252325 rb_shape_copy_fields (new_fields_obj , dest_buf , dest_shape_id , src_buf , src_shape_id );
@@ -4640,7 +4640,7 @@ class_fields_ivar_set(VALUE klass, VALUE fields_obj, ID id, VALUE val, bool conc
46404640{
46414641 bool existing = true;
46424642 const VALUE original_fields_obj = fields_obj ;
4643- fields_obj = original_fields_obj ? original_fields_obj : rb_imemo_fields_new (rb_singleton_class ( klass ) , 1 );
4643+ fields_obj = original_fields_obj ? original_fields_obj : rb_imemo_fields_new (klass , 1 );
46444644
46454645 shape_id_t current_shape_id = RBASIC_SHAPE_ID (fields_obj );
46464646 shape_id_t next_shape_id = current_shape_id ;
@@ -4660,7 +4660,7 @@ class_fields_ivar_set(VALUE klass, VALUE fields_obj, ID id, VALUE val, bool conc
46604660
46614661 next_shape_id = rb_shape_transition_add_ivar (fields_obj , id );
46624662 if (UNLIKELY (rb_shape_too_complex_p (next_shape_id ))) {
4663- fields_obj = imemo_fields_complex_from_obj (rb_singleton_class ( klass ) , fields_obj , next_shape_id );
4663+ fields_obj = imemo_fields_complex_from_obj (klass , fields_obj , next_shape_id );
46644664 goto too_complex ;
46654665 }
46664666
@@ -4670,7 +4670,7 @@ class_fields_ivar_set(VALUE klass, VALUE fields_obj, ID id, VALUE val, bool conc
46704670 if (next_capacity > current_capacity ) {
46714671 // We allocate a new fields_obj even when concurrency isn't a concern
46724672 // so that we're embedded as long as possible.
4673- fields_obj = imemo_fields_copy_capa (rb_singleton_class ( klass ) , fields_obj , next_capacity );
4673+ fields_obj = imemo_fields_copy_capa (klass , fields_obj , next_capacity );
46744674 }
46754675
46764676 RUBY_ASSERT (RSHAPE (next_shape_id )-> type == SHAPE_IVAR );
0 commit comments