@@ -112,6 +112,7 @@ public static void debugModuleChain(RubyModule module) {
112
112
* map of refined classes and modules (C) to refinement modules (R). */
113
113
private final ConcurrentMap <RubyModule , RubyModule > refinements = new ConcurrentHashMap <>();
114
114
115
+ /** Only set for a Module and not a Class since there is no usage of it for a Class */
115
116
private final CyclicAssumption hierarchyUnmodifiedAssumption ;
116
117
117
118
// Concurrency: only modified during boot
@@ -141,7 +142,9 @@ public ModuleFields(
141
142
this .lexicalParent = lexicalParent ;
142
143
this .givenBaseName = givenBaseName ;
143
144
this .rubyModule = rubyModule ;
144
- this .hierarchyUnmodifiedAssumption = new CyclicAssumption ("hierarchy is unmodified" );
145
+ this .hierarchyUnmodifiedAssumption = rubyModule instanceof RubyClass
146
+ ? null
147
+ : new CyclicAssumption ("hierarchy is unmodified" );
145
148
classVariables = new ClassVariableStorage (language );
146
149
start = new PrependMarker (this );
147
150
this .includedBy = rubyModule instanceof RubyClass ? null : new ConcurrentWeakSet <>();
@@ -799,6 +802,10 @@ public boolean isAnonymous() {
799
802
return !this .hasFullName ;
800
803
}
801
804
805
+ private boolean isClass () {
806
+ return rubyModule instanceof RubyClass ;
807
+ }
808
+
802
809
public boolean isRefinement () {
803
810
return isRefinement ;
804
811
}
@@ -824,7 +831,9 @@ public String toString() {
824
831
}
825
832
826
833
public void newHierarchyVersion () {
827
- hierarchyUnmodifiedAssumption .invalidate (getName ());
834
+ if (!isClass ()) {
835
+ hierarchyUnmodifiedAssumption .invalidate (getName ());
836
+ }
828
837
829
838
if (isRefinement ()) {
830
839
getRefinedModule ().fields .invalidateBuiltinsAssumptions ();
@@ -884,6 +893,7 @@ private void newMethodVersion(String methodToInvalidate) {
884
893
}
885
894
886
895
public Assumption getHierarchyUnmodifiedAssumption () {
896
+ assert !isClass ();
887
897
return hierarchyUnmodifiedAssumption .getAssumption ();
888
898
}
889
899
0 commit comments