@@ -590,13 +590,6 @@ rb_module_add_to_subclasses_list(VALUE module, VALUE iclass)
590590 }
591591}
592592
593- void
594- rb_class_remove_subclass_head (VALUE klass )
595- {
596- rb_classext_t * ext = RCLASS_EXT_WRITABLE (klass );
597- rb_class_classext_free_subclasses (ext , klass , false);
598- }
599-
600593static struct rb_subclass_entry *
601594class_get_subclasses_for_ns (struct st_table * tbl , VALUE box_id )
602595{
@@ -663,18 +656,6 @@ rb_class_remove_from_super_subclasses(VALUE klass)
663656 RCLASSEXT_BOX_SUPER_SUBCLASSES (ext ) = 0 ;
664657}
665658
666- void
667- rb_class_remove_from_module_subclasses (VALUE klass )
668- {
669- rb_classext_t * ext = RCLASS_EXT_WRITABLE (klass );
670- rb_box_subclasses_t * box_subclasses = RCLASSEXT_BOX_MODULE_SUBCLASSES (ext );
671-
672- if (!box_subclasses ) return ;
673- remove_class_from_subclasses (box_subclasses -> tbl , box_subclasses_tbl_key (RCLASSEXT_BOX (ext )), klass );
674- rb_box_subclasses_ref_dec (box_subclasses );
675- RCLASSEXT_BOX_MODULE_SUBCLASSES (ext ) = 0 ;
676- }
677-
678659void
679660rb_class_classext_free_subclasses (rb_classext_t * ext , VALUE klass , bool replacing )
680661{
@@ -690,19 +671,19 @@ rb_class_classext_free_subclasses(rb_classext_t *ext, VALUE klass, bool replacin
690671 }
691672 VM_ASSERT (
692673 rb_box_subclasses_ref_count (anchor -> box_subclasses ) > 0 ,
693- "box_subclasses refcount (%p) %d " , anchor -> box_subclasses , rb_box_subclasses_ref_count (anchor -> box_subclasses ));
674+ "box_subclasses refcount (%p) %ld " , anchor -> box_subclasses , rb_box_subclasses_ref_count (anchor -> box_subclasses ));
694675 st_delete (tbl , & box_id , NULL );
695676 rb_box_subclasses_ref_dec (anchor -> box_subclasses );
696677 xfree (anchor );
697678
698- if (! replacing && RCLASSEXT_BOX_SUPER_SUBCLASSES (ext )) {
679+ if (RCLASSEXT_BOX_SUPER_SUBCLASSES (ext )) {
699680 rb_box_subclasses_t * box_sub = RCLASSEXT_BOX_SUPER_SUBCLASSES (ext );
700- remove_class_from_subclasses (box_sub -> tbl , box_id , klass );
681+ if (! replacing ) remove_class_from_subclasses (box_sub -> tbl , box_id , klass );
701682 rb_box_subclasses_ref_dec (box_sub );
702683 }
703- if (! replacing && RCLASSEXT_BOX_MODULE_SUBCLASSES (ext )) {
684+ if (RCLASSEXT_BOX_MODULE_SUBCLASSES (ext )) {
704685 rb_box_subclasses_t * box_sub = RCLASSEXT_BOX_MODULE_SUBCLASSES (ext );
705- remove_class_from_subclasses (box_sub -> tbl , box_id , klass );
686+ if (! replacing ) remove_class_from_subclasses (box_sub -> tbl , box_id , klass );
706687 rb_box_subclasses_ref_dec (box_sub );
707688 }
708689}
@@ -730,24 +711,6 @@ class_detach_subclasses(VALUE klass, VALUE arg)
730711 rb_class_remove_from_super_subclasses (klass );
731712}
732713
733- void
734- rb_class_detach_subclasses (VALUE klass )
735- {
736- rb_class_foreach_subclass (klass , class_detach_subclasses , Qnil );
737- }
738-
739- static void
740- class_detach_module_subclasses (VALUE klass , VALUE arg )
741- {
742- rb_class_remove_from_module_subclasses (klass );
743- }
744-
745- void
746- rb_class_detach_module_subclasses (VALUE klass )
747- {
748- rb_class_foreach_subclass (klass , class_detach_module_subclasses , Qnil );
749- }
750-
751714static void
752715class_switch_superclass (VALUE super , VALUE klass )
753716{
0 commit comments