Skip to content

Commit 17c76e4

Browse files
committed
[GR-47890] Force split struct pack/unpack
PullRequest: graalpython/2913
2 parents 4a294c5 + f39b730 commit 17c76e4

File tree

2 files changed

+4
-12
lines changed

2 files changed

+4
-12
lines changed

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2017, 2022, Oracle and/or its affiliates.
2+
* Copyright (c) 2017, 2023, Oracle and/or its affiliates.
33
* Copyright (c) 2013, Regents of the University of California
44
*
55
* All rights reserved.
@@ -108,4 +108,5 @@
108108

109109
String raiseErrorName() default StringLiterals.J_EMPTY_STRING;
110110

111+
boolean forceSplitDirectCalls() default false;
111112
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/call/FunctionInvokeNode.java

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import com.oracle.graal.python.builtins.objects.function.PFunction;
4848
import com.oracle.graal.python.builtins.objects.object.PythonObject;
4949
import com.oracle.graal.python.nodes.bytecode.PBytecodeGeneratorFunctionRootNode;
50+
import com.oracle.graal.python.nodes.function.BuiltinFunctionRootNode;
5051
import com.oracle.graal.python.runtime.ExecutionContext.CallContext;
5152
import com.oracle.graal.python.runtime.ExecutionContext.IndirectCalleeContext;
5253
import com.oracle.graal.python.runtime.PythonContext;
@@ -127,17 +128,7 @@ public static FunctionInvokeNode create(PFunction callee) {
127128
@TruffleBoundary
128129
public static FunctionInvokeNode create(PBuiltinFunction callee) {
129130
RootCallTarget callTarget = getCallTarget(callee);
130-
boolean split = forceSplitBuiltins();
131+
boolean split = forceSplitBuiltins() || (callee.getFunctionRootNode() instanceof BuiltinFunctionRootNode root && root.getBuiltin().forceSplitDirectCalls());
131132
return FunctionInvokeNodeGen.create(null, callTarget, null, null, true, false, split);
132133
}
133-
134-
/**
135-
* Same as {@link #create(PBuiltinFunction)} but only providing the call target of the builtin
136-
* function. Be careful using it. It will never provide globals or a closure to the invoked
137-
* function!
138-
*/
139-
@TruffleBoundary
140-
public static FunctionInvokeNode createBuiltinFunction(RootCallTarget callTarget) {
141-
return FunctionInvokeNodeGen.create(null, callTarget, null, null, true, false, forceSplitBuiltins());
142-
}
143134
}

0 commit comments

Comments
 (0)