Skip to content

Commit ac5ec61

Browse files
committed
Add typed methods for accessing call target cache
1 parent 154c17c commit ac5ec61

File tree

5 files changed

+17
-6
lines changed

5 files changed

+17
-6
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/PythonLanguage.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import com.oracle.graal.python.nodes.call.InvokeNode;
5555
import com.oracle.graal.python.nodes.control.TopLevelExceptionHandler;
5656
import com.oracle.graal.python.nodes.expression.ExpressionNode;
57+
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
5758
import com.oracle.graal.python.nodes.util.BadOPCodeNode;
5859
import com.oracle.graal.python.parser.PythonParserImpl;
5960
import com.oracle.graal.python.runtime.GilNode;
@@ -858,8 +859,17 @@ public RootCallTarget createCachedCallTarget(Function<PythonLanguage, RootNode>
858859
return createCachedCallTarget(rootNodeFunction, Arrays.asList(cacheKeys));
859860
}
860861

862+
public RootCallTarget createBuiltinCachedCallTarget(Function<PythonLanguage, RootNode> rootNodeFunction, Class<? extends PythonBuiltinBaseNode> nodeClass, String name) {
863+
return createCachedCallTarget(rootNodeFunction, Arrays.asList(nodeClass, name));
864+
}
865+
866+
@TruffleBoundary
867+
public RootCallTarget getCachedBuiltinCallTarget(Class<? extends PythonBuiltinBaseNode> nodeClass, String name) {
868+
return cachedCallTargets.get(Arrays.asList(nodeClass, name));
869+
}
870+
861871
@TruffleBoundary
862-
public RootCallTarget getCachedCallTarget(Object... cacheKeys) {
863-
return cachedCallTargets.get(Arrays.asList(cacheKeys));
872+
public RootCallTarget getCachedBuiltinCallTarget(com.oracle.truffle.api.dsl.NodeFactory<? extends PythonBuiltinBaseNode> factory, String name) {
873+
return getCachedBuiltinCallTarget(factory.getNodeClass(), name);
864874
}
865875
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/PythonBuiltins.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,8 @@ public void initialize(Python3Core core) {
7373
} else {
7474
declaresExplicitSelf = true;
7575
}
76-
RootCallTarget callTarget = core.getLanguage().createCachedCallTarget(l -> new BuiltinFunctionRootNode(l, builtin, factory, declaresExplicitSelf), factory.getNodeClass(), builtin.name());
76+
RootCallTarget callTarget = core.getLanguage().createBuiltinCachedCallTarget(l -> new BuiltinFunctionRootNode(l, builtin, factory, declaresExplicitSelf), factory.getNodeClass(),
77+
builtin.name());
7778
Object builtinDoc = builtin.doc().isEmpty() ? PNone.NONE : builtin.doc();
7879
if (constructsClass != PythonBuiltinClassType.nil) {
7980
assert !builtin.isGetter() && !builtin.isSetter() && !builtin.isClassmethod() && !builtin.isStaticmethod();

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/call/special/CallBinaryMethodNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ Object callSpecialMethodSlotInlined(VirtualFrame frame, @SuppressWarnings("unuse
9797
Object callSpecialMethodSlotCallTarget(VirtualFrame frame, BinaryBuiltinInfo info, Object arg1, Object arg2,
9898
@CachedLanguage PythonLanguage language,
9999
@Cached GenericInvokeNode invokeNode) {
100-
RootCallTarget callTarget = language.getCachedCallTarget(info.getFactory().getNodeClass(), info.getName());
100+
RootCallTarget callTarget = language.getCachedBuiltinCallTarget(info.getFactory(), info.getName());
101101
Object[] arguments = PArguments.create(2);
102102
PArguments.setArgument(arguments, 0, arg1);
103103
PArguments.setArgument(arguments, 1, arg2);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/call/special/CallTernaryMethodNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ static Object callSpecialMethodSlotInlined(VirtualFrame frame, @SuppressWarnings
8686
static Object callSpecialMethodSlotCallTarget(VirtualFrame frame, TernaryBuiltinInfo info, Object arg1, Object arg2, Object arg3,
8787
@CachedLanguage PythonLanguage language,
8888
@Cached GenericInvokeNode invokeNode) {
89-
RootCallTarget callTarget = language.getCachedCallTarget(info.getFactory().getNodeClass(), info.getName());
89+
RootCallTarget callTarget = language.getCachedBuiltinCallTarget(info.getFactory(), info.getName());
9090
Object[] arguments = PArguments.create(3);
9191
PArguments.setArgument(arguments, 0, arg1);
9292
PArguments.setArgument(arguments, 1, arg2);

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/call/special/CallUnaryMethodNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ Object callSpecialMethodSlotInlined(VirtualFrame frame, @SuppressWarnings("unuse
114114
Object callSpecialMethodSlotCallTarget(VirtualFrame frame, UnaryBuiltinInfo info, Object receiver,
115115
@CachedLanguage PythonLanguage language,
116116
@Cached GenericInvokeNode invokeNode) {
117-
RootCallTarget callTarget = language.getCachedCallTarget(info.getFactory().getNodeClass(), info.getName());
117+
RootCallTarget callTarget = language.getCachedBuiltinCallTarget(info.getFactory(), info.getName());
118118
Object[] arguments = PArguments.create(1);
119119
PArguments.setArgument(arguments, 0, receiver);
120120
return invokeNode.execute(frame, callTarget, arguments);

0 commit comments

Comments
 (0)