Skip to content

Commit 55bed30

Browse files
timfelqunaibit
authored andcommitted
Make TypeNodes.GetSubclassesNode uncached
1 parent 7eb3638 commit 55bed30

File tree

2 files changed

+6
-17
lines changed

2 files changed

+6
-17
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/PythonManagedClass.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ private void unsafeSetSuperClass(PythonAbstractClass... newBaseClasses) {
173173

174174
for (PythonAbstractClass base : getBaseClasses()) {
175175
if (base != null) {
176-
GetSubclassesNode.doSlowPath(base).add(this);
176+
GetSubclassesNode.getUncached().execute(base).add(this);
177177
}
178178
}
179179
this.methodResolutionOrder.setInternalArrayObject(ComputeMroNode.doSlowPath(this));

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/type/TypeNodes.java

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ public static GetSuperClassNode getUncached() {
366366

367367
@TypeSystemReference(PythonTypes.class)
368368
@ImportStatic(NativeMemberNames.class)
369+
@GenerateUncached
369370
public abstract static class GetSubclassesNode extends PNodeWithContext {
370371

371372
public abstract Set<PythonAbstractClass> execute(Object obj);
@@ -382,7 +383,6 @@ Set<PythonAbstractClass> doPythonClass(PythonBuiltinClassType obj,
382383
}
383384

384385
@Specialization
385-
@TruffleBoundary
386386
Set<PythonAbstractClass> doNativeClass(PythonNativeClass obj,
387387
@Cached GetTypeMemberNode getTpSubclassesNode,
388388
@Cached("createClassProfile()") ValueProfile profile) {
@@ -397,21 +397,6 @@ Set<PythonAbstractClass> doNativeClass(PythonNativeClass obj,
397397
}
398398

399399
@TruffleBoundary
400-
public static Set<PythonAbstractClass> doSlowPath(Object obj) {
401-
if (obj instanceof PythonManagedClass) {
402-
return ((PythonManagedClass) obj).getSubClasses();
403-
} else if (obj instanceof PythonBuiltinClassType) {
404-
return PythonLanguage.getCore().lookupType((PythonBuiltinClassType) obj).getSubClasses();
405-
} else if (PGuards.isNativeClass(obj)) {
406-
Object tpSubclasses = GetTypeMemberNode.getUncached().execute(obj, NativeMemberNames.TP_SUBCLASSES);
407-
if (tpSubclasses instanceof PDict) {
408-
return wrapDict(tpSubclasses);
409-
}
410-
throw new IllegalStateException("invalid subclasses dict " + tpSubclasses.getClass().getName());
411-
}
412-
throw new IllegalStateException("unknown type " + obj.getClass().getName());
413-
}
414-
415400
private static Set<PythonAbstractClass> wrapDict(Object tpSubclasses) {
416401
return new Set<PythonAbstractClass>() {
417402
private final PDict dict = (PDict) tpSubclasses;
@@ -492,6 +477,10 @@ public static GetSubclassesNode create() {
492477
return GetSubclassesNodeGen.create();
493478
}
494479

480+
public static GetSubclassesNode getUncached() {
481+
return GetSubclassesNodeGen.getUncached();
482+
}
483+
495484
}
496485

497486
@GenerateUncached

0 commit comments

Comments
 (0)