Skip to content

Commit 7e67b2f

Browse files
committed
getNodeClass can now be on the fast path, so determine it eagerly for MayRaiseNodeFactory
1 parent c4b2725 commit 7e67b2f

File tree

1 file changed

+12
-9
lines changed
  • graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext

1 file changed

+12
-9
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/CExtNodes.java

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2461,26 +2461,29 @@ public static PCallCapiFunction getUncached() {
24612461
// -----------------------------------------------------------------------------------------------------------------
24622462
public static class MayRaiseNodeFactory<T extends PythonBuiltinBaseNode> implements NodeFactory<T> {
24632463
private final T node;
2464-
private Class<T> nodeClass;
2464+
private final Class<T> nodeClass;
24652465

24662466
public MayRaiseNodeFactory(T node) {
24672467
this.node = node;
2468+
this.nodeClass = determineNodeClass(node);
24682469
}
24692470

24702471
public T createNode(Object... arguments) {
24712472
return NodeUtil.cloneNode(node);
24722473
}
24732474

2474-
@SuppressWarnings("unchecked")
24752475
public Class<T> getNodeClass() {
2476+
return nodeClass;
2477+
}
2478+
2479+
@SuppressWarnings("unchecked")
2480+
private static <T> Class<T> determineNodeClass(T node) {
24762481
CompilerAsserts.neverPartOfCompilation();
2477-
if (nodeClass == null) {
2478-
nodeClass = (Class<T>) node.getClass();
2479-
GeneratedBy genBy = nodeClass.getAnnotation(GeneratedBy.class);
2480-
if (genBy != null) {
2481-
nodeClass = (Class<T>) genBy.value();
2482-
assert nodeClass.isAssignableFrom(node.getClass());
2483-
}
2482+
Class<T> nodeClass = (Class<T>) node.getClass();
2483+
GeneratedBy genBy = nodeClass.getAnnotation(GeneratedBy.class);
2484+
if (genBy != null) {
2485+
nodeClass = (Class<T>) genBy.value();
2486+
assert nodeClass.isAssignableFrom(node.getClass());
24842487
}
24852488
return nodeClass;
24862489
}

0 commit comments

Comments
 (0)