Skip to content

Commit c1702b0

Browse files
committed
No need to create a hierarchy Assumption for classes
1 parent deae78c commit c1702b0

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/main/java/org/truffleruby/core/module/ModuleFields.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public static void debugModuleChain(RubyModule module) {
112112
* map of refined classes and modules (C) to refinement modules (R). */
113113
private final ConcurrentMap<RubyModule, RubyModule> refinements = new ConcurrentHashMap<>();
114114

115+
/** Only set for a Module and not a Class since there is no usage of it for a Class */
115116
private final CyclicAssumption hierarchyUnmodifiedAssumption;
116117

117118
// Concurrency: only modified during boot
@@ -141,7 +142,9 @@ public ModuleFields(
141142
this.lexicalParent = lexicalParent;
142143
this.givenBaseName = givenBaseName;
143144
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");
145148
classVariables = new ClassVariableStorage(language);
146149
start = new PrependMarker(this);
147150
this.includedBy = rubyModule instanceof RubyClass ? null : new ConcurrentWeakSet<>();
@@ -799,6 +802,10 @@ public boolean isAnonymous() {
799802
return !this.hasFullName;
800803
}
801804

805+
private boolean isClass() {
806+
return rubyModule instanceof RubyClass;
807+
}
808+
802809
public boolean isRefinement() {
803810
return isRefinement;
804811
}
@@ -824,7 +831,9 @@ public String toString() {
824831
}
825832

826833
public void newHierarchyVersion() {
827-
hierarchyUnmodifiedAssumption.invalidate(getName());
834+
if (!isClass()) {
835+
hierarchyUnmodifiedAssumption.invalidate(getName());
836+
}
828837

829838
if (isRefinement()) {
830839
getRefinedModule().fields.invalidateBuiltinsAssumptions();
@@ -884,6 +893,7 @@ private void newMethodVersion(String methodToInvalidate) {
884893
}
885894

886895
public Assumption getHierarchyUnmodifiedAssumption() {
896+
assert !isClass();
887897
return hierarchyUnmodifiedAssumption.getAssumption();
888898
}
889899

0 commit comments

Comments
 (0)