Skip to content

Commit 0ef05f8

Browse files
committed
Rename ImportCExtSymbol to ImportCAPISymbol and move to CExtNodes
1 parent 227752f commit 0ef05f8

File tree

7 files changed

+44
-47
lines changed

7 files changed

+44
-47
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -391,7 +391,7 @@ public Object getModuleByIndex(int i) {
391391
return null;
392392
}
393393

394-
public Object getNativeSymbol(NativeCAPISymbol symbol) {
394+
Object getNativeSymbol(NativeCAPISymbol symbol) {
395395
Object result = nativeSymbolCache[symbol.ordinal()];
396396
if (CompilerDirectives.injectBranchProbability(CompilerDirectives.SLOWPATH_PROBABILITY, result == null)) {
397397
result = lookupNativeSymbol(symbol);

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

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@
103103
import com.oracle.graal.python.builtins.objects.cext.common.CArrayWrappers.CStringWrapper;
104104
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.CheckFunctionResultNode;
105105
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.EnsureTruffleStringNode;
106-
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.ImportCExtSymbolNode;
107106
import com.oracle.graal.python.builtins.objects.cext.common.CExtContext;
108107
import com.oracle.graal.python.builtins.objects.cext.common.CExtContext.ModuleSpec;
109108
import com.oracle.graal.python.builtins.objects.cext.common.GetNextVaArgNode;
@@ -233,7 +232,7 @@ Object callNativeConstructor(Object object, Object arg,
233232
@Cached PythonToNativeNode toSulongNode,
234233
@Cached NativeToPythonNode toJavaNode,
235234
@CachedLibrary(limit = "1") InteropLibrary interopLibrary,
236-
@Cached ImportCExtSymbolNode importCAPISymbolNode) {
235+
@Cached ImportCAPISymbolNode importCAPISymbolNode) {
237236
assert TypeNodes.NeedsNativeAllocationNode.executeUncached(object);
238237
try {
239238
CApiContext cApiContext = PythonContext.get(inliningTarget).getCApiContext();
@@ -584,7 +583,7 @@ public abstract static class PointerCompareNode extends Node {
584583

585584
public abstract boolean execute(Node inliningTarget, ComparisonOp op, Object a, Object b);
586585

587-
private static boolean executeCFunction(Node inliningTarget, int op, Object a, Object b, InteropLibrary interopLibrary, ImportCExtSymbolNode importCAPISymbolNode) {
586+
private static boolean executeCFunction(Node inliningTarget, int op, Object a, Object b, InteropLibrary interopLibrary, ImportCAPISymbolNode importCAPISymbolNode) {
588587
try {
589588
Object sym = importCAPISymbolNode.execute(inliningTarget, FUN_PTR_COMPARE);
590589
return (int) interopLibrary.execute(sym, a, b, op) != 0;
@@ -604,23 +603,23 @@ static boolean doEqNe(ComparisonOp op, PythonAbstractNativeObject a, PythonAbstr
604603
@Specialization
605604
static boolean doPythonNativeObject(Node inliningTarget, ComparisonOp op, PythonNativeObject a, PythonNativeObject b,
606605
@Shared @CachedLibrary(limit = "1") InteropLibrary interopLibrary,
607-
@Shared @Cached ImportCExtSymbolNode importCAPISymbolNode) {
606+
@Shared @Cached ImportCAPISymbolNode importCAPISymbolNode) {
608607
CompilerAsserts.partialEvaluationConstant(op);
609608
return executeCFunction(inliningTarget, op.opCode, a.getPtr(), b.getPtr(), interopLibrary, importCAPISymbolNode);
610609
}
611610

612611
@Specialization
613612
static boolean doPythonNativeObjectLong(Node inliningTarget, ComparisonOp op, PythonNativeObject a, long b,
614613
@Shared @CachedLibrary(limit = "1") InteropLibrary interopLibrary,
615-
@Shared @Cached ImportCExtSymbolNode importCAPISymbolNode) {
614+
@Shared @Cached ImportCAPISymbolNode importCAPISymbolNode) {
616615
CompilerAsserts.partialEvaluationConstant(op);
617616
return executeCFunction(inliningTarget, op.opCode, a.getPtr(), b, interopLibrary, importCAPISymbolNode);
618617
}
619618

620619
@Specialization
621620
static boolean doNativeVoidPtrLong(Node inliningTarget, ComparisonOp op, PythonNativeVoidPtr a, long b,
622621
@Shared @CachedLibrary(limit = "1") InteropLibrary interopLibrary,
623-
@Shared @Cached ImportCExtSymbolNode importCAPISymbolNode) {
622+
@Shared @Cached ImportCAPISymbolNode importCAPISymbolNode) {
624623
CompilerAsserts.partialEvaluationConstant(op);
625624
return executeCFunction(inliningTarget, op.opCode, a.getPointerObject(), b, interopLibrary, importCAPISymbolNode);
626625
}
@@ -825,7 +824,7 @@ public final Object call(NativeCAPISymbol symbol, Object... args) {
825824
@Specialization
826825
static Object doWithoutContext(NativeCAPISymbol name, Object[] args,
827826
@Bind("this") Node inliningTarget,
828-
@Cached ImportCExtSymbolNode importCExtSymbolNode,
827+
@Cached ImportCAPISymbolNode importCAPISymbolNode,
829828
@CachedLibrary(limit = "1") InteropLibrary interopLibrary,
830829
@Cached EnsureTruffleStringNode ensureTruffleStringNode) {
831830
try {
@@ -838,7 +837,7 @@ static Object doWithoutContext(NativeCAPISymbol name, Object[] args,
838837
cApiContext = pythonContext.getCApiContext();
839838
}
840839
// TODO review EnsureTruffleStringNode with GR-37896
841-
return ensureTruffleStringNode.execute(inliningTarget, interopLibrary.execute(importCExtSymbolNode.execute(inliningTarget, cApiContext, name), args));
840+
return ensureTruffleStringNode.execute(inliningTarget, interopLibrary.execute(importCAPISymbolNode.execute(inliningTarget, cApiContext, name), args));
842841
} catch (UnsupportedTypeException | ArityException | UnsupportedMessageException e) {
843842
// consider these exceptions to be fatal internal errors
844843
throw shouldNotReachHere(e);
@@ -2021,4 +2020,28 @@ public static Object resolveClosurePointer(PythonContext context, Object callabl
20212020
return null;
20222021
}
20232022
}
2023+
2024+
@GenerateUncached
2025+
@GenerateInline
2026+
@GenerateCached(false)
2027+
public abstract static class ImportCAPISymbolNode extends PNodeWithContext {
2028+
2029+
public final Object execute(Node inliningTarget, NativeCAPISymbol symbol) {
2030+
return execute(inliningTarget, PythonContext.get(inliningTarget).getCApiContext(), symbol);
2031+
}
2032+
2033+
public abstract Object execute(Node inliningTarget, CApiContext nativeContext, NativeCAPISymbol symbol);
2034+
2035+
@Specialization(guards = {"isSingleContext()", "cachedSymbol == symbol"}, limit = "1")
2036+
static Object doCached(@SuppressWarnings("unused") Node inliningTarget, @SuppressWarnings("unused") CApiContext nativeContext, @SuppressWarnings("unused") NativeCAPISymbol symbol,
2037+
@Cached("symbol") @SuppressWarnings("unused") NativeCAPISymbol cachedSymbol,
2038+
@Cached(value = "nativeContext.getNativeSymbol(symbol)", weak = true) Object llvmSymbol) {
2039+
return llvmSymbol;
2040+
}
2041+
2042+
@Specialization(replaces = "doCached")
2043+
static Object doGeneric(CApiContext nativeContext, NativeCAPISymbol symbol) {
2044+
return nativeContext.getNativeSymbol(symbol);
2045+
}
2046+
}
20242047
}

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

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -59,10 +59,8 @@
5959
import com.oracle.graal.python.builtins.objects.PNone;
6060
import com.oracle.graal.python.builtins.objects.bytes.BytesCommonBuiltins;
6161
import com.oracle.graal.python.builtins.objects.cext.PythonNativeVoidPtr;
62-
import com.oracle.graal.python.builtins.objects.cext.capi.CApiContext;
6362
import com.oracle.graal.python.builtins.objects.cext.capi.CApiGuards;
6463
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.FromCharPointerNode;
65-
import com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol;
6664
import com.oracle.graal.python.builtins.objects.cext.capi.PrimitiveNativeWrapper;
6765
import com.oracle.graal.python.builtins.objects.cext.common.CArrayWrappers.CByteArrayWrapper;
6866
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodesFactory.GetIndexNodeGen;
@@ -148,30 +146,6 @@ public static void fatalError(Node location, PythonContext context, String prefi
148146
throw new PythonExitException(location, status);
149147
}
150148

151-
@GenerateUncached
152-
@GenerateInline
153-
@GenerateCached(false)
154-
public abstract static class ImportCExtSymbolNode extends PNodeWithContext {
155-
156-
public final Object execute(Node inliningTarget, NativeCAPISymbol symbol) {
157-
return execute(inliningTarget, PythonContext.get(inliningTarget).getCApiContext(), symbol);
158-
}
159-
160-
public abstract Object execute(Node inliningTarget, CApiContext nativeContext, NativeCExtSymbol symbol);
161-
162-
@Specialization(guards = {"isSingleContext()", "cachedSymbol == symbol"}, limit = "1")
163-
static Object doCached(@SuppressWarnings("unused") Node inliningTarget, @SuppressWarnings("unused") CApiContext nativeContext, @SuppressWarnings("unused") NativeCAPISymbol symbol,
164-
@Cached("symbol") @SuppressWarnings("unused") NativeCAPISymbol cachedSymbol,
165-
@Cached(value = "nativeContext.getNativeSymbol(symbol)", weak = true) Object llvmSymbol) {
166-
return llvmSymbol;
167-
}
168-
169-
@Specialization(replaces = "doCached")
170-
static Object doGeneric(CApiContext nativeContext, NativeCAPISymbol symbol) {
171-
return nativeContext.getNativeSymbol(symbol);
172-
}
173-
}
174-
175149
@GenerateUncached
176150
@GenerateInline
177151
@GenerateCached(false)

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PySequenceDelItemNode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545

4646
import com.oracle.graal.python.builtins.objects.PNone;
4747
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
48+
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
4849
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes;
4950
import com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol;
5051
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
5152
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
52-
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes;
5353
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5454
import com.oracle.graal.python.nodes.ErrorMessages;
5555
import com.oracle.graal.python.nodes.PGuards;
@@ -111,9 +111,9 @@ static Object doGenericManaged(VirtualFrame frame, Object object, int index,
111111
static Object doNative(VirtualFrame frame, PythonAbstractNativeObject object, int index,
112112
@Bind("this") Node inliningTarget,
113113
@Cached CApiTransitions.PythonToNativeNode toNativeNode,
114-
@Cached CExtCommonNodes.ImportCExtSymbolNode importCExtSymbolNode,
114+
@Cached CExtNodes.ImportCAPISymbolNode importCAPISymbolNode,
115115
@Cached ExternalFunctionNodes.ExternalFunctionInvokeNode invokeNode) {
116-
Object executable = importCExtSymbolNode.execute(inliningTarget, SYMBOL);
116+
Object executable = importCAPISymbolNode.execute(inliningTarget, SYMBOL);
117117
return invokeNode.execute(frame, DELITEM, C_API_TIMING, SYMBOL.getTsName(), executable, new Object[]{toNativeNode.execute(object), index});
118118
}
119119
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PySequenceGetItemNode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545

4646
import com.oracle.graal.python.builtins.objects.PNone;
4747
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
48+
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
4849
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes;
4950
import com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol;
5051
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
5152
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
52-
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes;
5353
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5454
import com.oracle.graal.python.nodes.ErrorMessages;
5555
import com.oracle.graal.python.nodes.PGuards;
@@ -111,9 +111,9 @@ static Object doGenericManaged(VirtualFrame frame, Object object, int index,
111111
static Object doNative(VirtualFrame frame, PythonAbstractNativeObject object, int index,
112112
@Bind("this") Node inliningTarget,
113113
@Cached CApiTransitions.PythonToNativeNode toNativeNode,
114-
@Cached CExtCommonNodes.ImportCExtSymbolNode importCExtSymbolNode,
114+
@Cached CExtNodes.ImportCAPISymbolNode importCAPISymbolNode,
115115
@Cached ExternalFunctionNodes.ExternalFunctionInvokeNode invokeNode) {
116-
Object executable = importCExtSymbolNode.execute(inliningTarget, SYMBOL);
116+
Object executable = importCAPISymbolNode.execute(inliningTarget, SYMBOL);
117117
return invokeNode.execute(frame, GETITEM, C_API_TIMING, SYMBOL.getTsName(), executable, new Object[]{toNativeNode.execute(object), index});
118118
}
119119
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PySequenceSetItemNode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545

4646
import com.oracle.graal.python.builtins.objects.PNone;
4747
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
48+
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
4849
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes;
4950
import com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol;
5051
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
5152
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
52-
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes;
5353
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5454
import com.oracle.graal.python.nodes.ErrorMessages;
5555
import com.oracle.graal.python.nodes.PGuards;
@@ -111,9 +111,9 @@ static Object doGenericManaged(VirtualFrame frame, Object object, int index, Obj
111111
static Object doNative(VirtualFrame frame, PythonAbstractNativeObject object, int index, Object value,
112112
@Bind("this") Node inliningTarget,
113113
@Cached CApiTransitions.PythonToNativeNode toNativeNode,
114-
@Cached CExtCommonNodes.ImportCExtSymbolNode importCExtSymbolNode,
114+
@Cached CExtNodes.ImportCAPISymbolNode importCAPISymbolNode,
115115
@Cached ExternalFunctionNodes.ExternalFunctionInvokeNode invokeNode) {
116-
Object executable = importCExtSymbolNode.execute(inliningTarget, SYMBOL);
116+
Object executable = importCAPISymbolNode.execute(inliningTarget, SYMBOL);
117117
return invokeNode.execute(frame, SETITEM, C_API_TIMING, SYMBOL.getTsName(), executable, new Object[]{toNativeNode.execute(object), index, toNativeNode.execute(value)});
118118
}
119119
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/lib/PySequenceSizeNode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,11 @@
4545

4646
import com.oracle.graal.python.builtins.objects.PNone;
4747
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
48+
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
4849
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes;
4950
import com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol;
5051
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
5152
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
52-
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes;
5353
import com.oracle.graal.python.builtins.objects.type.SpecialMethodSlot;
5454
import com.oracle.graal.python.nodes.ErrorMessages;
5555
import com.oracle.graal.python.nodes.PGuards;
@@ -126,9 +126,9 @@ static long doGenericManaged(VirtualFrame frame, Object object,
126126
static long doNative(VirtualFrame frame, PythonAbstractNativeObject object,
127127
@Bind("this") Node inliningTarget,
128128
@Cached CApiTransitions.PythonToNativeNode toNativeNode,
129-
@Cached CExtCommonNodes.ImportCExtSymbolNode importCExtSymbolNode,
129+
@Cached CExtNodes.ImportCAPISymbolNode importCAPISymbolNode,
130130
@Cached ExternalFunctionNodes.ExternalFunctionInvokeNode invokeNode) {
131-
Object executable = importCExtSymbolNode.execute(inliningTarget, SYMBOL);
131+
Object executable = importCAPISymbolNode.execute(inliningTarget, SYMBOL);
132132
Object size = invokeNode.execute(frame, LENFUNC, C_API_TIMING, SYMBOL.getTsName(), executable, new Object[]{toNativeNode.execute(object)});
133133
assert PGuards.isInteger(size);
134134
return (long) size;

0 commit comments

Comments
 (0)