argConversions) {
this.timing = CApiTiming.create(false, name);
this.name = name;
this.ret = ret;
this.args = args;
+ this.retConversion = retConversion;
+ this.argConversions = argConversions;
this.acquireGil = acquireGil;
this.id = id;
}
@@ -539,7 +545,7 @@ public boolean acquireGil() {
}
CExtToNativeNode createRetNode() {
- return ret.createPythonToNativeNode();
+ return retConversion == null ? null : retConversion.get();
}
Object getErrorReturnValue() {
@@ -556,7 +562,9 @@ Object getErrorReturnValue() {
}
CExtToJavaNode[] createArgNodes() {
- return ArgDescriptor.createNativeToPython(args);
+ CExtToJavaNode[] nodes = argConversions.get();
+ assert args.length == nodes.length;
+ return nodes;
}
public CApiBuiltinNode createBuiltinNode() {
@@ -794,7 +802,8 @@ public boolean inherits(ABI candidate) {
/**
* Builtin implementations in the C API (or helpers for implementing builtins with C code) are
* marked with this annotation. The information in the annotation allows code generation,
- * argument conversions (based on {@link ArgDescriptor}s), and verification of the C API
+ * argument and return value conversions (specified by {@link CApiBuiltin#argConversions()} and
+ * {@link CApiBuiltin#retConversion()}), and verification of the C API
* implementation in general.
*
* Apart from being placed on classes that implement {@link CApiBuiltinNode}, this annotation is
@@ -816,6 +825,23 @@ public boolean inherits(ABI candidate) {
ArgDescriptor[] args() default {};
+ /**
+ * Java-to-native return value conversion node class. A Java primitive class specifies
+ * pass-through conversion; {@code void.class} specifies no return value.
+ * Conversion node classes must provide public static no-argument {@code create()} and
+ * {@code getUncached()} methods returning an instance of the specified node class.
+ */
+ Class> retConversion() default long.class;
+
+ /**
+ * Native-to-Java argument conversion node classes, in the same order as {@link #args()}.
+ * A Java primitive class specifies pass-through conversion for that argument. The default
+ * is for signature-only declarations; builtin implementations must specify this explicitly.
+ * Conversion node classes must provide public static no-argument {@code create()} and
+ * {@code getUncached()} methods returning an instance of the specified node class.
+ */
+ Class>[] argConversions() default {};
+
/**
* This will generate a builtin with the name suffix "_Inlined" on the native side
* ({@code capi_forwards.h}), which can be useful if a builtin needs a different
@@ -851,7 +877,7 @@ public boolean inherits(ABI candidate) {
ABI[] abi() default {ABI.GRAALPY};
}
- @CApiBuiltin(ret = PyObjectRawPointer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = long.class, argConversions = {})
static long GraalPyPrivate_FileSystemDefaultEncoding() {
return PythonToNativeInternalNode.executeNewRefUncached(GetFileSystemEncodingNode.getFileSystemEncoding());
}
@@ -861,7 +887,7 @@ static long GraalPyPrivate_FileSystemDefaultEncoding() {
T_BUILTINS
};
- @CApiBuiltin(ret = PyTypeObjectRawPointer, args = {ConstCharPtr}, call = Ignored)
+ @CApiBuiltin(ret = PyTypeObject, args = {ConstCharPtr}, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_Type(long typeNamePtr) {
TruffleString typeName = (TruffleString) CharPtrToPythonNode.executeUncached(typeNamePtr);
Python3Core core = PythonContext.get(null).getCore();
@@ -879,7 +905,7 @@ static long GraalPyPrivate_Type(long typeNamePtr) {
throw PRaiseNode.raiseStatic(null, PythonErrorType.KeyError, ErrorMessages.APOSTROPHE_S, typeName);
}
- @CApiBuiltin(ret = Void, args = {PyTypeObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyTypeObject}, call = Ignored, retConversion = void.class, argConversions = {long.class})
@TruffleBoundary
static void GraalPyPrivate_AddInheritedSlots(long pythonClassPtr) {
/**
@@ -896,7 +922,7 @@ static void GraalPyPrivate_AddInheritedSlots(long pythonClassPtr) {
pythonClass.setTpSlots(TpSlots.fromNative(pythonClass, PythonContext.get(null)));
}
- @CApiBuiltin(ret = Void, args = {PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyTypeObject}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonClassNode.class})
public static void GraalPyPrivate_NotifyTypeReady(long pointer) {
CompilerAsserts.neverPartOfCompilation();
Object object = NativeToPythonInternalNode.executeUncached(pointer, false);
@@ -907,7 +933,8 @@ public static void GraalPyPrivate_NotifyTypeReady(long pointer) {
}
}
- @CApiBuiltin(ret = PyFrameObjectRawPointer, args = {PyThreadState, PyCodeObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyFrameObject, args = {PyThreadState, PyCodeObject, PyObject, PyObject}, call = Direct, retConversion = long.class, argConversions = {
+ long.class, long.class, long.class, long.class})
static long PyFrame_New(long threadState, long codePtr, long globalsPtr, long localsPtr) {
PCode code = (PCode) NativeToPythonInternalNode.executeUncached(codePtr, false);
PythonObject globals = (PythonObject) NativeToPythonInternalNode.executeUncached(globalsPtr, false);
@@ -917,7 +944,9 @@ static long PyFrame_New(long threadState, long codePtr, long globalsPtr, long lo
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.createPFrame(language, threadState, code, globals, frameLocals));
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {Pointer, PyObjectRawPointer, Py_ssize_t, Int, Py_ssize_t, ConstCharPtr, Int, Pointer, Pointer, Pointer, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, PyObject, Py_ssize_t, Int, Py_ssize_t, ConstCharPtr, Int, Pointer, Pointer, Pointer,
+ Pointer}, call = Ignored, retConversion = long.class, argConversions = {long.class, long.class, long.class, int.class, long.class, long.class, int.class, long.class, long.class,
+ long.class, long.class})
static long GraalPyPrivate_MemoryViewFromBuffer(long bufferStructPointer, long ownerPtr, long lenArg, int readonlyArg, long itemsizeArg, long formatPtr, int ndim, long bufPointer,
long shapePointer, long stridesPointer, long suboffsetsPointer) {
int itemsize = CastToJavaIntExactNode.executeUncached(itemsizeArg);
@@ -1010,26 +1039,26 @@ static PKeyword[] doKeywords(Node inliningTarget, Object kwargs,
}
}
- @CApiBuiltin(ret = SIZE_T, args = {}, call = Ignored)
+ @CApiBuiltin(ret = SIZE_T, args = {}, call = Ignored, retConversion = long.class, argConversions = {})
@TruffleBoundary
static long GraalPyPrivate_GetMaxNativeMemory() {
return PythonOptions.MaxNativeMemory.getValue(PythonContext.get(null).getEnv().getOptions());
}
- @CApiBuiltin(ret = SIZE_T, args = {}, call = Ignored)
+ @CApiBuiltin(ret = SIZE_T, args = {}, call = Ignored, retConversion = long.class, argConversions = {})
@TruffleBoundary
static long GraalPyPrivate_GetInitialNativeMemory() {
return PythonOptions.InitialNativeMemory.getValue(PythonContext.get(null).getEnv().getOptions());
}
// doesn't need a GIL; just accessing thread-local data
- @CApiBuiltin(ret = Int, args = {PyThreadState, SIZE_T}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = Int, args = {PyThreadState, SIZE_T}, call = Ignored, acquireGil = false, retConversion = int.class, argConversions = {long.class, long.class})
@TruffleBoundary
static int GraalPyPrivate_DeallocStack_Grow(long threadStatePointer, long newCapacity) {
return PThreadState.growDeallocatingStack(threadStatePointer, newCapacity);
}
- @CApiBuiltin(ret = Void, args = {SIZE_T}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {SIZE_T}, call = Ignored, retConversion = void.class, argConversions = {long.class})
@TruffleBoundary
static void GraalPyPrivate_TriggerGC(long delay) {
LOGGER.fine("full GC due to native memory");
@@ -1044,12 +1073,12 @@ static void GraalPyPrivate_TriggerGC(long delay) {
PythonContext.triggerAsyncActions(EncapsulatingNodeReference.getCurrent().get());
}
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
static void GraalPyPrivate_ManagedObject_GC_Del(long ptr) {
PyObjectGCDelNode.executeUncached(ptr);
}
- @CApiBuiltin(ret = Void, args = {UNSIGNED_INT, UINTPTR_T, SIZE_T}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {UNSIGNED_INT, UINTPTR_T, SIZE_T}, call = Ignored, retConversion = void.class, argConversions = {int.class, long.class, long.class})
@TruffleBoundary
static void GraalPyPrivate_TraceMalloc_Track(int domain, long ptrVal, long size) {
// this will also be called if the allocation failed
@@ -1058,18 +1087,18 @@ static void GraalPyPrivate_TraceMalloc_Track(int domain, long ptrVal, long size)
}
}
- @CApiBuiltin(ret = Void, args = {UNSIGNED_INT, UINTPTR_T}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {UNSIGNED_INT, UINTPTR_T}, call = Ignored, retConversion = void.class, argConversions = {int.class, long.class})
@TruffleBoundary
static void GraalPyPrivate_TraceMalloc_Untrack(int domain, long ptrVal) {
LOGGER.fine(() -> PythonUtils.formatJString("Untracking memory (domain: %d): %s", domain, CApiContext.asHex(ptrVal)));
}
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
static void GraalPyPrivate_Object_GC_UnTrack(long ptr) {
traceNativeGCObject(ptr, false);
}
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
static void GraalPyPrivate_Object_GC_Track(long ptr) {
traceNativeGCObject(ptr, true);
}
@@ -1121,7 +1150,7 @@ private static void traceNativeGCObject(long ptr, boolean track) {
*/
private static final Level REPLICATE_NATIVE_REFERENCES_LEVEL = Level.FINER;
- @CApiBuiltin(ret = Void, args = {Pointer, Pointer, Int}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer, Pointer, Int}, call = Ignored, retConversion = void.class, argConversions = {long.class, long.class, int.class})
static void GraalPyPrivate_Object_ReplicateNativeReferences(long lPointer, long listHead, int n) {
assert PythonLanguage.get(null).getEngineOption(PythonOptions.PythonGC);
@@ -1216,7 +1245,7 @@ private static boolean isListWithNativeStorage(Object object) {
* handle table references} of the denoted objects weak. This is used to break reference cycles
* that involve managed objects.
*/
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
static void GraalPyPrivate_Object_GC_EnsureWeak(long head) {
assert PythonContext.get(null).isNativeAccessAllowed();
assert PythonLanguage.get(null).getEngineOption(PythonOptions.PythonGC);
@@ -1274,7 +1303,7 @@ static void GraalPyPrivate_Object_GC_EnsureWeak(long head) {
}
}
- @CApiBuiltin(ret = Int, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {Pointer}, call = Ignored, retConversion = int.class, argConversions = {long.class})
static int GraalPyPrivate_IsReferencedFromManaged(long lPointer) {
assert PythonContext.get(null).isNativeAccessAllowed();
assert PythonLanguage.get(null).getEngineOption(PythonOptions.PythonGC);
@@ -1286,14 +1315,14 @@ static int GraalPyPrivate_IsReferencedFromManaged(long lPointer) {
return PInt.intValue(object != null);
}
- @CApiBuiltin(ret = Void, call = Ignored)
+ @CApiBuiltin(ret = Void, call = Ignored, retConversion = void.class, argConversions = {})
static void GraalPyPrivate_EnableReferenceQueuePolling() {
assert PythonLanguage.get(null).getEngineOption(PythonOptions.PythonGC);
HandleContext handleContext = PythonContext.get(null).handleContext;
CApiTransitions.enableReferenceQueuePolling(handleContext);
}
- @CApiBuiltin(ret = Int, call = Ignored)
+ @CApiBuiltin(ret = Int, call = Ignored, retConversion = int.class, argConversions = {})
static int GraalPyPrivate_DisableReferenceQueuePolling() {
assert PythonLanguage.get(null).getEngineOption(PythonOptions.PythonGC);
HandleContext handleContext = PythonContext.get(null).handleContext;
@@ -1327,7 +1356,7 @@ static int GraalPyPrivate_DisableReferenceQueuePolling() {
* generally fine. In practice, this means that options should either be marked
* with @EngineOption so they are sure to be the same, or that options differing is benign.
*/
- @CApiBuiltin(ret = Int, call = Ignored)
+ @CApiBuiltin(ret = Int, call = Ignored, retConversion = int.class, argConversions = {})
@TruffleBoundary
static int GraalPyPrivate_Native_Options() {
int options = 0;
@@ -1365,7 +1394,7 @@ static int GraalPyPrivate_Native_Options() {
return options;
}
- @CApiBuiltin(ret = Void, args = {Int, ConstCharPtr}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Int, ConstCharPtr}, call = Ignored, retConversion = void.class, argConversions = {int.class, long.class})
@TruffleBoundary
static void GraalPyPrivate_LogString(int level, long messagePtr) {
TruffleString message = (TruffleString) CharPtrToPythonNode.executeUncached(messagePtr);
@@ -1391,7 +1420,7 @@ static void GraalPyPrivate_LogString(int level, long messagePtr) {
}
}
- @CApiBuiltin(ret = Void, args = {}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {}, call = Direct, retConversion = void.class, argConversions = {})
@TruffleBoundary
static void GraalPyPrivate_DebugTrace() {
PythonContext context = PythonContext.get(null);
@@ -1418,14 +1447,14 @@ public Void visitFrame(FrameInstance frame) {
}
}
- @CApiBuiltin(ret = Int, args = {Pointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {Pointer}, call = Direct, retConversion = int.class, argConversions = {long.class})
@TruffleBoundary
static int GraalPyPrivate_Debug(long arg) {
DebugNode.tdebug(PythonContext.get(null), new Object[]{arg});
return 0;
}
- @CApiBuiltin(ret = Int, args = {Pointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {Pointer}, call = Direct, retConversion = int.class, argConversions = {long.class})
@TruffleBoundary
static int GraalPyPrivate_ToNative(@SuppressWarnings("unused") long object) {
PythonContext context = PythonContext.get(null);
@@ -1477,7 +1506,7 @@ static int GraalPyPrivate_ToNative(@SuppressWarnings("unused") long object) {
* }
*
*/
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
@TruffleBoundary
static void GraalPyPrivate_InitBuiltinTypesAndStructs(long builtinTypesArrayPointer) {
List builtinTypes = new LinkedList<>();
@@ -1519,7 +1548,7 @@ static void GraalPyPrivate_InitBuiltinTypesAndStructs(long builtinTypesArrayPoin
* these singletons may recursively create GC-tracked native wrappers, which are immediately
* linked into generation 0 and therefore require initialized generation list heads.
*/
- @CApiBuiltin(ret = Void, args = {Pointer, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer, Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class, long.class})
static void GraalPyPrivate_InitCharacterSingletons(long bytesCharactersAddr, long unicodeCharactersAddr) {
CApiContext cApiContext = PythonContext.get(null).getCApiContext();
assert cApiContext.getGCState() != NULLPTR;
@@ -1582,7 +1611,7 @@ private static PythonManagedClass lookupBuiltinTypeWithName(PythonContext contex
return clazz;
}
- @CApiBuiltin(ret = CHAR_PTR, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = CHAR_PTR, args = {PyObject}, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_GetMMapData(long objectPtr) {
PMMap object = (PMMap) NativeToPythonInternalNode.executeUncached(objectPtr, false);
PythonContext context = PythonContext.get(null);
@@ -1593,7 +1622,7 @@ static long GraalPyPrivate_GetMMapData(long objectPtr) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {long.class})
static int GraalPyPrivate_MMap_IsReadonly(long objectPtr) {
PMMap object = (PMMap) NativeToPythonInternalNode.executeUncached(objectPtr, false);
return object.isWriteable() ? 0 : 1;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextByteArrayBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextByteArrayBuiltins.java
index 5fad4c1e0c..f8ad31c8cc 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextByteArrayBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextByteArrayBuiltins.java
@@ -40,9 +40,9 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.getFieldPtr;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
@@ -60,7 +60,7 @@
public final class PythonCextByteArrayBuiltins {
- @CApiBuiltin(ret = CHAR_PTR, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = CHAR_PTR, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyByteArray_AsString(long bytesPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(bytesPtr, false);
if (obj instanceof PByteArray bytes) {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBytesBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBytesBuiltins.java
index 2932059be8..28241cdf71 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBytesBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBytesBuiltins.java
@@ -40,25 +40,23 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IndexError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.getByteArray;
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyVarObject__ob_size;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.getFieldPtr;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.readLongField;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
@@ -72,9 +70,11 @@
import com.oracle.graal.python.builtins.objects.bytes.PBytesLike;
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.structs.CFields;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemScalarNode;
import com.oracle.graal.python.builtins.objects.ints.PInt;
@@ -107,7 +107,7 @@ public final class PythonCextBytesBuiltins {
/*
* Moving this to native regresses median time by about 1.84x, so leaving it here.
*/
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyBytes_Size(long objPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(objPtr, false);
if (obj instanceof PBytes bytes) {
@@ -119,7 +119,7 @@ static long PyBytes_Size(long objPtr) {
throw PRaiseNode.raiseStatic(null, TypeError, ErrorMessages.EXPECTED_BYTES_P_FOUND, obj);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Ignored, retConversion = long.class, argConversions = {long.class, long.class})
static long GraalPyPrivate_Bytes_Concat(long originalPtr, long newPartPtr) {
Object original = NativeToPythonInternalNode.executeUncached(originalPtr, false);
Object newPart = NativeToPythonInternalNode.executeUncached(newPartPtr, false);
@@ -128,7 +128,8 @@ static long GraalPyPrivate_Bytes_Concat(long originalPtr, long newPartPtr) {
}
// TODO(CAPI STATIC): uses nodes without @GenerateUncached
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class _PyBytes_Join extends CApiBinaryBuiltinNode {
@Specialization
static Object join(Object original, Object newPart,
@@ -138,7 +139,8 @@ static Object join(Object original, Object newPart,
}
// TODO(CAPI STATIC): uses nodes without @GenerateUncached
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class GraalPyPrivate_Bytes_FromFormat extends CApiBinaryBuiltinNode {
@Specialization
static Object fromFormat(TruffleString fmt, Object args,
@@ -150,7 +152,7 @@ static Object fromFormat(TruffleString fmt, Object args,
}
// TODO(CAPI STATIC): uses nodes without @GenerateUncached
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyBytes_FromObject extends CApiUnaryBuiltinNode {
@Specialization(guards = "isBuiltinBytes(bytes)")
static Object bytes(PBytes bytes) {
@@ -166,7 +168,7 @@ static Object fromObject(Object obj,
}
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ConstCharPtr, Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = Ignored, retConversion = long.class, argConversions = {long.class, long.class})
static long GraalPyPrivate_Bytes_FromStringAndSize(long nativePointer, long size) {
try {
byte[] bytes = getByteArray(nativePointer, size);
@@ -177,7 +179,7 @@ static long GraalPyPrivate_Bytes_FromStringAndSize(long nativePointer, long size
}
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ConstCharPtr, Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = Ignored, retConversion = long.class, argConversions = {long.class, long.class})
static long GraalPyPrivate_ByteArray_FromStringAndSize(long nativePointer, long size) {
try {
byte[] bytes = getByteArray(nativePointer, size);
@@ -188,8 +190,8 @@ static long GraalPyPrivate_ByteArray_FromStringAndSize(long nativePointer, long
}
}
- @CApiBuiltin(name = "PyByteArray_Resize", ret = Int, args = {PyObjectRawPointer, Py_ssize_t}, call = Direct)
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(name = "PyByteArray_Resize", ret = Int, args = {PyObject, Py_ssize_t}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
+ @CApiBuiltin(ret = Int, args = {PyObject, Py_ssize_t}, call = Ignored, retConversion = int.class, argConversions = {long.class, long.class})
static int GraalPyPrivate_Bytes_Resize(long selfPtr, long newSizeL) {
Object self = NativeToPythonInternalNode.executeUncached(selfPtr, false);
if (CompilerDirectives.injectBranchProbability(CompilerDirectives.SLOWPATH_PROBABILITY, !(self instanceof PBytesLike))) {
@@ -208,7 +210,7 @@ static int GraalPyPrivate_Bytes_Resize(long selfPtr, long newSizeL) {
return 0;
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ArgDescriptor.Long}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ArgDescriptor.Long}, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_Bytes_EmptyWithCapacity(long size) {
try {
Object result = PFactory.createBytes(PythonLanguage.get(null), new byte[PInt.intValueExact(size)]);
@@ -218,12 +220,12 @@ static long GraalPyPrivate_Bytes_EmptyWithCapacity(long size) {
}
}
- @CApiBuiltin(ret = PyObjectRawPointer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = long.class, argConversions = {})
static long GraalPyPrivate_Bytes_Empty() {
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.createEmptyBytes(PythonLanguage.get(null)));
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Py_ssize_t}, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_ByteArray_EmptyWithCapacity(long size) {
try {
Object result = PFactory.createByteArray(PythonLanguage.get(null), new byte[PInt.intValueExact(size)]);
@@ -233,7 +235,7 @@ static long GraalPyPrivate_ByteArray_EmptyWithCapacity(long size) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer}, call = CApiCallPath.Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = CApiCallPath.Ignored, retConversion = int.class, argConversions = {long.class})
static int GraalPyPrivate_Bytes_CheckEmbeddedNull(long bytesPtr) {
Object bytes = NativeToPythonInternalNode.executeUncached(bytesPtr, false);
SequenceStorage sequenceStorage = GetBytesStorage.executeUncached(bytes);
@@ -250,7 +252,7 @@ static int GraalPyPrivate_Bytes_CheckEmbeddedNull(long bytesPtr) {
return 0;
}
- @CApiBuiltin(ret = CHAR_PTR, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = CHAR_PTR, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyBytes_AsString(long bytesPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(bytesPtr, false);
if (obj instanceof PBytes bytes) {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCEvalBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCEvalBuiltins.java
index ba9df964e7..b6b9dbc7d1 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCEvalBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCEvalBuiltins.java
@@ -40,16 +40,15 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFrameObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectConstPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectConstPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import com.oracle.graal.python.PythonLanguage;
@@ -94,7 +93,7 @@
public final class PythonCextCEvalBuiltins {
private static final TruffleLogger LOGGER = CApiContext.getLogger(PythonCextCEvalBuiltins.class);
- @CApiBuiltin(ret = PyThreadState, args = {}, acquireGil = false, call = Direct)
+ @CApiBuiltin(ret = PyThreadState, args = {}, acquireGil = false, call = Direct, retConversion = long.class, argConversions = {})
static long PyEval_SaveThread() {
PythonContext context = PythonContext.get(null);
long threadState = context.getThreadState(context.getLanguage()).getNativePointer();
@@ -104,7 +103,7 @@ static long PyEval_SaveThread() {
return threadState;
}
- @CApiBuiltin(ret = Void, args = {PyThreadState}, acquireGil = false, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyThreadState}, acquireGil = false, call = Direct, retConversion = void.class, argConversions = {long.class})
static void PyEval_RestoreThread(@SuppressWarnings("unused") long ptr) {
PythonContext context = PythonContext.get(null);
/*
@@ -116,27 +115,28 @@ static void PyEval_RestoreThread(@SuppressWarnings("unused") long ptr) {
GilNode.getUncached().acquire(context, null);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {})
static long PyEval_GetBuiltins() {
PythonModule cext = PythonContext.get(null).getBuiltins();
return ToNativeBorrowedNode.executeUncached(GetDictIfExistsNode.getUncached().execute(cext));
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = long.class, argConversions = {})
static long PyEval_GetFrameBuiltins() {
PythonModule builtins = PythonContext.get(null).getBuiltins();
Object dict = GetDictIfExistsNode.getUncached().execute(builtins);
return PythonToNativeInternalNode.executeNewRefUncached(dict);
}
- @CApiBuiltin(ret = PyFrameObjectBorrowed, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyFrameObject, args = {}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {})
static long PyEval_GetFrame() {
PFrame pFrame = ReadFrameNode.getUncached().getCurrentPythonFrame(null);
return pFrame != null ? ToNativeBorrowedNode.executeUncached(pFrame) : NULLPTR;
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer, PyObjectConstPtr, Int, PyObjectConstPtr, Int, PyObjectConstPtr, Int,
- PyObjectRawPointer, PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject, PyObjectConstPtr, Int, PyObjectConstPtr, Int, PyObjectConstPtr, Int,
+ PyObject, PyObject}, call = Ignored, retConversion = long.class, argConversions = {long.class, long.class, long.class, long.class, int.class, long.class,
+ int.class, long.class, int.class, long.class, long.class})
static long GraalPyPrivate_Eval_EvalCodeEx(long codePtr, long globalsPtr, long localsPtr,
long argumentArrayPtr, int argumentCount, long kwsPtr, int kwsCount, long defaultValueArrayPtr, int defaultValueCount,
long kwdefaultsWrapperPtr, long closureObjPtr) {
@@ -180,13 +180,13 @@ static long GraalPyPrivate_Eval_EvalCodeEx(long codePtr, long globalsPtr, long l
return PythonToNativeInternalNode.executeNewRefUncached(result);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {})
static long PyEval_GetGlobals() {
PythonObject globals = PyEvalGetGlobals.executeUncached(null);
return globals != null ? ToNativeBorrowedNode.executeUncached(globals) : NULLPTR;
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {})
static long PyEval_GetLocals() {
PFrame frame = ReadFrameNode.getUncached().getCurrentPythonFrame(null, CallerFlags.NEEDS_LOCALS);
if (frame == null) {
@@ -207,13 +207,13 @@ static long PyEval_GetLocals() {
return ToNativeBorrowedNode.executeUncached(localsCache);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = long.class, argConversions = {})
static long PyEval_GetFrameGlobals() {
PythonObject globals = PyEvalGetGlobals.executeUncached(null);
return globals != null ? PythonToNativeInternalNode.executeNewRefUncached(globals) : NULLPTR;
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = long.class, argConversions = {})
static long PyEval_GetFrameLocals() {
PFrame frame = ReadFrameNode.getUncached().getCurrentPythonFrame(null, CallerFlags.NEEDS_LOCALS);
if (frame == null) {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCapsuleBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCapsuleBuiltins.java
index 7219847e73..8e2ddcd4f9 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCapsuleBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCapsuleBuiltins.java
@@ -40,14 +40,14 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_CAPSULE_DESTRUCTOR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.AttributeError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.ValueError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_CAPSULE_DESTRUCTOR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.readByteArrayElement;
import static com.oracle.graal.python.nodes.ErrorMessages.CALLED_WITH_INCORRECT_NAME;
@@ -82,7 +82,7 @@
public final class PythonCextCapsuleBuiltins {
- @CApiBuiltin(ret = PyObjectRawPointer, args = {Pointer, ConstCharPtr, PY_CAPSULE_DESTRUCTOR}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, ConstCharPtr, PY_CAPSULE_DESTRUCTOR}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class, long.class})
static long PyCapsule_New(long pointer, long namePtr, long destructor) {
PyCapsule capsule = PyCapsuleNewNode.executeUncached(pointer, namePtr, destructor);
return PythonToNativeInternalNode.executeNewRefUncached(capsule);
@@ -115,7 +115,7 @@ static PyCapsule doGeneric(Node inliningTarget, long pointer, long namePtr, long
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, ConstCharPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
static int PyCapsule_IsValid(long oPtr, long namePtr) {
Object obj = NativeToPythonInternalNode.executeUncached(oPtr, false);
if (!(obj instanceof PyCapsule capsule)) {
@@ -130,7 +130,7 @@ static int PyCapsule_IsValid(long oPtr, long namePtr) {
return 1;
}
- @CApiBuiltin(ret = Pointer, args = {PyObjectRawPointer, ConstCharPtr}, call = Direct)
+ @CApiBuiltin(ret = Pointer, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class})
static long PyCapsule_GetPointer(long oPtr, long namePtr) {
Object capsule = NativeToPythonInternalNode.executeUncached(oPtr, false);
return PyCapsuleGetPointerNode.executeUncached(capsule, namePtr);
@@ -170,25 +170,25 @@ static long doError(Node inliningTarget, @SuppressWarnings("unused") Object o, @
}
}
- @CApiBuiltin(ret = ConstCharPtr, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = ConstCharPtr, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyCapsule_GetName(long oPtr) {
PyCapsule capsule = expectCapsule(oPtr, "PyCapsule_GetName");
return capsule.getNamePtr();
}
- @CApiBuiltin(ret = PY_CAPSULE_DESTRUCTOR, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PY_CAPSULE_DESTRUCTOR, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyCapsule_GetDestructor(long oPtr) {
PyCapsule capsule = expectCapsule(oPtr, "PyCapsule_GetDestructor");
return capsule.getDestructor();
}
- @CApiBuiltin(ret = Pointer, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Pointer, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyCapsule_GetContext(long oPtr) {
PyCapsule capsule = expectCapsule(oPtr, "PyCapsule_GetContext");
return capsule.getContext();
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, Pointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, Pointer}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
static int PyCapsule_SetPointer(long oPtr, long pointer) {
if (pointer == NULLPTR) {
throw PRaiseNode.raiseStatic(null, ValueError, CALLED_WITH_NULL_POINTER, "PyCapsule_SetPointer");
@@ -198,28 +198,28 @@ static int PyCapsule_SetPointer(long oPtr, long pointer) {
return 0;
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, ConstCharPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
static int PyCapsule_SetName(long oPtr, long namePtr) {
PyCapsule capsule = expectCapsule(oPtr, "PyCapsule_SetName");
capsule.setNamePtr(namePtr);
return 0;
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, PY_CAPSULE_DESTRUCTOR}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PY_CAPSULE_DESTRUCTOR}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
static int PyCapsule_SetDestructor(long oPtr, long destructor) {
PyCapsule capsule = expectCapsule(oPtr, "PyCapsule_SetDestructor");
capsule.registerDestructor(destructor);
return 0;
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, Pointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, Pointer}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
static int PyCapsule_SetContext(long oPtr, long context) {
PyCapsule capsule = expectCapsule(oPtr, "PyCapsule_SetContext");
capsule.setContext(context);
return 0;
}
- @CApiBuiltin(ret = Pointer, args = {ConstCharPtr, Int}, call = Direct)
+ @CApiBuiltin(ret = Pointer, args = {ConstCharPtr, Int}, call = Direct, retConversion = long.class, argConversions = {long.class, int.class})
static long PyCapsule_Import(long namePtr, @SuppressWarnings("unused") int noBlock) {
TruffleString name = FromCharPointerNode.executeUncached(namePtr, true);
TruffleString trace = name;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextClassBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextClassBuiltins.java
index 37ba4ef181..db66285c86 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextClassBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextClassBuiltins.java
@@ -40,9 +40,9 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltinNode.checkNonNullArgUncached;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
import com.oracle.graal.python.PythonLanguage;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
@@ -53,7 +53,7 @@
public final class PythonCextClassBuiltins {
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyInstanceMethod_New(long funcPtr) {
Object func = NativeToPythonInternalNode.executeUncached(funcPtr, false);
checkNonNullArgUncached(func);
@@ -62,7 +62,7 @@ static long PyInstanceMethod_New(long funcPtr) {
return PythonToNativeInternalNode.executeNewRefUncached(res);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class})
static long PyMethod_New(long funcPtr, long selfPtr) {
Object func = NativeToPythonInternalNode.executeUncached(funcPtr, false);
Object self = NativeToPythonInternalNode.executeUncached(selfPtr, false);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodeBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodeBuiltins.java
index b42bd711a7..edb669563d 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodeBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodeBuiltins.java
@@ -40,12 +40,12 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCodeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCodeObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.util.PythonUtils.EMPTY_BYTE_ARRAY;
import static com.oracle.graal.python.util.PythonUtils.EMPTY_OBJECT_ARRAY;
import static com.oracle.graal.python.util.PythonUtils.EMPTY_TRUFFLESTRING_ARRAY;
@@ -62,20 +62,22 @@
public final class PythonCextCodeBuiltins {
- @CApiBuiltin(ret = Py_ssize_t, args = {PyCodeObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyCodeObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long GraalPyCode_GetNumFree(long codePtr) {
PCode code = (PCode) NativeToPythonInternalNode.executeUncached(codePtr, false);
return code.getFreeVars().length;
}
- @CApiBuiltin(ret = Int, args = {PyCodeObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyCodeObject}, call = Direct, retConversion = int.class, argConversions = {long.class})
static int GraalPyCode_GetFirstFree(long codePtr) {
PCode code = (PCode) NativeToPythonInternalNode.executeUncached(codePtr, false);
return code.getVarnames().length + code.getCellVars().length;
}
- @CApiBuiltin(ret = PyCodeObjectRawPointer, args = {Int, Int, Int, Int, Int, Int, PyObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer,
- PyObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer, PyObjectRawPointer, Int, PyObjectRawPointer, PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyCodeObject, args = {Int, Int, Int, Int, Int, Int, PyObject, PyObject, PyObject, PyObject, PyObject,
+ PyObject, PyObject, PyObject, PyObject, Int, PyObject,
+ PyObject}, call = Direct, retConversion = long.class, argConversions = {int.class, int.class, int.class, int.class, int.class, int.class, long.class, long.class,
+ long.class, long.class, long.class, long.class, long.class, long.class, long.class, int.class, long.class, long.class})
static long PyUnstable_Code_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags, long codePtr, long constsPtr,
long namesPtr, long varnamesPtr, long freevarsPtr, long cellvarsPtr,
long filenamePtr, long namePtr, long qualnamePtr,
@@ -106,14 +108,14 @@ static long PyUnstable_Code_NewWithPosOnlyArgs(int argcount, int posonlyargcount
return PythonToNativeInternalNode.executeNewRefUncached(CallNode.executeUncached(PythonBuiltinClassType.PCode, args));
}
- @CApiBuiltin(ret = PyCodeObjectRawPointer, args = {ConstCharPtr, ConstCharPtr, Int}, call = Direct)
+ @CApiBuiltin(ret = PyCodeObject, args = {ConstCharPtr, ConstCharPtr, Int}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class, int.class})
static long PyCode_NewEmpty(long filenamePtr, long funcnamePtr, int lineno) {
TruffleString filename = (TruffleString) CharPtrToPythonNode.executeUncached(filenamePtr);
TruffleString funcname = (TruffleString) CharPtrToPythonNode.executeUncached(funcnamePtr);
return PythonToNativeInternalNode.executeNewRefUncached(createCodeNewEmpty(filename, funcname, lineno));
}
- @CApiBuiltin(ret = Int, args = {PyCodeObjectRawPointer, Int}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyCodeObject, Int}, call = Direct, retConversion = int.class, argConversions = {long.class, int.class})
static int PyCode_Addr2Line(long codePtr, int lasti) {
PCode code = (PCode) NativeToPythonInternalNode.executeUncached(codePtr, false);
if (lasti < 0) {
@@ -122,13 +124,13 @@ static int PyCode_Addr2Line(long codePtr, int lasti) {
return code.lastiToLine(lasti);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyCodeObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyCodeObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long GraalPyCode_GetName(long codePtr) {
PCode code = (PCode) NativeToPythonInternalNode.executeUncached(codePtr, false);
return PythonToNativeInternalNode.executeNewRefUncached(code.getName());
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyCodeObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyCodeObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long GraalPyCode_GetFileName(long codePtr) {
PCode code = (PCode) NativeToPythonInternalNode.executeUncached(codePtr, false);
return PythonToNativeInternalNode.executeNewRefUncached(code.getFilename());
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodecBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodecBuiltins.java
index 0f1ad26316..855b0809fa 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodecBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextCodecBuiltins.java
@@ -40,9 +40,9 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
import com.oracle.graal.python.builtins.modules.CodecsModuleBuiltins;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
@@ -54,14 +54,14 @@
public final class PythonCextCodecBuiltins {
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ConstCharPtr}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyCodec_Encoder(long encodingPtr) {
TruffleString encoding = (TruffleString) CharPtrToPythonNode.executeUncached(encodingPtr);
PTuple codecInfo = CodecsModuleBuiltins.PyCodecLookupNode.executeUncached(encoding);
return PythonToNativeInternalNode.executeNewRefUncached(SequenceStorageNodes.GetItemScalarNode.executeUncached(codecInfo.getSequenceStorage(), 0));
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ConstCharPtr}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyCodec_Decoder(long encodingPtr) {
TruffleString encoding = (TruffleString) CharPtrToPythonNode.executeUncached(encodingPtr);
PTuple codecInfo = CodecsModuleBuiltins.PyCodecLookupNode.executeUncached(encoding);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextComplexBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextComplexBuiltins.java
index 95f0dc0fa0..51297b6bcb 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextComplexBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextComplexBuiltins.java
@@ -40,17 +40,17 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.writeDoubleField;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.objects.PNone;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
import com.oracle.graal.python.builtins.objects.cext.structs.CFields;
@@ -63,7 +63,7 @@
public final class PythonCextComplexBuiltins {
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, Pointer}, call = Ignored, retConversion = int.class, argConversions = {long.class, long.class})
static int GraalPyPrivate_Complex_AsCComplex(long objPtr, long out) {
Object obj = NativeToPythonInternalNode.executeUncached(objPtr, false);
double real, imag;
@@ -87,7 +87,7 @@ static int GraalPyPrivate_Complex_AsCComplex(long objPtr, long out) {
return 0;
}
- @CApiBuiltin(ret = ArgDescriptor.Double, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Double, args = {PyObject}, call = Ignored, retConversion = double.class, argConversions = {long.class})
static double GraalPyPrivate_Complex_RealAsDouble(long objPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(objPtr, false);
if (PyComplexCheckNode.executeUncached(obj)) {
@@ -101,7 +101,7 @@ static double GraalPyPrivate_Complex_RealAsDouble(long objPtr) {
}
}
- @CApiBuiltin(ret = ArgDescriptor.Double, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Double, args = {PyObject}, call = Ignored, retConversion = double.class, argConversions = {long.class})
static double GraalPyPrivate_Complex_ImagAsDouble(long objPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(objPtr, false);
if (PyComplexCheckNode.executeUncached(obj)) {
@@ -115,7 +115,7 @@ static double GraalPyPrivate_Complex_ImagAsDouble(long objPtr) {
return 0.0;
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ArgDescriptor.Double, ArgDescriptor.Double}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ArgDescriptor.Double, ArgDescriptor.Double}, call = Direct, retConversion = long.class, argConversions = {double.class, double.class})
static long PyComplex_FromDoubles(double r, double i) {
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.createComplex(PythonLanguage.get(null), r, i));
}
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextContextBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextContextBuiltins.java
index a014712426..a8613db102 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextContextBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextContextBuiltins.java
@@ -40,13 +40,13 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VoidNoReturn;
import static com.oracle.graal.python.runtime.exception.ExceptionUtils.printPythonLikeStackTrace;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
@@ -72,13 +72,13 @@
public final class PythonCextContextBuiltins {
- @CApiBuiltin(ret = VoidNoReturn, args = {}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {}, call = Ignored, retConversion = void.class, argConversions = {})
@TruffleBoundary
static void GraalPyPrivate_PrintStacktrace() {
printPythonLikeStackTrace();
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ConstCharPtr, PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class})
static long PyContextVar_New(long namePtr, long defPtr) {
if (namePtr == NULLPTR) {
return NULLPTR;
@@ -88,7 +88,7 @@ static long PyContextVar_New(long namePtr, long defPtr) {
return PythonToNativeInternalNode.executeNewRefUncached(CallNode.executeUncached(PythonBuiltinClassType.ContextVar, name, def));
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, Pointer}, call = Ignored, retConversion = long.class, argConversions = {long.class, long.class, long.class})
static long GraalPyPrivate_ContextVar_Get(long varPtr, long defPtr, long marker) {
Object var = NativeToPythonInternalNode.executeUncached(varPtr, false);
if (!(var instanceof PContextVar pvar)) {
@@ -107,7 +107,7 @@ static long GraalPyPrivate_ContextVar_Get(long varPtr, long defPtr, long marker)
return PythonToNativeInternalNode.executeNewRefUncached(result);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class})
static long PyContextVar_Set(long varPtr, long valPtr) {
Object var = NativeToPythonInternalNode.executeUncached(varPtr, false);
Object val = NativeToPythonInternalNode.executeUncached(valPtr, false);
@@ -122,7 +122,7 @@ static long PyContextVar_Set(long varPtr, long valPtr) {
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.createContextVarsToken(language, pvar, threadState.getContextVarsContext(null), oldValue));
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class})
static int PyContextVar_Reset(long varPtr, long tokenPtr) {
Object var = NativeToPythonInternalNode.executeUncached(varPtr, false);
if (!(var instanceof PContextVar pvar)) {
@@ -138,23 +138,23 @@ static int PyContextVar_Reset(long varPtr, long tokenPtr) {
return 0;
}
- @CApiBuiltin(ret = PyObjectRawPointer, call = Direct)
+ @CApiBuiltin(ret = PyObject, call = Direct, retConversion = long.class, argConversions = {})
static long PyContext_CopyCurrent() {
return PythonToNativeInternalNode.executeNewRefUncached(PyContextCopyCurrent.executeUncached());
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyContext_Copy(long contextPtr) {
PContextVarsContext context = (PContextVarsContext) NativeToPythonInternalNode.executeUncached(contextPtr, false);
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.copyContextVarsContext(PythonLanguage.get(null), context));
}
- @CApiBuiltin(ret = PyObjectRawPointer, call = Direct)
+ @CApiBuiltin(ret = PyObject, call = Direct, retConversion = long.class, argConversions = {})
static long PyContext_New() {
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.createContextVarsContext(PythonLanguage.get(null)));
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {long.class})
static int PyContext_Enter(long contextPtr) {
PContextVarsContext context = (PContextVarsContext) NativeToPythonInternalNode.executeUncached(contextPtr, false);
PythonContext pythonContext = PythonContext.get(null);
@@ -163,7 +163,7 @@ static int PyContext_Enter(long contextPtr) {
return 0;
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {long.class})
static int PyContext_Exit(long contextPtr) {
PContextVarsContext context = (PContextVarsContext) NativeToPythonInternalNode.executeUncached(contextPtr, false);
PythonContext pythonContext = PythonContext.get(null);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDateTimeBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDateTimeBuiltins.java
index a09fe92ae2..ded4d9db0a 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDateTimeBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDateTimeBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2020, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,15 +40,13 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
import static com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeCAPIWrapper.T_FOLD;
import static com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeCAPIWrapper.T_FROMTIMESTAMP;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApi10BuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApi5BuiltinNode;
@@ -60,7 +58,11 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiQuaternaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
import com.oracle.graal.python.builtins.objects.cext.capi.PyDateTimeCAPIWrapper;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.function.PKeyword;
import com.oracle.graal.python.lib.PyNumberAsSizeNode;
import com.oracle.graal.python.lib.PyObjectGetAttr;
@@ -78,7 +80,8 @@
*/
public final class PythonCextDateTimeBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {Int, Int, Int, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Int, Int, Int, PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {int.class, int.class, int.class,
+ NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_Date_FromDate extends CApiQuaternaryBuiltinNode {
@Specialization
static Object values(int year, int month, int day, Object type,
@@ -87,7 +90,8 @@ static Object values(int year, int month, int day, Object type,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Int, Int, Int, Int, Int, Int, Int, PyObject, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Int, Int, Int, Int, Int, Int, Int, PyObject, PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ int.class, int.class, int.class, int.class, int.class, int.class, int.class, NativeToPythonNode.class, NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_DateTime_FromDateAndTime extends CApi9BuiltinNode {
@Specialization
static Object values(int year, int month, int day, int hour, int minute, int second, int usecond, Object tzinfo, Object type,
@@ -96,7 +100,8 @@ static Object values(int year, int month, int day, int hour, int minute, int sec
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Int, Int, Int, Int, PyObject, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Int, Int, Int, Int, PyObject, PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {int.class, int.class,
+ int.class, int.class, NativeToPythonNode.class, NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_Time_FromTime extends CApi6BuiltinNode {
@Specialization
static Object values(int hour, int minute, int second, int usecond, Object tzinfo, Object type,
@@ -105,7 +110,8 @@ static Object values(int hour, int minute, int second, int usecond, Object tzinf
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Int, Int, Int, Int, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Int, Int, Int, Int, PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {int.class, int.class, int.class,
+ int.class, NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_Delta_FromDelta extends CApi5BuiltinNode {
@Specialization
static Object values(int days, int seconds, int useconds, @SuppressWarnings("unused") int normalize, Object type,
@@ -115,7 +121,8 @@ static Object values(int days, int seconds, int useconds, @SuppressWarnings("unu
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_TimeZone_FromTimeZone extends CApiBinaryBuiltinNode {
@Specialization
Object values(Object offset, Object name,
@@ -124,7 +131,8 @@ Object values(Object offset, Object name,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_DateTime_FromTimestamp extends CApiTernaryBuiltinNode {
@Specialization
static Object values(Object type, Object args, Object kwargs,
@@ -140,7 +148,8 @@ static Object values(Object type, Object args, Object kwargs,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_Date_FromTimestamp extends CApiBinaryBuiltinNode {
@Specialization
static Object values(Object type, Object args,
@@ -154,7 +163,8 @@ static Object values(Object type, Object args,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Int, Int, Int, Int, Int, Int, Int, PyObject, Int, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Int, Int, Int, Int, Int, Int, Int, PyObject, Int, PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ int.class, int.class, int.class, int.class, int.class, int.class, int.class, NativeToPythonNode.class, int.class, NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_DateTime_FromDateAndTimeAndFold extends CApi10BuiltinNode {
@Specialization
static Object values(int year, int month, int day, int hour, int minute, int second, int usecond, Object tzinfo, int fold, Object type,
@@ -163,7 +173,8 @@ static Object values(int year, int month, int day, int hour, int minute, int sec
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Int, Int, Int, Int, PyObject, Int, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Int, Int, Int, Int, PyObject, Int, PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {int.class,
+ int.class, int.class, int.class, NativeToPythonNode.class, int.class, NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_DateTimeCAPI_Time_FromTimeAndFold extends CApi7BuiltinNode {
@Specialization
static Object values(int hour, int minute, int second, int usecond, Object tzinfo, int fold, Object type,
@@ -172,7 +183,7 @@ static Object values(int hour, int minute, int second, int usecond, Object tzinf
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_GET_YEAR extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -183,7 +194,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_GET_MONTH extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -194,7 +205,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_GET_DAY extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -205,7 +216,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DATE_GET_HOUR extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -216,7 +227,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DATE_GET_MINUTE extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -227,7 +238,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DATE_GET_SECOND extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -238,7 +249,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DATE_GET_MICROSECOND extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -249,7 +260,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DATE_GET_FOLD extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -260,7 +271,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DATE_GET_TZINFO extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -270,7 +281,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_TIME_GET_HOUR extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -281,7 +292,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_TIME_GET_MINUTE extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -292,7 +303,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_TIME_GET_SECOND extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -303,7 +314,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_TIME_GET_MICROSECOND extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -314,7 +325,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_TIME_GET_FOLD extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -325,7 +336,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_TIME_GET_TZINFO extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -335,7 +346,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DELTA_GET_DAYS extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -346,7 +357,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DELTA_GET_SECONDS extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
@@ -357,7 +368,7 @@ static Object get(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyDateTime_DELTA_GET_MICROSECONDS extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object obj,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDescrBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDescrBuiltins.java
index f16fb9fae2..49c057651c 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDescrBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDescrBuiltins.java
@@ -40,14 +40,13 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
import static com.oracle.graal.python.nodes.HiddenAttr.METHOD_DEF_PTR;
import static com.oracle.graal.python.nodes.SpecialAttributeNames.T___NAME__;
@@ -61,7 +60,10 @@
import com.oracle.graal.python.builtins.objects.cext.capi.MethodDescriptorWrapper;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
import com.oracle.graal.python.builtins.objects.mappingproxy.MappingproxyBuiltins;
import com.oracle.graal.python.builtins.objects.method.PDecoratedMethod;
@@ -75,7 +77,7 @@
public final class PythonCextDescrBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyDictProxy_New extends CApiUnaryBuiltinNode {
@Specialization
static Object values(Object obj,
@@ -84,7 +86,9 @@ static Object values(Object obj,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, PyTypeObject, Pointer, Pointer, ConstCharPtrAsTruffleString, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, PyTypeObject, Pointer, Pointer, ConstCharPtr,
+ Pointer}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class, NativeToPythonClassNode.class, long.class, long.class,
+ CharPtrToPythonNode.class, long.class})
abstract static class GraalPyPrivate_Descr_NewGetSet extends CApi6BuiltinNode {
@Specialization
@@ -94,7 +98,9 @@ static Object doNativeCallable(TruffleString name, Object cls, long getter, long
}
/** Implementation of {@code PyDescr_NewClassMethod}. */
- @CApiBuiltin(ret = PyObjectTransfer, args = {Pointer, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int, Pointer, PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, ConstCharPtr, ConstCharPtr, Int, Pointer,
+ PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, CharPtrToPythonNode.class, CharPtrToPythonNode.class, int.class,
+ long.class, NativeToPythonClassNode.class})
public static long GraalPyPrivate_Descr_NewClassMethod(long methodDefPtr, long nameRaw, long docRaw, int flags, long methPtr, long typeRaw) {
CompilerAsserts.neverPartOfCompilation();
PythonLanguage language = PythonLanguage.get(null);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDictBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDictBuiltins.java
index bcaf6b1404..db20b45a2c 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDictBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDictBuiltins.java
@@ -40,24 +40,20 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_HASH_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_SSIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_hash_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltinNode.checkNonNullArgUncached;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleStringStrict;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_HASH_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_SSIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_hash_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.nodes.ErrorMessages.BAD_ARG_TO_INTERNAL_FUNC;
import static com.oracle.graal.python.nodes.ErrorMessages.HASH_MISMATCH;
import static com.oracle.graal.python.nodes.SpecialMethodNames.T_KEYS;
@@ -79,7 +75,10 @@
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.capi.CApiContext;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonStrictNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.GcNativePtrToPythonNode;
@@ -156,13 +155,13 @@ public final class PythonCextDictBuiltins {
private static final CApiTiming TIMING_PYDICT_NEW = CApiTiming.create(false, "PyDict_New");
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class})
static long GraalPyDict_GET_SIZE(long dictPtr) {
PDict dict = (PDict) NativeToPythonInternalNode.executeUncached(dictPtr, false);
return HashingStorageLen.executeUncached(dict.getDictStorage());
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {}, call = Direct, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, acquireGil = false, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
static long PyDict_New() {
CApiTiming.enter();
try {
@@ -174,7 +173,7 @@ static long PyDict_New() {
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, PyObjectRawPointer, PyObjectPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = Direct, retConversion = int.class, argConversions = {long.class, long.class, long.class})
static int PyDict_Pop(long dictPtr, long keyPtr, long resultPtr) {
long result = NULLPTR;
try {
@@ -200,7 +199,8 @@ static int PyDict_Pop(long dictPtr, long keyPtr, long resultPtr) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PY_SSIZE_T_PTR, PyObjectPtr, PyObjectPtr, PY_HASH_T_PTR}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PY_SSIZE_T_PTR, PyObjectPtr, PyObjectPtr, PY_HASH_T_PTR}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class,
+ long.class, long.class, long.class, long.class})
abstract static class _PyDict_Next extends CApi5BuiltinNode {
@Specialization
@@ -319,7 +319,8 @@ static int run(Object dict, Object posPtr, Object keyPtr, Object valuePtr, Objec
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class _PyDict_Pop extends CApiTernaryBuiltinNode {
@Specialization
static Object pop(PDict dict, Object key, Object defaultValue,
@@ -333,7 +334,7 @@ public Object fallback(Object dict, @SuppressWarnings("unused") Object key, @Sup
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyDict_Copy extends CApiUnaryBuiltinNode {
@Specialization
static Object copy(PDict dict,
@@ -387,7 +388,7 @@ static Object doOther(Node inliningTarget, @SuppressWarnings("unused") Object ob
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
public abstract static class PyDict_GetItem extends CApiBinaryBuiltinNode {
@Specialization
@@ -431,7 +432,7 @@ static Object doOther(Node inliningTarget, @SuppressWarnings("unused") Object ob
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyDict_GetItemWithError extends CApiBinaryBuiltinNode {
@Specialization
static Object doGeneric(Object dict, Object key,
@@ -441,7 +442,7 @@ static Object doGeneric(Object dict, Object key,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class, long.class})
abstract static class PyDict_GetItemRef extends CApiTernaryBuiltinNode {
@Specialization
static int getItem(PDict dict, Object key, long resultPtr,
@@ -479,7 +480,7 @@ int fallback(Object dict, @SuppressWarnings("unused") Object key, Object resultP
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class, long.class})
abstract static class PyDict_GetItemStringRef extends CApiTernaryBuiltinNode {
@Specialization
static int getItemString(PDict dict, long keyPtr, long resultPtr,
@@ -519,7 +520,7 @@ int fallback(Object dict, @SuppressWarnings("unused") Object key, Object resultP
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class, long.class})
abstract static class PyDict_PopString extends CApiTernaryBuiltinNode {
@Specialization
static int pop(PDict dict, long keyPtr, long resultPtr,
@@ -560,7 +561,8 @@ int fallback(Object dict, @SuppressWarnings("unused") Object key, Object resultP
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject, ConstCharPtrAsTruffleStringStrict}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonStrictNode.class})
abstract static class _PyDict_GetItemStringWithError extends CApiBinaryBuiltinNode {
@Specialization
static Object doGeneric(Object dict, Object key,
@@ -570,7 +572,8 @@ static Object doGeneric(Object dict, Object key,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleStringStrict, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonStrictNode.class, NativeToPythonNode.class})
@ImportStatic(PGuards.class)
abstract static class PyDict_SetItemString extends CApiTernaryBuiltinNode {
@Specialization
@@ -590,7 +593,8 @@ static int doOther(Object dict, Object key, Object value,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class})
@ImportStatic(PGuards.class)
abstract static class PyDict_SetItem extends CApiTernaryBuiltinNode {
@Specialization
@@ -610,7 +614,8 @@ static int doOther(Object dict, Object key, Object value,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject, Py_hash_t}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject, Py_hash_t}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class})
abstract static class _PyDict_SetItem_KnownHash extends CApiQuaternaryBuiltinNode {
@Specialization
static int setItem(PDict dict, Object key, Object value, Object givenHash,
@@ -635,7 +640,8 @@ int fallback(Object dict, Object key, Object value, Object givenHash) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyDict_SetDefault extends CApiTernaryBuiltinNode {
@Specialization
static Object setItem(PDict dict, Object key, Object value,
@@ -659,7 +665,8 @@ public Object fallback(Object dict, @SuppressWarnings("unused") Object key, @Sup
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject, PyObjectPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject, PyObjectPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class})
abstract static class PyDict_SetDefaultRef extends CApiQuaternaryBuiltinNode {
@Specialization
static int setDefault(PDict dict, Object key, Object defaultValue, long resultPtr,
@@ -701,7 +708,8 @@ int fallback(Object dict, @SuppressWarnings("unused") Object key, @SuppressWarni
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleStringStrict}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonStrictNode.class})
@ImportStatic(PGuards.class)
abstract static class PyDict_DelItemString extends CApiBinaryBuiltinNode {
@Specialization
@@ -721,7 +729,7 @@ static int doOther(Object dict, Object key,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyDict_DelItem extends CApiBinaryBuiltinNode {
@Specialization
static int delItem(PDict dict, Object key,
@@ -737,7 +745,7 @@ public int fallback(Object dict, @SuppressWarnings("unused") Object key) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyDict_Update extends CApiBinaryBuiltinNode {
@Specialization
static int update(PDict dict, Object other,
@@ -753,8 +761,9 @@ public int fallback(Object dict, @SuppressWarnings("unused") Object other) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
- @CApiBuiltin(name = "PyDict_ContainsString", ret = Int, args = {PyObject, ConstCharPtrAsTruffleStringStrict}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
+ @CApiBuiltin(name = "PyDict_ContainsString", ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonStrictNode.class})
abstract static class PyDict_Contains extends CApiBinaryBuiltinNode {
@Specialization
static int contains(PDict dict, Object key,
@@ -769,7 +778,7 @@ public int fallback(Object dict, @SuppressWarnings("unused") Object key) {
}
}
- @CApiBuiltin(ret = Void, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class})
abstract static class PyDict_Clear extends CApiUnaryBuiltinNode {
@Specialization
static Object keys(PDict dict,
@@ -783,7 +792,7 @@ public Object fallback(Object dict) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyDict_Keys extends CApiUnaryBuiltinNode {
@Specialization
static Object keys(PDict dict,
@@ -798,7 +807,7 @@ Object fallback(Object dict) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyDict_Values extends CApiUnaryBuiltinNode {
@Specialization
static Object values(PDict dict,
@@ -813,7 +822,7 @@ Object fallback(Object dict) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyDict_Items extends CApiUnaryBuiltinNode {
@Specialization
static Object items(PDict dict,
@@ -828,7 +837,7 @@ Object fallback(Object dict) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, Int}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, Int}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class, int.class})
abstract static class PyDict_Merge extends CApiTernaryBuiltinNode {
@Specialization(guards = {"override != 0"})
@@ -902,7 +911,7 @@ int fallback(Object dict, @SuppressWarnings("unused") Object b, @SuppressWarning
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Dict_MaybeUntrack extends CApiUnaryBuiltinNode {
@Specialization
@@ -963,7 +972,7 @@ static boolean isTracked(Object object) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class _PyDict_HasOnlyStringKeys extends CApiUnaryBuiltinNode {
@Specialization
@@ -991,7 +1000,7 @@ static int check(PDict dict,
}
}
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Dict_UnlinkNativePart extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextErrBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextErrBuiltins.java
index 4d879a814f..4f9e199271 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextErrBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextErrBuiltins.java
@@ -40,17 +40,16 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
import static com.oracle.graal.python.builtins.modules.io.IONodes.T_FLUSH;
import static com.oracle.graal.python.builtins.modules.io.IONodes.T_WRITE;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.objects.exception.PBaseException.T_CODE;
import static com.oracle.graal.python.nodes.BuiltinNames.T_EXCEPTHOOK;
import static com.oracle.graal.python.nodes.BuiltinNames.T_LAST_TRACEBACK;
@@ -76,6 +75,9 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextFileBuiltins.PyFile_WriteObject;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.ReadAndClearNativeException;
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetItem;
import com.oracle.graal.python.builtins.objects.dict.PDict;
@@ -136,7 +138,7 @@ private static Object noneToNativeNull(Object obj) {
return obj instanceof PNone ? NATIVE_NULL : obj;
}
- @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Err_SetTraceback extends CApiBinaryBuiltinNode {
@Specialization
@@ -156,7 +158,7 @@ static Object clear(Object exception, @SuppressWarnings("unused") PNone tb) {
}
}
- @CApiBuiltin(ret = Void, args = {PyThreadState, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyThreadState, PyObject}, call = Direct, retConversion = void.class, argConversions = {long.class, NativeToPythonNode.class})
abstract static class _PyErr_SetHandledException extends CApiBinaryBuiltinNode {
@Specialization
@@ -184,7 +186,8 @@ static Object doFull(@SuppressWarnings("unused") long threadState, PBaseExceptio
* Exceptions are usually printed using the traceback module or the hook function
* {@code sys.excepthook}. This is the last resort if the hook function itself failed.
*/
- @CApiBuiltin(ret = Void, args = {PyObject, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyObject, PyObject, PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class PyErr_Display extends CApiTernaryBuiltinNode {
@Specialization
@@ -197,7 +200,7 @@ Object run(Object typ, PBaseException val, Object tb) {
}
}
- @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Err_CreateAndSetException extends CApiBinaryBuiltinNode {
@Specialization(guards = "!isExceptionClass(inliningTarget, type, isTypeNode, isSubClassNode)")
static Object create(Object type, @SuppressWarnings("unused") Object value,
@@ -222,7 +225,8 @@ protected static boolean isExceptionClass(Node inliningTarget, Object obj, IsTyp
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ CharPtrToPythonNode.class, NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyErr_NewException extends CApiTernaryBuiltinNode {
@Specialization
@@ -268,7 +272,9 @@ static Object newEx(TruffleString name, Object base, Object dict,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, ConstCharPtr, PyObject,
+ PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class, CharPtrToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class PyErr_NewExceptionWithDoc extends CApiQuaternaryBuiltinNode {
@Specialization
@@ -290,7 +296,7 @@ static Object raise(TruffleString name, Object doc, Object base, Object dict,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
abstract static class GraalPyPrivate_Err_GetExcInfo extends CApiNullaryBuiltinNode {
@Specialization
Object info(
@@ -313,7 +319,7 @@ Object info(
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyThreadState}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyThreadState}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class})
abstract static class _PyErr_GetHandledException extends CApiUnaryBuiltinNode {
@Specialization
@@ -330,7 +336,8 @@ static Object get(@SuppressWarnings("unused") long threadState,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class _Py_CalculateSuggestions extends CApiBinaryBuiltinNode {
@Specialization
@@ -340,7 +347,7 @@ static Object calculate(@SuppressWarnings("unused") Object dir, @SuppressWarning
}
}
- @CApiBuiltin(ret = Void, args = {ConstCharPtrAsTruffleString, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {ConstCharPtr, PyObject}, call = Ignored, retConversion = void.class, argConversions = {CharPtrToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_WriteUnraisable extends CApiBinaryBuiltinNode {
@Specialization
static Object write(Object msg, Object obj,
@@ -366,7 +373,7 @@ static Object write(Object msg, Object obj,
}
}
- @CApiBuiltin(ret = Void, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class})
abstract static class PyErr_WriteUnraisable extends CApiUnaryBuiltinNode {
@Specialization
static Object write(Object obj,
@@ -385,7 +392,7 @@ static Object write(Object obj,
}
}
- @CApiBuiltin(ret = Void, args = {Int}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {Int}, call = Direct, retConversion = void.class, argConversions = {int.class})
abstract static class PyErr_PrintEx extends CApiUnaryBuiltinNode {
@TruffleBoundary
@@ -473,7 +480,7 @@ private static void handleSystemExit(Object currentException, SysModuleBuiltins
}
}
- @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyException_SetCause extends CApiBinaryBuiltinNode {
@Specialization
Object setCause(Object exc, Object cause,
@@ -484,7 +491,7 @@ Object setCause(Object exc, Object cause,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyException_GetCause extends CApiUnaryBuiltinNode {
@Specialization
Object getCause(Object exc,
@@ -494,7 +501,7 @@ Object getCause(Object exc,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyException_GetContext extends CApiUnaryBuiltinNode {
@Specialization
Object setCause(Object exc,
@@ -504,7 +511,7 @@ Object setCause(Object exc,
}
}
- @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyException_SetContext extends CApiBinaryBuiltinNode {
@Specialization
Object setContext(Object exc, Object context,
@@ -515,7 +522,7 @@ Object setContext(Object exc, Object context,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyException_GetTraceback extends CApiUnaryBuiltinNode {
@Specialization
@@ -526,7 +533,7 @@ Object getTraceback(Object exc,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyException_SetTraceback extends CApiBinaryBuiltinNode {
@Specialization
@@ -538,7 +545,7 @@ Object setTraceback(Object exc, Object traceback,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyException_GetArgs extends CApiUnaryBuiltinNode {
@Specialization
@@ -549,7 +556,7 @@ static Object get(Object exc,
}
}
- @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {PyObject, PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyException_SetArgs extends CApiBinaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFileBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFileBuiltins.java
index 3c2b9afd6e..5ee64f7b2c 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFileBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFileBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,15 +40,16 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.io.IONodes.T_WRITE;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
import com.oracle.graal.python.builtins.modules.BuiltinFunctions.ReprNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.str.StringBuiltins;
import com.oracle.graal.python.lib.PyObjectGetAttr;
import com.oracle.graal.python.nodes.PRaiseNode;
@@ -61,7 +62,7 @@
public final class PythonCextFileBuiltins {
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, Int}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, Int}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class, int.class})
abstract static class PyFile_WriteObject extends CApiTernaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFloatBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFloatBuiltins.java
index a078f1a38c..60e1ac22e6 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFloatBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFloatBuiltins.java
@@ -40,14 +40,15 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.lib.PyFloatAsDoubleNode;
import com.oracle.graal.python.lib.PyFloatFromString;
import com.oracle.truffle.api.dsl.Bind;
@@ -57,7 +58,7 @@
public final class PythonCextFloatBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {ArgDescriptor.Double}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ArgDescriptor.Double}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {double.class})
abstract static class GraalPyPrivate_Float_FromDouble extends CApiUnaryBuiltinNode {
@Specialization
static double fromDouble(double d) {
@@ -65,7 +66,7 @@ static double fromDouble(double d) {
}
}
- @CApiBuiltin(ret = ArgDescriptor.Double, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Double, args = {PyObject}, call = Ignored, retConversion = double.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Float_AsDouble extends CApiUnaryBuiltinNode {
@Specialization
static double doGenericErr(Object object,
@@ -75,7 +76,7 @@ static double doGenericErr(Object object,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFloat_FromString extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFrameBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFrameBuiltins.java
index 8776470c07..85198bb020 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFrameBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFrameBuiltins.java
@@ -40,20 +40,21 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCodeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFrameObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCodeObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import static com.oracle.graal.python.runtime.PythonContext.NATIVE_NULL;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.frame.FrameBuiltins;
import com.oracle.graal.python.builtins.objects.frame.PFrame;
import com.oracle.graal.python.nodes.frame.ReadFrameNode;
@@ -65,7 +66,7 @@
import com.oracle.truffle.api.nodes.Node;
public final class PythonCextFrameBuiltins {
- @CApiBuiltin(ret = PyCodeObjectTransfer, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = PyCodeObject, args = {PyFrameObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetCode extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -74,7 +75,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetLineNumber extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -83,7 +84,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetLasti extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -92,7 +93,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyFrameObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetLocals extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -106,7 +107,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyFrameObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetGlobals extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -115,7 +116,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = PyFrameObjectTransfer, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = PyFrameObject, args = {PyFrameObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetBack extends CApiUnaryBuiltinNode {
@Specialization
Object get(PFrame frame,
@@ -128,7 +129,7 @@ Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyFrameObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrame_GetBuiltins extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -137,7 +138,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyFrameObject, Int}, call = Direct)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyFrameObject, Int}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class, int.class})
abstract static class GraalPyFrame_SetLineNumber extends CApiBinaryBuiltinNode {
@Specialization
static Object set(PFrame frame, int value) {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFuncBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFuncBuiltins.java
index 7ffd7a0115..b34c65b828 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFuncBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextFuncBuiltins.java
@@ -40,20 +40,19 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import static com.oracle.graal.python.nodes.SpecialAttributeNames.T___ANNOTATIONS__;
import static com.oracle.graal.python.nodes.SpecialAttributeNames.T___MODULE__;
import static com.oracle.graal.python.nodes.SpecialAttributeNames.T___NAME__;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
@@ -61,9 +60,12 @@
import com.oracle.graal.python.builtins.objects.cell.PCell;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonTransferNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetItem;
import com.oracle.graal.python.builtins.objects.dict.PDict;
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
@@ -110,27 +112,28 @@ private static void checkCell(long cellPtr) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
static long PyCell_Get(long cellPtr) {
checkCell(cellPtr);
Object ref = getPromotedCellRef(cellPtr);
return ref == null ? NULLPTR : PythonToNativeInternalNode.executeNewRefUncached(ref);
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
static int PyCell_Set(long cellPtr, long valuePtr) {
checkCell(cellPtr);
getCell(cellPtr).setRef(valuePtr == NULLPTR ? null : NativeToPythonInternalNode.executeUncached(valuePtr, false));
return 0;
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyCell_GET(long cellPtr) {
Object ref = getPromotedCellRef(cellPtr);
return ref == null ? NULLPTR : ToNativeBorrowedNode.executeUncached(ref);
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyObject, PyObjectTransfer}, call = Direct)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyObject, PyObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonTransferNode.class})
static void GraalPyCell_SET(long cellPtr, long valuePtr) {
getCell(cellPtr).setRef(valuePtr == NULLPTR ? null : NativeToPythonInternalNode.executeUncached(valuePtr, true));
}
@@ -142,62 +145,62 @@ private static void checkFunction(long functionPtr) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetCode(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_CODE(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetGlobals(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_GLOBALS(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetModule(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_MODULE(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetDefaults(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_DEFAULTS(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetKwDefaults(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_KW_DEFAULTS(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetClosure(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_CLOSURE(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long PyFunction_GetAnnotations(long functionPtr) {
checkFunction(functionPtr);
return GraalPyFunction_GET_ANNOTATIONS(functionPtr);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_CODE(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
return ToNativeBorrowedNode.executeUncached(function.getCode());
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_GLOBALS(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
Object globals = function.getGlobals();
return ToNativeBorrowedNode.executeUncached(globals instanceof PythonModule ? GetOrCreateDictNode.executeUncached(globals) : globals);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_MODULE(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
Object module = ReadAttributeFromObjectNode.getUncached().execute(function, T___MODULE__);
@@ -222,35 +225,35 @@ static long GraalPyFunction_GET_MODULE(long functionPtr) {
return ToNativeBorrowedNode.executeUncached(promotedModule);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_DEFAULTS(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
Object[] defaults = function.getDefaults();
return defaults.length == 0 ? NULLPTR : ToNativeBorrowedNode.executeUncached(PFactory.createTuple(PythonLanguage.get(null), defaults));
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_KW_DEFAULTS(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
Object defaults = function.getKwDefaultsDict(PythonLanguage.get(null));
return defaults == PNone.NONE ? NULLPTR : ToNativeBorrowedNode.executeUncached(defaults);
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_CLOSURE(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
PCell[] closure = function.getClosure();
return closure == null ? NULLPTR : ToNativeBorrowedNode.executeUncached(PFactory.createTuple(PythonLanguage.get(null), closure));
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyFunction_GET_ANNOTATIONS(long functionPtr) {
PFunction function = (PFunction) NativeToPythonInternalNode.executeUncached(functionPtr, false);
Object annotations = ReadAttributeFromObjectNode.getUncached().execute(function, T___ANNOTATIONS__);
return annotations != PNone.NO_VALUE ? ToNativeBorrowedNode.executeUncached(annotations) : NULLPTR;
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyStaticMethod_New extends CApiUnaryBuiltinNode {
@Specialization
static Object staticmethod(Object func,
@@ -261,7 +264,7 @@ static Object staticmethod(Object func,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyClassMethod_New extends CApiUnaryBuiltinNode {
@Specialization
static Object staticmethod(Object callable,
@@ -270,7 +273,8 @@ static Object staticmethod(Object callable,
}
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyObject, ConstCharPtrAsTruffleString}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyObject, ConstCharPtr}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonNode.class})
abstract static class GraalPyPrivate_CFunction_SetDoc extends CApiBinaryBuiltinNode {
@Specialization
@TruffleBoundary
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextGenericAliasBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextGenericAliasBuiltins.java
index 9baf679d5d..6c6ea8866a 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextGenericAliasBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextGenericAliasBuiltins.java
@@ -40,13 +40,14 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import com.oracle.graal.python.PythonLanguage;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
import com.oracle.graal.python.nodes.builtins.TupleNodes;
import com.oracle.graal.python.runtime.object.PFactory;
@@ -60,7 +61,8 @@ public final class PythonCextGenericAliasBuiltins {
private PythonCextGenericAliasBuiltins() {
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class Py_GenericAlias extends CApiBinaryBuiltinNode {
@Specialization
static Object genericAlias(Object origin, Object args,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextHashBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextHashBuiltins.java
index 6e22401390..ab74aef21c 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextHashBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextHashBuiltins.java
@@ -40,22 +40,22 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_VOID_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT8_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_hash_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_VOID_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT8_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_hash_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.util.PythonUtils.TS_ENCODING_BINARY;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.SysModuleBuiltins;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.lib.PyObjectHashNode;
import com.oracle.graal.python.runtime.nativeaccess.NativeMemory;
import com.oracle.truffle.api.CompilerDirectives;
@@ -67,7 +67,7 @@
public final class PythonCextHashBuiltins {
- @CApiBuiltin(ret = Void, args = {INT8_T_PTR}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {INT8_T_PTR}, call = Ignored, retConversion = void.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Hash_InitSecret extends CApiUnaryBuiltinNode {
@Specialization
@TruffleBoundary
@@ -78,7 +78,7 @@ Object get(long secretPtr) {
}
}
- @CApiBuiltin(ret = ArgDescriptor.Long, args = {Int}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Long, args = {Int}, call = Ignored, retConversion = long.class, argConversions = {int.class})
abstract static class GraalPyPrivate_HashConstant extends CApiUnaryBuiltinNode {
@Specialization
@@ -98,7 +98,7 @@ static long doI(int idx) {
}
}
- @CApiBuiltin(ret = Py_hash_t, args = {ArgDescriptor.Double}, call = Ignored)
+ @CApiBuiltin(ret = Py_hash_t, args = {ArgDescriptor.Double}, call = Ignored, retConversion = long.class, argConversions = {double.class})
abstract static class GraalPyPrivate_HashDouble extends CApiUnaryBuiltinNode {
@Specialization
@@ -108,7 +108,7 @@ long doFinite(double value) {
}
}
- @CApiBuiltin(name = "_Py_HashBytes", ret = Py_hash_t, args = {CONST_VOID_PTR, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(name = "_Py_HashBytes", ret = Py_hash_t, args = {CONST_VOID_PTR, Py_ssize_t}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class})
abstract static class _Py_HashBytes extends CApiBinaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextImportBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextImportBuiltins.java
index 43c3048a65..d73463ec17 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextImportBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextImportBuiltins.java
@@ -40,13 +40,10 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleStringStrict;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import static com.oracle.graal.python.lib.PyImportImport.T_FROMLIST;
import static com.oracle.graal.python.lib.PyImportImport.T_LEVEL;
import static com.oracle.graal.python.nodes.BuiltinNames.T_GLOBALS;
@@ -62,6 +59,11 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiNullaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToPythonStringNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonStrictNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.common.HashingCollectionNodes.SetItemNode;
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetItem;
import com.oracle.graal.python.builtins.objects.dict.PDict;
@@ -85,9 +87,11 @@
public final class PythonCextImportBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleStringStrict}, call = Direct)
- @CApiBuiltin(name = "PyImport_Import", ret = PyObjectTransfer, args = {PyObjectAsTruffleString}, call = Direct)
- @CApiBuiltin(name = "PyImport_ImportModuleNoBlock", ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleStringStrict}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonStrictNode.class})
+ @CApiBuiltin(name = "PyImport_Import", ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ ToPythonStringNode.class})
+ @CApiBuiltin(name = "PyImport_ImportModuleNoBlock", ret = PyObject, args = {
+ ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonStrictNode.class})
abstract static class PyImport_ImportModule extends CApiUnaryBuiltinNode {
@Specialization
static Object imp(TruffleString name) {
@@ -95,7 +99,7 @@ static Object imp(TruffleString name) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {})
abstract static class PyImport_GetModuleDict extends CApiNullaryBuiltinNode {
@Specialization
Object getModuleDict() {
@@ -103,7 +107,7 @@ Object getModuleDict() {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleStringStrict}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonStrictNode.class})
abstract static class PyImport_AddModuleRef extends CApiUnaryBuiltinNode {
@Specialization
static Object addModule(TruffleString name,
@@ -122,7 +126,8 @@ static Object addModule(TruffleString name,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObjectAsTruffleString, PyObject, PyObject, PyObject, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject, PyObject, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ ToPythonStringNode.class, NativeToPythonNode.class, NativeToPythonNode.class, NativeToPythonNode.class, int.class})
abstract static class PyImport_ImportModuleLevelObject extends CApi5BuiltinNode {
@Specialization
Object importModuleLevelObject(TruffleString name, Object globals, Object locals, Object fromlist, int level,
@@ -139,7 +144,7 @@ Object importModuleLevelObject(TruffleString name, Object globals, Object locals
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyImport_GetModule extends CApiUnaryBuiltinNode {
private static final TruffleString T__LOCK_UNLOCK_MODULE = tsLiteral("_lock_unlock_module");
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextIterBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextIterBuiltins.java
index 3072377989..48ffe421ee 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextIterBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextIterBuiltins.java
@@ -40,15 +40,16 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import com.oracle.graal.python.PythonLanguage;
import com.oracle.graal.python.builtins.modules.BuiltinFunctions.IterNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.iterator.PSequenceIterator;
import com.oracle.graal.python.runtime.object.PFactory;
import com.oracle.truffle.api.dsl.Bind;
@@ -57,7 +58,7 @@
public final class PythonCextIterBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PySeqIter_New extends CApiUnaryBuiltinNode {
@Specialization
static PSequenceIterator call(Object seq,
@@ -66,7 +67,8 @@ static PSequenceIterator call(Object seq,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class PyCallIter_New extends CApiBinaryBuiltinNode {
@Specialization
static Object getItem(Object it, Object sentinel,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextListBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextListBuiltins.java
index 6ba585bbd5..ca7c3c7a63 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextListBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextListBuiltins.java
@@ -40,20 +40,18 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT64_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyListObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IndexError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.MemoryError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT64_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyListObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.nodes.ErrorMessages.BAD_ARG_TO_INTERNAL_FUNC_S;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.writePtr;
@@ -68,10 +66,13 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemScalarNode;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.ListGeneralizationNode;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.SetItemScalarNode;
@@ -102,7 +103,7 @@ public final class PythonCextListBuiltins {
private static final CApiTiming TIMING_PYLIST_NEW = CApiTiming.create(false, "PyList_New");
- @CApiBuiltin(ret = PyObjectTransfer, args = {Py_ssize_t}, call = Direct, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {Py_ssize_t}, call = Direct, acquireGil = false, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class})
static long PyList_New(long size) {
CApiTiming.enter();
try {
@@ -128,7 +129,7 @@ static long PyList_New(long size) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Py_ssize_t}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class PyList_GetItem extends CApiBinaryBuiltinNode {
@Specialization
@@ -164,7 +165,7 @@ Object fallback(Object list, @SuppressWarnings("unused") Object pos) {
private static final CApiTiming TIMING_PYLIST_GETITEMREF = CApiTiming.create(false, "PyList_GetItemRef");
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class, long.class})
static long PyList_GetItemRef(long opPtr, long key) {
CApiTiming.enter();
try {
@@ -193,7 +194,7 @@ static long PyList_GetItemRef(long opPtr, long key) {
private static final CApiTiming TIMING_PYLIST_APPEND = CApiTiming.create(false, "PyList_Append");
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
static int PyList_Append(long opPtr, long itemPtr) {
CApiTiming.enter();
try {
@@ -209,7 +210,7 @@ static int PyList_Append(long opPtr, long itemPtr) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyList_AsTuple extends CApiUnaryBuiltinNode {
@Specialization
@@ -224,7 +225,8 @@ Object fallback(Object list) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Py_ssize_t, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Py_ssize_t, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ long.class, long.class})
abstract static class PyList_GetSlice extends CApiTernaryBuiltinNode {
@Specialization
Object getSlice(PList list, Object iLow, Object iHigh,
@@ -240,7 +242,8 @@ Object fallback(Object list, @SuppressWarnings("unused") Object iLow, @SuppressW
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, Py_ssize_t, Py_ssize_t, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, Py_ssize_t, Py_ssize_t, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class, long.class,
+ NativeToPythonNode.class})
abstract static class PyList_SetSlice extends CApiQuaternaryBuiltinNode {
@Specialization
@@ -258,7 +261,7 @@ int fallback(Object list, @SuppressWarnings("unused") Object iLow, @SuppressWarn
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyList_Extend extends CApiBinaryBuiltinNode {
@Specialization
@@ -274,7 +277,8 @@ int fallback(Object list, @SuppressWarnings("unused") Object iterable) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyListObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyListObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class _PyList_Extend extends CApiBinaryBuiltinNode {
@Specialization
@@ -296,7 +300,7 @@ Object fallback(Object list, @SuppressWarnings("unused") Object iterable) {
* A pure-C Py_SIZE implementation regressed mixed managed/native/list-subclass workload by
* about 1.26x.
*/
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct, acquireGil = false)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct, acquireGil = false, retConversion = long.class, argConversions = {NativeToPythonNode.class})
static long PyList_Size(long opPtr) {
CApiTiming.enter();
try {
@@ -310,7 +314,7 @@ static long PyList_Size(long opPtr) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyList_Sort extends CApiUnaryBuiltinNode {
@Specialization
@@ -326,7 +330,7 @@ int fallback(Object list) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, Py_ssize_t, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, Py_ssize_t, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class, NativeToPythonNode.class})
abstract static class PyList_Insert extends CApiTernaryBuiltinNode {
@Specialization
@@ -342,7 +346,7 @@ int fallback(Object list, @SuppressWarnings("unused") Object i, @SuppressWarning
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyList_Reverse extends CApiUnaryBuiltinNode {
@Specialization
static int reverse(PList self,
@@ -358,7 +362,7 @@ static int error(@SuppressWarnings("unused") Object self,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyList_Clear extends CApiUnaryBuiltinNode {
@Specialization
@@ -374,7 +378,7 @@ static int error(@SuppressWarnings("unused") Object self,
}
}
- @CApiBuiltin(ret = INT64_T, args = {PyObject, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = INT64_T, args = {PyObject, Pointer}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_List_TruncateNativeStorage extends CApiBinaryBuiltinNode {
@Specialization
@@ -390,7 +394,7 @@ static long doGeneric(PList self, long outItems) {
}
}
- @CApiBuiltin(ret = INT64_T, args = {PyObject, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = INT64_T, args = {PyObject, Pointer}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_List_TryGetItems extends CApiBinaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextLongBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextLongBuiltins.java
index 9d003abbea..db63c89d0e 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextLongBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextLongBuiltins.java
@@ -40,25 +40,23 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_UNSIGNED_CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_VOID_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.LONG_LONG;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyLongObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.SIZE_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_LONG_LONG;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.NotImplementedError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.ValueError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_UNSIGNED_CHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_VOID_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.LONG_LONG;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyLongObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.SIZE_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_CHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_LONG_LONG;
import static com.oracle.graal.python.runtime.exception.PythonErrorType.OverflowError;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.readByteArrayElements;
@@ -66,6 +64,7 @@
import java.nio.ByteOrder;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.modules.SysModuleBuiltins;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApi6BuiltinNode;
@@ -76,10 +75,12 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.TransformPExceptionToNativeCachedNode;
import com.oracle.graal.python.builtins.objects.ints.IntBuiltins;
import com.oracle.graal.python.builtins.objects.ints.IntNodes;
@@ -112,7 +113,7 @@ public final class PythonCextLongBuiltins {
private static final CApiTiming TIMING_PYLONG_GETINFO = CApiTiming.create(false, "PyLong_GetInfo");
- @CApiBuiltin(ret = PyObjectTransfer, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
static long PyLong_GetInfo() {
CApiTiming.enter();
try {
@@ -123,7 +124,7 @@ static long PyLong_GetInfo() {
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyLongObject}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyLongObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Long_DigitCount extends CApiUnaryBuiltinNode {
@Specialization
@@ -136,7 +137,7 @@ static long getDC(Object n,
private static final CApiTiming TIMING_GRAALPYPRIVATE_LONG_FROMDOUBLE = CApiTiming.create(false, "GraalPyPrivate_Long_FromDouble");
- @CApiBuiltin(ret = PyObjectRawPointer, args = {ArgDescriptor.Double}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {ArgDescriptor.Double}, call = Ignored, acquireGil = false, retConversion = long.class, argConversions = {double.class})
static long GraalPyPrivate_Long_FromDouble(double d) {
CApiTiming.enter();
try {
@@ -147,7 +148,8 @@ static long GraalPyPrivate_Long_FromDouble(double d) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class,
+ int.class})
abstract static class GraalPyPrivate_Long_FromString extends CApiBinaryBuiltinNode {
@Specialization
@@ -158,7 +160,8 @@ Object fromString(Object s, int base,
}
}
- @CApiBuiltin(ret = LONG_LONG, args = {PyObject, SIZE_T, Pointer}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = LONG_LONG, args = {PyObject, SIZE_T, Pointer}, call = Ignored, acquireGil = false, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class,
+ long.class})
abstract static class GraalPyPrivate_Long_AsPrimitiveAndOverflow extends CApiTernaryBuiltinNode {
@Specialization
static long doGeneric(Object object, long targetTypeSize, long overflow,
@@ -194,7 +197,7 @@ private static void writeOverflow(Object value, long overflow) {
}
}
- @CApiBuiltin(ret = LONG_LONG, args = {PyObject, Int, SIZE_T}, call = Ignored)
+ @CApiBuiltin(ret = LONG_LONG, args = {PyObject, Int, SIZE_T}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, int.class, long.class})
abstract static class GraalPyPrivate_Long_AsPrimitiveWithCoercion extends CApiTernaryBuiltinNode {
@Specialization
static long doGeneric(Object object, int mode, long targetTypeSize,
@@ -212,7 +215,7 @@ static long doGeneric(Object object, int mode, long targetTypeSize,
}
}
- @CApiBuiltin(ret = LONG_LONG, args = {PyObject, Int, SIZE_T}, call = Ignored)
+ @CApiBuiltin(ret = LONG_LONG, args = {PyObject, Int, SIZE_T}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, int.class, long.class})
abstract static class GraalPyPrivate_Long_AsPrimitive extends CApiTernaryBuiltinNode {
@Specialization
@@ -297,7 +300,7 @@ private static PException raiseNegativeValue(Node inliningTarget) {
private static final CApiTiming TIMING_GRAALPYPRIVATE_LONG_FROMLONGLONG = CApiTiming.create(false, "GraalPyPrivate_Long_FromLongLong");
- @CApiBuiltin(ret = PyObjectTransfer, args = {LONG_LONG}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {LONG_LONG}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class})
static long GraalPyPrivate_Long_FromLongLong(long n) {
CApiTiming.enter();
try {
@@ -309,7 +312,7 @@ static long GraalPyPrivate_Long_FromLongLong(long n) {
private static final CApiTiming TIMING_GRAALPYPRIVATE_LONG_FROMUNSIGNEDLONGLONG = CApiTiming.create(false, "GraalPyPrivate_Long_FromUnsignedLongLong");
- @CApiBuiltin(ret = PyObjectRawPointer, args = {UNSIGNED_LONG_LONG}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {UNSIGNED_LONG_LONG}, call = Ignored, acquireGil = false, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_Long_FromUnsignedLongLong(long n) {
CApiTiming.enter();
try {
@@ -322,7 +325,7 @@ static long GraalPyPrivate_Long_FromUnsignedLongLong(long n) {
private static final CApiTiming TIMING_GRAALPYPRIVATE_LONG_NUMBITS = CApiTiming.create(false, "GraalPyPrivate_Long_NumBits");
- @CApiBuiltin(ret = SIZE_T, args = {PyObjectRawPointer}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = SIZE_T, args = {PyObject}, call = Ignored, acquireGil = false, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_Long_NumBits(long objPtr) {
CApiTiming.enter();
try {
@@ -342,7 +345,7 @@ static long GraalPyPrivate_Long_NumBits(long objPtr) {
}
}
- @CApiBuiltin(ret = Pointer, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Pointer, args = {PyObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Long_AsVoidPtr extends CApiUnaryBuiltinNode {
@Child private TransformPExceptionToNativeCachedNode transformExceptionToNativeNode;
@@ -407,7 +410,8 @@ private TransformPExceptionToNativeCachedNode ensureTransformExcNode() {
}
}
- @CApiBuiltin(ret = Int, args = {PyLongObject, UNSIGNED_CHAR_PTR, SIZE_T, Int, Int, Int}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyLongObject, UNSIGNED_CHAR_PTR, SIZE_T, Int, Int, Int}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class,
+ long.class, int.class, int.class, int.class})
abstract static class _PyLong_AsByteArray extends CApi6BuiltinNode {
private static void checkSign(Node inliningTarget, boolean negative, int isSigned, int withExceptions, PRaiseNode raiseNode) {
if (negative) {
@@ -453,7 +457,7 @@ static Object get(PInt value, long bytes, long n, int littleEndian, int isSigned
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class, int.class})
abstract static class PyLong_FromUnicodeObject extends CApiBinaryBuiltinNode {
@Specialization
static Object convert(Object s, int base,
@@ -463,7 +467,8 @@ static Object convert(Object s, int base,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {CONST_UNSIGNED_CHAR_PTR, SIZE_T, Int, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {CONST_UNSIGNED_CHAR_PTR, SIZE_T, Int, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, long.class,
+ int.class, int.class})
abstract static class _PyLong_FromByteArray extends CApiQuaternaryBuiltinNode {
@Specialization
static Object convert(long charPtr, long size, int littleEndian, int signed,
@@ -487,7 +492,7 @@ static Object convert(long charPtr, long size, int littleEndian, int signed,
private static final CApiTiming TIMING_PYLONG_ASNATIVEBYTES = CApiTiming.create(false, "PyLong_AsNativeBytes");
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObjectRawPointer, Pointer, Py_ssize_t, Int}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, Pointer, Py_ssize_t, Int}, call = Direct, retConversion = long.class, argConversions = {long.class, long.class, long.class, int.class})
static long PyLong_AsNativeBytes(long objectPtr, long buffer, long size, int flags) {
CApiTiming.enter();
try {
@@ -571,7 +576,7 @@ private static long requiredNativeBytesSize(BigInteger value, long size, int fla
private static final CApiTiming TIMING_PYLONG_FROMNATIVEBYTES = CApiTiming.create(false, "PyLong_FromNativeBytes");
- @CApiBuiltin(ret = PyObjectTransfer, args = {CONST_VOID_PTR, SIZE_T, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {CONST_VOID_PTR, SIZE_T, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, long.class, int.class})
static long PyLong_FromNativeBytes(long buffer, long size, int flags) {
CApiTiming.enter();
try {
@@ -593,7 +598,7 @@ static long PyLong_FromNativeBytes(long buffer, long size, int flags) {
private static final CApiTiming TIMING_PYLONG_FROMUNSIGNEDNATIVEBYTES = CApiTiming.create(false, "PyLong_FromUnsignedNativeBytes");
- @CApiBuiltin(ret = PyObjectTransfer, args = {CONST_VOID_PTR, SIZE_T, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {CONST_VOID_PTR, SIZE_T, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, long.class, int.class})
static long PyLong_FromUnsignedNativeBytes(long buffer, long size, int flags) {
CApiTiming.enter();
try {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMemoryViewBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMemoryViewBuiltins.java
index 7f4f9cbbaf..aa99f522b7 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMemoryViewBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMemoryViewBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,12 +40,11 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.BufferError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import static com.oracle.graal.python.nodes.ErrorMessages.UNDERLYING_BUFFER_IS_NOT_WRITABLE;
import static com.oracle.graal.python.nodes.ErrorMessages.WRITABLE_CONTIGUES_FOR_NON_CONTIGUOUS;
import static com.oracle.graal.python.util.BufferFormat.T_UINT_8_TYPE_CODE;
@@ -55,6 +54,8 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.memoryview.MemoryViewBuiltins.CastNode;
import com.oracle.graal.python.builtins.objects.memoryview.MemoryViewBuiltins.ContiguousNode;
import com.oracle.graal.python.builtins.objects.memoryview.MemoryViewBuiltins.ToBytesNode;
@@ -73,7 +74,8 @@ public final class PythonCextMemoryViewBuiltins {
public static final int PY_BUF_READ = 0x100;
public static final int PY_BUF_WRITE = 0x200;
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Int, CHAR}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Int, CHAR}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class, int.class,
+ byte.class})
abstract static class PyMemoryView_GetContiguous extends CApiTernaryBuiltinNode {
@Specialization()
static Object get(Object obj, int buffertype, byte orderByte,
@@ -121,7 +123,7 @@ static Object get(Object obj, int buffertype, byte orderByte,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyMemoryView_FromObject extends CApiUnaryBuiltinNode {
@Specialization
static Object wrap(Object object,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMethodBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMethodBuiltins.java
index 108856cc77..c3c5a135fc 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMethodBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextMethodBuiltins.java
@@ -40,14 +40,13 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.getArrayElementPtr;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.readIntField;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.readPtrField;
@@ -63,8 +62,11 @@
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.FromCharPointerNode;
import com.oracle.graal.python.builtins.objects.cext.capi.MethodDescriptorWrapper;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.structs.CFields;
import com.oracle.graal.python.builtins.objects.cext.structs.CStructs;
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
@@ -126,7 +128,9 @@ public static void addMethodsToObject(PythonLanguage language, long methods, Obj
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyMethodDef, ConstCharPtrAsTruffleString, Pointer, Int, PyObject, PyObject, PyTypeObject, ConstCharPtrAsTruffleString}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyMethodDef, ConstCharPtr, Pointer, Int, PyObject, PyObject, PyTypeObject,
+ ConstCharPtr}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, CharPtrToPythonNode.class, long.class, int.class,
+ NativeToPythonNode.class, NativeToPythonNode.class, NativeToPythonClassNode.class, CharPtrToPythonNode.class})
public static long GraalPyPrivate_CMethod_NewEx(long methodDefPtr, long nameRaw, long methPtr, int flags, long selfRaw, long moduleRaw, long clsRaw, long docRaw) {
// errors are expected to be thrown already in native code
assert verifyFlags(flags, clsRaw);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextModuleBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextModuleBuiltins.java
index fbfba567f4..768443c15b 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextModuleBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextModuleBuiltins.java
@@ -40,25 +40,21 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PY_SLOT_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_ABI_INFO_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_SSIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyModuleDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyModuleObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.VOID_PTR_LIST;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PY_SLOT_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_ABI_INFO_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_SSIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VOID_PTR_LIST;
import static com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.bindFunctionPointer;
import static com.oracle.graal.python.nodes.ErrorMessages.NAMELESS_MODULE;
import static com.oracle.graal.python.nodes.ErrorMessages.S_NEEDS_S_AS_FIRST_ARG;
@@ -73,6 +69,7 @@
import static com.oracle.graal.python.util.PythonUtils.TS_ENCODING;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.ABI;
@@ -85,13 +82,15 @@
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodesFactory.PRaiseNativeNodeGen;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionInvoker;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToPythonStringNode;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodesFactory.CheckPrimitiveFunctionResultNodeGen;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionSignature;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.module.PythonModule;
import com.oracle.graal.python.builtins.objects.object.ObjectBuiltins;
import com.oracle.graal.python.builtins.objects.str.StringBuiltins.PrefixSuffixNode;
@@ -125,7 +124,7 @@
public final class PythonCextModuleBuiltins {
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, CharPtrToPythonNode.class})
abstract static class PyModule_SetDocString extends CApiBinaryBuiltinNode {
@Specialization
static int run(PythonModule module, Object doc,
@@ -135,8 +134,9 @@ static int run(PythonModule module, Object doc,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObjectAsTruffleString}, call = Direct)
- @CApiBuiltin(name = "PyModule_New", ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {ToPythonStringNode.class})
+ @CApiBuiltin(name = "PyModule_New", ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ CharPtrToPythonNode.class})
abstract static class PyModule_NewObject extends CApiUnaryBuiltinNode {
@Specialization
@@ -146,7 +146,7 @@ static Object run(TruffleString name,
}
}
- @CApiBuiltin(ret = PyModuleObjectTransfer, args = {ConstCharPtrAsTruffleString}, call = Ignored)
+ @CApiBuiltin(ret = PyModuleObject, args = {ConstCharPtr}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class})
abstract static class GraalPyPrivate_Module_CreateInitialized_PyModule_New extends CApiUnaryBuiltinNode {
@Specialization
@@ -181,7 +181,7 @@ Object run(TruffleString name,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyModule_GetNameObject extends CApiUnaryBuiltinNode {
@Specialization
static Object getName(PythonModule module,
@@ -216,7 +216,8 @@ static boolean isModuleSubtype(Node inliningTarget, Object obj, GetClassNode get
return isSubtypeNode.execute(getClassNode.execute(inliningTarget, obj), PythonBuiltinClassType.PythonModule);
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, CharPtrToPythonNode.class,
+ NativeToPythonNode.class})
@ImportStatic(PythonCextModuleBuiltins.class)
abstract static class PyModule_AddObjectRef extends CApiTernaryBuiltinNode {
@Specialization(guards = "isModuleSubtype(inliningTarget, m, getClassNode, isSubtypeNode)")
@@ -239,7 +240,8 @@ static Object pop(Object m, Object key, Object defaultValue,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, ArgDescriptor.Long}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, ArgDescriptor.Long}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonNode.class, long.class})
@ImportStatic(PythonCextModuleBuiltins.class)
abstract static class PyModule_AddIntConstant extends CApiTernaryBuiltinNode {
@Specialization(guards = "isModuleSubtype(inliningTarget, m, getClassNode, isSubtypeNode)")
@@ -261,7 +263,7 @@ static Object pop(@SuppressWarnings("unused") Object m, @SuppressWarnings("unuse
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyMethodDef}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyMethodDef}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class})
public static int GraalPyPrivate_Module_AddFunctions(long moduleRaw, long functions) {
CompilerAsserts.neverPartOfCompilation();
Object module = NativeToPythonInternalNode.executeUncached(moduleRaw, false);
@@ -277,7 +279,7 @@ public static int GraalPyPrivate_Module_AddFunctions(long moduleRaw, long functi
return 0;
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyMethodDef}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyMethodDef}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class, long.class})
public static int GraalPyPrivate_AddMethodsToObject(long moduleRaw, long nameRaw, long functions) {
CompilerAsserts.neverPartOfCompilation();
Object module = NativeToPythonInternalNode.executeUncached(moduleRaw, false);
@@ -286,7 +288,8 @@ public static int GraalPyPrivate_AddMethodsToObject(long moduleRaw, long nameRaw
return 0;
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {CONST_PY_SLOT_PTR, PyObject}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = PyObject, args = {CONST_PY_SLOT_PTR, PyObject}, call = Direct, abi = ABI.ABI3T, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class,
+ NativeToPythonNode.class})
public static long PyModule_FromSlotsAndSpec(long slots, long specPtr) {
if (slots == NULLPTR) {
throw PRaiseNode.raiseStatic(null, SystemError, ErrorMessages.PYMODULE_FROMSLOTS_NULL_SLOTS);
@@ -298,7 +301,7 @@ public static long PyModule_FromSlotsAndSpec(long slots, long specPtr) {
return PythonToNativeInternalNode.executeNewRefUncached(module);
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, abi = ABI.ABI3T, retConversion = int.class, argConversions = {NativeToPythonNode.class})
public static int PyModule_Exec(long modulePtr) {
Object object = NativeToPythonInternalNode.executeUncached(modulePtr, false);
if (object instanceof PythonModule module) {
@@ -307,7 +310,7 @@ public static int PyModule_Exec(long modulePtr) {
throw PRaiseNode.raiseStatic(null, TypeError, ErrorMessages.EXPECTED_MODULE_GOT_T, object);
}
- @CApiBuiltin(ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = Direct, abi = ABI.ABI3T, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class})
public static int PyModule_GetStateSize(long modulePtr, long result) {
Object object = NativeToPythonInternalNode.executeUncached(modulePtr, false);
if (object instanceof PythonModule module) {
@@ -318,7 +321,7 @@ public static int PyModule_GetStateSize(long modulePtr, long result) {
throw PRaiseNode.raiseStatic(null, TypeError, ErrorMessages.EXPECTED_MODULE_GOT_T, object);
}
- @CApiBuiltin(ret = Int, args = {PyObject, VOID_PTR_LIST}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = Int, args = {PyObject, VOID_PTR_LIST}, call = Direct, abi = ABI.ABI3T, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class})
public static int PyModule_GetToken(long modulePtr, long result) {
Object object = NativeToPythonInternalNode.executeUncached(modulePtr, false);
if (object instanceof PythonModule module) {
@@ -329,7 +332,7 @@ public static int PyModule_GetToken(long modulePtr, long result) {
throw PRaiseNode.raiseStatic(null, TypeError, ErrorMessages.EXPECTED_MODULE_GOT_T, object);
}
- @CApiBuiltin(ret = Int, args = {PyObject, VOID_PTR_LIST}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = Int, args = {PyObject, VOID_PTR_LIST}, call = Direct, abi = ABI.ABI3T, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class})
public static int PyModule_GetToken_DuringGC(long modulePtr, long result) {
Object object = NativeToPythonInternalNode.executeUncached(modulePtr, false);
if (object instanceof PythonModule module) {
@@ -340,7 +343,7 @@ public static int PyModule_GetToken_DuringGC(long modulePtr, long result) {
return -1;
}
- @CApiBuiltin(ret = Pointer, args = {PyObject}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = Pointer, args = {PyObject}, call = Direct, abi = ABI.ABI3T, retConversion = long.class, argConversions = {NativeToPythonNode.class})
public static long PyModule_GetState_DuringGC(long modulePtr) {
Object object = NativeToPythonInternalNode.executeUncached(modulePtr, false);
if (object instanceof PythonModule module) {
@@ -349,7 +352,7 @@ public static long PyModule_GetState_DuringGC(long modulePtr) {
return NULLPTR;
}
- @CApiBuiltin(ret = Int, args = {PY_ABI_INFO_PTR, ConstCharPtr}, call = Direct, abi = ABI.ABI3T)
+ @CApiBuiltin(ret = Int, args = {PY_ABI_INFO_PTR, ConstCharPtr}, call = Direct, abi = ABI.ABI3T, retConversion = int.class, argConversions = {long.class, long.class})
public static int PyABIInfo_Check(long info, long moduleName) {
TruffleString name = moduleName == NULLPTR ? T_EMPTY_STRING : (TruffleString) CharPtrToPythonNode.executeUncached(moduleName);
return CExtNodes.checkAbiInfo(null, info, name);
@@ -357,7 +360,7 @@ public static int PyABIInfo_Check(long info, long moduleName) {
private static final CApiTiming TIMING_INVOKE_TRAVERSE_PROC = CApiTiming.create(true, "invokeTraverseProc");
- @CApiBuiltin(ret = Int, args = {PyObject, Pointer, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, Pointer, Pointer}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class, long.class})
public static int GraalPyPrivate_Module_Traverse(long selfPtr, long visitFun, long arg) {
PythonModule self = (PythonModule) NativeToPythonInternalNode.executeUncached(selfPtr, false);
@@ -376,7 +379,7 @@ public static int GraalPyPrivate_Module_Traverse(long selfPtr, long visitFun, lo
return 0;
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyModule_GetFilenameObject extends CApiUnaryBuiltinNode {
@Specialization
static Object getFilename(PythonModule module,
@@ -398,13 +401,13 @@ static Object error(@SuppressWarnings("unused") Object module,
}
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyModuleObject, PyModuleDef}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyModuleObject, PyModuleDef}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, long.class})
public static void GraalPyPrivate_Module_SetDef(long object, long value) {
PythonModule module = (PythonModule) NativeToPythonInternalNode.executeUncached(object, false);
module.setNativeModuleDef(value);
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyModuleObject, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyModuleObject, Pointer}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, long.class})
public static void GraalPyPrivate_Module_SetState(long object, long value) {
PythonModule module = (PythonModule) NativeToPythonInternalNode.executeUncached(object, false);
module.setNativeModuleState(value);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextNamespaceBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextNamespaceBuiltins.java
index e771cc71f5..dca04c91c3 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextNamespaceBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextNamespaceBuiltins.java
@@ -40,15 +40,16 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import com.oracle.graal.python.PythonLanguage;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.common.HashingStorage;
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetIterator;
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageIterator;
@@ -64,7 +65,7 @@
public final class PythonCextNamespaceBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
static long _PyNamespace_New(long dictPtr) {
PythonLanguage language = PythonLanguage.get(null);
PSimpleNamespace namespace = PFactory.createSimpleNamespace(language);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextObjectBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextObjectBuiltins.java
index 0719aa213a..b3ea1e3cb7 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextObjectBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextObjectBuiltins.java
@@ -40,26 +40,21 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectConstPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyVarObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_hash_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.NotImplementedError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleStringStrict;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectConstPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyVarObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_hash_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.objects.ints.PInt.intValue;
import static com.oracle.graal.python.builtins.objects.object.PythonObject.IMMORTAL_REFCNT;
import static com.oracle.graal.python.nodes.ErrorMessages.UNHASHABLE_TYPE_P;
@@ -94,7 +89,12 @@
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
import com.oracle.graal.python.builtins.objects.cext.capi.CApiContext;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToPythonStringNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonStrictNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.HandleContext;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.HandlePointerConverter;
@@ -184,7 +184,7 @@ private PythonCextObjectBuiltins() {
private static final CApiTiming TIMING_GRAALPYPRIVATE_NOTIFYREFCOUNT = CApiTiming.create(false, "GraalPyPrivate_NotifyRefCount");
- @CApiBuiltin(ret = Void, args = {Pointer, Py_ssize_t}, call = Ignored, acquireGil = false, canRaise = false)
+ @CApiBuiltin(ret = Void, args = {Pointer, Py_ssize_t}, call = Ignored, acquireGil = false, canRaise = false, retConversion = void.class, argConversions = {long.class, long.class})
static void GraalPyPrivate_NotifyRefCount(long pointer, long refCount) {
assert PythonContext.get(null).ownsGil();
CApiTiming.enter();
@@ -212,7 +212,7 @@ static void GraalPyPrivate_NotifyRefCount(long pointer, long refCount) {
}
}
- @CApiBuiltin(ret = Void, args = {Pointer, Int}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer, Int}, call = Ignored, retConversion = void.class, argConversions = {long.class, int.class})
abstract static class GraalPyPrivate_BulkNotifyRefCount extends CApiBinaryBuiltinNode {
@Specialization
@@ -260,7 +260,8 @@ static Object doLong(long arrayPointer, int len,
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObject, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, NativeToPythonNode.class, int.class})
abstract static class GraalPyPrivate_Object_Call1 extends CApiQuaternaryBuiltinNode {
@Specialization
static Object doGeneric(Object callable, Object argsObj, Object kwargsObj, int singleArg,
@@ -280,7 +281,8 @@ static Object doGeneric(Object callable, Object argsObj, Object kwargsObj, int s
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObjectConstPtr, Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObjectConstPtr, Py_ssize_t}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, NativeToPythonNode.class, long.class, long.class})
abstract static class GraalPyPrivate_Object_CallMethodObjArgs extends CApiQuaternaryBuiltinNode {
@Specialization
@@ -296,7 +298,8 @@ static Object doMethod(Object receiver, Object methodName, long argsArray, long
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectAsTruffleString, PyObject, PyObjectConstPtr, Py_ssize_t, PyObject, PyObjectPtr}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectConstPtr, Py_ssize_t, PyObject, PyObjectPtr}, call = Ignored, retConversion = int.class, argConversions = {
+ ToPythonStringNode.class, NativeToPythonNode.class, long.class, long.class, NativeToPythonNode.class, long.class})
static int GraalPyPrivate_Object_VectorcallMethod(long methodNamePtr, long receiverPtr, long argsArray, long nargs, long kwnamesPtr, long resultPointer) {
TruffleString methodName = CastToTruffleStringNode.castKnownStringUncached(NativeToPythonInternalNode.executeUncached(methodNamePtr, false));
Object receiver = NativeToPythonInternalNode.executeUncached(receiverPtr, false);
@@ -351,7 +354,8 @@ private static Object[] readArguments(long argsArray, int nargs,
return args;
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString, PyObject, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr, PyObject, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, CharPtrToPythonNode.class, NativeToPythonNode.class, int.class})
abstract static class GraalPyPrivate_Object_CallMethod1 extends CApiQuaternaryBuiltinNode {
@Specialization
static Object doGeneric(Object receiver, TruffleString methodName, Object argsObj, int singleArg,
@@ -370,7 +374,8 @@ static Object doGeneric(Object receiver, TruffleString methodName, Object argsOb
}
// directly called without landing function
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyThreadState, PyObject, PyObjectConstPtr, Py_ssize_t, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyThreadState, PyObject, PyObjectConstPtr, Py_ssize_t, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ long.class, NativeToPythonNode.class, long.class, long.class, NativeToPythonNode.class})
abstract static class _PyObject_MakeTpCall extends CApi5BuiltinNode {
private static final TruffleLogger LOGGER = CApiContext.getLogger(_PyObject_MakeTpCall.class);
@@ -426,7 +431,7 @@ private static void logCallableType(Object callable) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_Str extends CApiUnaryBuiltinNode {
@Specialization(guards = "!isNoValue(obj)")
Object doGeneric(Object obj,
@@ -441,7 +446,7 @@ static TruffleString asciiNone(@SuppressWarnings("unused") PNone obj) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_Repr extends CApiUnaryBuiltinNode {
@Specialization(guards = "!isNoValue(obj)")
Object doGeneric(Object obj,
@@ -456,7 +461,7 @@ static TruffleString asciiNone(@SuppressWarnings("unused") PNone obj) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyObject_DelItem extends CApiBinaryBuiltinNode {
@Specialization
static Object doGeneric(Object obj, Object k,
@@ -467,7 +472,8 @@ static Object doGeneric(Object obj, Object k,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class PyObject_SetItem extends CApiTernaryBuiltinNode {
@Specialization
static Object doGeneric(Object obj, Object k, Object v,
@@ -478,7 +484,7 @@ static Object doGeneric(Object obj, Object k, Object v,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyObject_IsInstance extends CApiBinaryBuiltinNode {
@Specialization
static int doGeneric(Object obj, Object typ,
@@ -487,7 +493,7 @@ static int doGeneric(Object obj, Object typ,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyObject_IsSubclass extends CApiBinaryBuiltinNode {
@Specialization
static int doGeneric(Object obj, Object typ,
@@ -496,7 +502,7 @@ static int doGeneric(Object obj, Object typ,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_AsFileDescriptor extends CApiUnaryBuiltinNode {
@Specialization
static Object asFileDescriptor(Object obj,
@@ -519,7 +525,8 @@ static Object asFileDescriptor(Object obj,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class GraalPyPrivate_Object_GenericGetAttr extends CApiBinaryBuiltinNode {
@Specialization
static Object getAttr(Object obj, Object attr,
@@ -528,7 +535,8 @@ static Object getAttr(Object obj, Object attr,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class GraalPyPrivate_Object_GenericSetAttr extends CApiTernaryBuiltinNode {
@Specialization
static int setAttr(Object obj, Object attr, Object value,
@@ -538,7 +546,7 @@ static int setAttr(Object obj, Object attr, Object value,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_Object_GetOptionalAttr extends CApiTernaryBuiltinNode {
@Specialization
static int getOptionalAttr(Object obj, Object attr, long resultPointer,
@@ -561,7 +569,8 @@ static int getOptionalAttr(Object obj, Object attr, long resultPointer,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObjectAsTruffleString, PyObjectPtr}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, ToPythonStringNode.class,
+ long.class})
abstract static class GraalPyPrivate_Object_GetMethod extends CApiTernaryBuiltinNode {
@Specialization
static int getMethod(Object receiver, TruffleString name, long resultPointer,
@@ -587,7 +596,7 @@ static int getMethod(Object receiver, TruffleString name, long resultPointer,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class, long.class})
abstract static class GraalPyPrivate_Object_GetOptionalAttrString extends CApiTernaryBuiltinNode {
@Specialization
static int getOptionalAttr(Object obj, long attrPointer, long resultPointer,
@@ -616,7 +625,7 @@ static int getOptionalAttr(Object obj, long attrPointer, long resultPointer,
* Moving this to pure-C regresses, because creating the TypeError through the C error API is
* slower than upcalling and raising from Java.
*/
- @CApiBuiltin(ret = Py_hash_t, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Py_hash_t, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_HashNotImplemented extends CApiUnaryBuiltinNode {
@Specialization
static long unhashable(Object obj,
@@ -625,13 +634,13 @@ static long unhashable(Object obj,
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {long.class})
static int GraalPyPrivate_Object_IsTrue(long objPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(objPtr, false);
return PyObjectIsTrueNode.executeUncached(obj) ? 1 : 0;
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_Bytes extends CApiUnaryBuiltinNode {
@Specialization(guards = "isBuiltinBytes(bytes)")
static Object bytes(PBytes bytes) {
@@ -672,7 +681,7 @@ static Object doGeneric(Object obj,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
abstract static class GraalPyPrivate_NotImplemented extends CApiNullaryBuiltinNode {
@Specialization
static Object run() {
@@ -680,7 +689,7 @@ static Object run() {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
abstract static class GraalPyPrivate_NoValue extends CApiNullaryBuiltinNode {
@Specialization
static PNone doNoValue() {
@@ -688,7 +697,7 @@ static PNone doNoValue() {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
abstract static class GraalPyPrivate_None extends CApiNullaryBuiltinNode {
@Specialization
static PNone doNativeNone() {
@@ -696,7 +705,7 @@ static PNone doNativeNone() {
}
}
- @CApiBuiltin(ret = Void, args = {PyVarObject, Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyVarObject, Py_ssize_t}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_SET_SIZE extends CApiBinaryBuiltinNode {
@Specialization
static PNone set(PSequence obj, long size,
@@ -723,7 +732,7 @@ static PNone set(PSequence obj, long size,
}
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Object_IsFreed extends CApiUnaryBuiltinNode {
@Specialization
static int doLong(long pointer,
@@ -743,7 +752,7 @@ static int doLong(long pointer,
}
}
- @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored, retConversion = void.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Object_Dump extends CApiUnaryBuiltinNode {
@Specialization
@@ -791,7 +800,7 @@ static int doGeneric(long pointer) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_ASCII extends CApiUnaryBuiltinNode {
@Specialization(guards = "!isNoValue(obj)")
static Object ascii(Object obj,
@@ -806,7 +815,8 @@ static TruffleString asciiNone(@SuppressWarnings("unused") PNone obj) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
abstract static class PyObject_Format extends CApiBinaryBuiltinNode {
@Specialization
static Object ascii(Object obj, Object spec,
@@ -815,14 +825,14 @@ static Object ascii(Object obj, Object spec,
}
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_Object_GetAIter(long objectPtr) {
Object object = NativeToPythonInternalNode.executeUncached(objectPtr, false);
Object result = PyObjectGetAIter.executeUncached(object);
return PythonToNativeInternalNode.executeNewRefUncached(result);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_Object_GetIter(long objectPtr) {
Object object = NativeToPythonInternalNode.executeUncached(objectPtr, false);
Object result = PyObjectGetIter.executeUncached(object);
@@ -833,7 +843,7 @@ static long GraalPyPrivate_Object_GetIter(long objectPtr) {
* Moving this to pure C is much faster (100x) for true native tp_hash, but hashing managed
* objects (e.g. Strings) regresses (also by ~100x).
*/
- @CApiBuiltin(ret = Py_hash_t, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Py_hash_t, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_Hash extends CApiUnaryBuiltinNode {
@Specialization
static long hash(Object object,
@@ -843,7 +853,7 @@ static long hash(Object object,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyObject_Dir extends CApiUnaryBuiltinNode {
@Specialization
static Object dir(Object object,
@@ -853,7 +863,7 @@ static Object dir(Object object,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Object_GenericGetDict extends CApiUnaryBuiltinNode {
@Specialization
static Object getDict(Object object,
@@ -863,7 +873,7 @@ static Object getDict(Object object,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Is extends CApiBinaryBuiltinNode {
@Specialization
static int isTrue(Object a, Object b,
@@ -872,7 +882,8 @@ static int isTrue(Object a, Object b,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleStringStrict}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, CharPtrToPythonStrictNode.class})
abstract static class GraalPyPrivate_Object_GetAttrString extends CApiBinaryBuiltinNode {
@Specialization
static Object doGeneric(Object v, TruffleString name,
@@ -882,7 +893,8 @@ static Object doGeneric(Object v, TruffleString name,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleStringStrict, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonStrictNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Object_SetAttrString extends CApiTernaryBuiltinNode {
@Specialization
static int doGeneric(Object v, TruffleString name, Object w,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPickleBufferBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPickleBufferBuiltins.java
index 9f9aaa0e67..a173739200 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPickleBufferBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPickleBufferBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2023, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2023, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,15 +40,16 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
import static com.oracle.graal.python.runtime.exception.PythonErrorType.ValueError;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.pickle.PPickleBuffer;
import com.oracle.graal.python.builtins.objects.buffer.PythonBufferAccessLibrary;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.nodes.ErrorMessages;
import com.oracle.graal.python.nodes.PRaiseNode;
import com.oracle.truffle.api.dsl.Bind;
@@ -59,7 +60,7 @@
public final class PythonCextPickleBufferBuiltins {
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_PickleBuffer_viewobj extends CApiUnaryBuiltinNode {
@Specialization
static Object getviewobj(PPickleBuffer object,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPosixmoduleBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPosixmoduleBuiltins.java
index cde0bb10df..8449034db4 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPosixmoduleBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPosixmoduleBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,12 +40,13 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.lib.PyOSFSPathNode;
import com.oracle.truffle.api.dsl.Bind;
import com.oracle.truffle.api.dsl.Cached;
@@ -54,7 +55,7 @@
public final class PythonCextPosixmoduleBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyOS_FSPath extends CApiUnaryBuiltinNode {
@Specialization
static Object doit(Object path,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyLifecycleBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyLifecycleBuiltins.java
index 2d10e11f19..98b5feb3af 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyLifecycleBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyLifecycleBuiltins.java
@@ -40,9 +40,9 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.func_voidvoid;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.func_voidvoid;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
@@ -51,7 +51,7 @@
public final class PythonCextPyLifecycleBuiltins {
- @CApiBuiltin(ret = Int, args = {func_voidvoid}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {func_voidvoid}, call = Direct, retConversion = int.class, argConversions = {long.class})
abstract static class Py_AtExit extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyStateBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyStateBuiltins.java
index 58800a65ea..bd22c0cfbb 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyStateBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyStateBuiltins.java
@@ -40,27 +40,29 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFrameObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import static com.oracle.graal.python.runtime.PythonContext.NATIVE_NULL;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiNullaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.capi.CApiContext;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
import com.oracle.graal.python.builtins.objects.cext.capi.PThreadState;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.dict.PDict;
import com.oracle.graal.python.builtins.objects.frame.PFrame;
import com.oracle.graal.python.builtins.objects.ints.PInt;
@@ -87,7 +89,7 @@ public final class PythonCextPyStateBuiltins {
private static final TruffleLogger LOGGER = CApiContext.getLogger(PythonCextPyStateBuiltins.class);
- @CApiBuiltin(ret = Int, args = {}, acquireGil = false, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {}, acquireGil = false, call = Ignored, retConversion = int.class, argConversions = {})
static int GraalPyPrivate_GILState_Check() {
return PythonContext.get(null).ownsGil() ? 1 : 0;
}
@@ -99,7 +101,7 @@ static int GraalPyPrivate_GILState_Check() {
* state back in is equivalent to PyEval_RestoreThread(). Unlike CPython, GraalPy cannot install
* an arbitrary native thread-state pointer independently of the Java thread state.
*/
- @CApiBuiltin(ret = PyThreadState, args = {PyThreadState}, acquireGil = false, call = Direct)
+ @CApiBuiltin(ret = PyThreadState, args = {PyThreadState}, acquireGil = false, call = Direct, retConversion = long.class, argConversions = {long.class})
static long PyThreadState_Swap(long newThreadState) {
long oldThreadState = PythonContext.get(null).ownsGil() ? PythonCextCEvalBuiltins.PyEval_SaveThread() : NULLPTR;
if (newThreadState != NULLPTR) {
@@ -108,13 +110,13 @@ static long PyThreadState_Swap(long newThreadState) {
return oldThreadState;
}
- @CApiBuiltin(ret = Int, args = {}, acquireGil = false, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {}, acquireGil = false, call = Ignored, retConversion = int.class, argConversions = {})
static int GraalPyPrivate_GILState_Ensure() {
boolean acquired = GilNode.getUncached().acquire();
return acquired ? 1 : 0;
}
- @CApiBuiltin(ret = Void, args = {}, acquireGil = false, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {}, acquireGil = false, call = Ignored, retConversion = void.class, argConversions = {})
static void GraalPyPrivate_GILState_Release() {
GilNode.getUncached().release(true);
}
@@ -124,7 +126,7 @@ static void GraalPyPrivate_GILState_Release() {
* the C API, but were blocked at that time and therefore could not process the thread-local
* action that eagerly initializes their native 'tstate_current' TLS slot.
*/
- @CApiBuiltin(ret = PyThreadState, args = {Pointer}, acquireGil = false, call = Ignored)
+ @CApiBuiltin(ret = PyThreadState, args = {Pointer}, acquireGil = false, call = Ignored, retConversion = long.class, argConversions = {long.class})
static long GraalPyPrivate_ThreadState_Get(long tstateCurrentPtr) {
PythonContext context = PythonContext.get(null);
@@ -150,7 +152,7 @@ static long GraalPyPrivate_ThreadState_Get(long tstateCurrentPtr) {
return nativeThreadState;
}
- @CApiBuiltin(ret = Void, args = {}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {}, call = Ignored, retConversion = void.class, argConversions = {})
static Object GraalPyPrivate_BeforeThreadDetach() {
/*
* This is the PyGILState_Release path for native-created threads. CPython clears its own
@@ -164,7 +166,7 @@ static Object GraalPyPrivate_BeforeThreadDetach() {
return PNone.NO_VALUE;
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {})
abstract static class PyThreadState_GetDict extends CApiNullaryBuiltinNode {
@Specialization
@@ -177,7 +179,7 @@ static PDict get(
}
}
- @CApiBuiltin(ret = Int, args = {ArgDescriptor.UNSIGNED_LONG, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {ArgDescriptor.UNSIGNED_LONG, PyObject}, call = Direct, retConversion = int.class, argConversions = {long.class, NativeToPythonNode.class})
abstract static class PyThreadState_SetAsyncExc extends CApiBinaryBuiltinNode {
public static final TruffleLogger LOGGER = CApiContext.getLogger(PyThreadState_SetAsyncExc.class);
@@ -229,7 +231,7 @@ protected void perform(Access access) {
}
}
- @CApiBuiltin(ret = PyFrameObjectTransfer, args = {PyThreadState}, call = Direct)
+ @CApiBuiltin(ret = PyFrameObject, args = {PyThreadState}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class})
abstract static class PyThreadState_GetFrame extends CApiUnaryBuiltinNode {
@Specialization
Object get(@SuppressWarnings("unused") long threadState,
@@ -239,7 +241,7 @@ Object get(@SuppressWarnings("unused") long threadState,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Py_ssize_t}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {long.class})
abstract static class GraalPyPrivate_State_FindModule extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyThreadBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyThreadBuiltins.java
index 31941ae8bb..2cb118a61d 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyThreadBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPyThreadBuiltins.java
@@ -40,14 +40,14 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_LONG;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_LONG;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
public final class PythonCextPyThreadBuiltins {
- @CApiBuiltin(ret = UNSIGNED_LONG, args = {}, call = Direct, acquireGil = false, canRaise = false)
+ @CApiBuiltin(ret = UNSIGNED_LONG, args = {}, call = Direct, acquireGil = false, canRaise = false, retConversion = long.class, argConversions = {})
public static long PyThread_get_thread_ident() {
return Thread.currentThread().threadId();
}
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPythonRunBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPythonRunBuiltins.java
index b9739c3c26..e2a92cacf3 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPythonRunBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextPythonRunBuiltins.java
@@ -40,14 +40,13 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_COMPILER_FLAGS;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.TypeError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_COMPILER_FLAGS;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import static com.oracle.graal.python.nodes.BuiltinNames.T_COMPILE;
import static com.oracle.graal.python.nodes.BuiltinNames.T_EVAL;
@@ -60,6 +59,9 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApi5BuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.module.PythonModule;
import com.oracle.graal.python.lib.PyMappingCheckNode;
import com.oracle.graal.python.lib.PyObjectLookupAttr;
@@ -80,7 +82,9 @@ public final class PythonCextPythonRunBuiltins {
private static final int Py_file_input = 257;
private static final int Py_eval_input = 258;
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, Int, PyObject, PyObject, PY_COMPILER_FLAGS}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, Int, PyObject, PyObject,
+ PY_COMPILER_FLAGS}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class, int.class, NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class})
abstract static class PyRun_StringFlags extends CApi5BuiltinNode {
@Specialization(guards = "checkArgs(source, globals, locals, inliningTarget, isMapping)", limit = "1")
@@ -127,7 +131,8 @@ protected static boolean checkArgs(Object source, Object globals, Object locals,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, ConstCharPtr, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ CharPtrToPythonNode.class, CharPtrToPythonNode.class, int.class})
abstract static class Py_CompileString extends CApiTernaryBuiltinNode {
@Specialization(guards = {"isString(source)", "isString(filename)"})
static Object compile(Object source, Object filename, int type,
@@ -146,7 +151,8 @@ static Object fail(Object source, Object filename, Object type,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int, PY_COMPILER_FLAGS, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, ConstCharPtr, Int, PY_COMPILER_FLAGS,
+ Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class, CharPtrToPythonNode.class, int.class, long.class, int.class})
abstract static class Py_CompileStringExFlags extends CApi5BuiltinNode {
@Specialization(guards = {"isString(source)", "isString(filename)"})
static Object compile(Object source, Object filename, int type,
@@ -180,7 +186,8 @@ static Object fail(Object source, Object filename, Object type, long flags, Obje
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, PyObject, Int, PY_COMPILER_FLAGS, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, PyObject, Int, PY_COMPILER_FLAGS, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ CharPtrToPythonNode.class, NativeToPythonNode.class, int.class, long.class, int.class})
abstract static class Py_CompileStringObject extends CApi5BuiltinNode {
@Specialization(guards = "isString(source)")
static Object compile(Object source, Object filename, int type,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSetBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSetBuiltins.java
index 387e38818f..a2b4dc7da3 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSetBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSetBuiltins.java
@@ -40,12 +40,11 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.nodes.ErrorMessages.EXPECTED_S_NOT_P;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
@@ -58,7 +57,9 @@
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.common.HashingCollectionNodes;
import com.oracle.graal.python.builtins.objects.common.HashingStorage;
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetItem;
@@ -85,7 +86,7 @@ public final class PythonCextSetBuiltins {
private static final CApiTiming TIMING_PYSET_NEW = CApiTiming.create(false, "PySet_New");
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, acquireGil = false, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
static long PySet_New(long iterablePtr) {
CApiTiming.enter();
try {
@@ -103,7 +104,7 @@ static long PySet_New(long iterablePtr) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PySet_Contains extends CApiBinaryBuiltinNode {
@Specialization
static int contains(PSet anyset, Object item,
@@ -129,7 +130,7 @@ int fallback(@SuppressWarnings("unused") Object anyset, @SuppressWarnings("unuse
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PySet_Pop extends CApiUnaryBuiltinNode {
@Specialization
static Object pop(PSet set,
@@ -143,7 +144,7 @@ Object fallback(Object set) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyFrozenSet_New extends CApiUnaryBuiltinNode {
@Specialization(guards = {"!isNone(iterable)", "!isNoValue(iterable)"})
static Object newFrozenSet(Object iterable,
@@ -159,7 +160,7 @@ static Object newFrozenSet(PNone iterable,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PySet_Discard extends CApiBinaryBuiltinNode {
@Specialization(guards = {"!isNone(s)", "!isNoValue(s)"})
@@ -174,7 +175,7 @@ int fallback(Object set, @SuppressWarnings("unused") Object key) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PySet_Clear extends CApiUnaryBuiltinNode {
@Specialization(guards = {"!isNone(s)", "!isNoValue(s)"})
@@ -190,7 +191,7 @@ int fallback(Object set) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PySet_Add extends CApiBinaryBuiltinNode {
@Specialization
@@ -212,7 +213,7 @@ static int add(Object self, @SuppressWarnings("unused") Object o,
* A pure-C implementation regressed a mixed managed/native set/frozenset workload by about
* 1.16x.
*/
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class PySet_Size extends CApiUnaryBuiltinNode {
@Specialization
static long get(PBaseSet object,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSliceBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSliceBuiltins.java
index abc911b5a3..e26aebd99a 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSliceBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSliceBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2021, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,10 +40,9 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
@@ -51,6 +50,8 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.ellipsis.PEllipsis;
import com.oracle.graal.python.builtins.objects.slice.PIntSlice;
import com.oracle.graal.python.builtins.objects.slice.PObjectSlice;
@@ -65,7 +66,8 @@
public final class PythonCextSliceBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PySlice_New extends CApiTernaryBuiltinNode {
@Specialization
static Object slice(Object start, Object stop, Object step,
@@ -82,7 +84,7 @@ private static Object prepare(Object obj) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {})
abstract static class GraalPyPrivate_Ellipsis extends CApiNullaryBuiltinNode {
@Specialization
static Object run() {
@@ -90,7 +92,7 @@ static Object run() {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPySlice_Start extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PIntSlice slice) {
@@ -109,7 +111,7 @@ static Object error(Object slice,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPySlice_Stop extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PIntSlice slice) {
@@ -128,7 +130,7 @@ static Object error(Object slice,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPySlice_Step extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PIntSlice slice) {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSlotBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSlotBuiltins.java
index 7f30dc2894..b8f2505f69 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSlotBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSlotBuiltins.java
@@ -40,38 +40,37 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyByteArrayObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCFunctionObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCMethodObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyDescrObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFrameObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyGetSetDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyInstanceMethodObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyListObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyLongObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodDescrObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyModuleDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyModuleObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PySetObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PySliceObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTupleObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyVarObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINTPTR_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
+import static com.oracle.graal.python.annotations.ArgDescriptor.getter;
+import static com.oracle.graal.python.annotations.ArgDescriptor.setter;
+import static com.oracle.graal.python.annotations.ArgDescriptor.vectorcallfunc;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyByteArrayObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCFunctionObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCMethodObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyDescrObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyGetSetDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyInstanceMethodObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyListObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyLongObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodDescrObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PySetObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PySliceObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTupleObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyVarObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINTPTR_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.getter;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.setter;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.vectorcallfunc;
import static com.oracle.graal.python.nodes.HiddenAttr.METHOD_DEF_PTR;
import static com.oracle.graal.python.nodes.HiddenAttr.PROMOTED_START;
import static com.oracle.graal.python.nodes.HiddenAttr.PROMOTED_STEP;
@@ -89,8 +88,10 @@
import com.oracle.graal.python.builtins.objects.cext.capi.CApiContext;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.ObSizeNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
import com.oracle.graal.python.builtins.objects.cext.capi.PyMethodDefHelper;
import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.HandlePointerConverter;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
@@ -128,21 +129,21 @@
public final class PythonCextSlotBuiltins {
- @CApiBuiltin(ret = PyObjectPtr, args = {PyListObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObjectPtr, args = {PyListObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
public static long GraalPyPrivate_Get_PyListObject_ob_item(long ptr) {
PList object = (PList) NativeToPythonInternalNode.executeUncached(ptr, false);
assert !(object.getSequenceStorage() instanceof NativeByteSequenceStorage);
return PySequenceArrayWrapper.ensureNativeSequence(object);
}
- @CApiBuiltin(ret = PyObjectPtr, args = {PyTupleObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObjectPtr, args = {PyTupleObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
public static long GraalPyPrivate_Get_PyTupleObject_ob_item(long ptr) {
PTuple object = (PTuple) NativeToPythonInternalNode.executeUncached(ptr, false);
assert !(object.getSequenceStorage() instanceof NativeByteSequenceStorage);
return PySequenceArrayWrapper.ensureNativeSequence(object);
}
- @CApiBuiltin(ret = PyTypeObjectBorrowed, args = {PyCMethodObject}, call = Ignored)
+ @CApiBuiltin(ret = PyTypeObject, args = {PyCMethodObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyCMethodObject_mm_class extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PBuiltinMethod object) {
@@ -150,7 +151,7 @@ static Object get(PBuiltinMethod object) {
}
}
- @CApiBuiltin(ret = PyMethodDef, args = {PyCFunctionObject}, call = Ignored)
+ @CApiBuiltin(ret = PyMethodDef, args = {PyCFunctionObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyCFunctionObject_m_ml extends CApiUnaryBuiltinNode {
@Specialization
static long get(PythonBuiltinObject object,
@@ -174,7 +175,7 @@ static long get(PythonBuiltinObject object,
}
}
- @CApiBuiltin(ret = PyMethodDef, args = {PyCFunctionObject, PyMethodDef}, call = Ignored)
+ @CApiBuiltin(ret = PyMethodDef, args = {PyCFunctionObject, PyMethodDef}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_Set_PyCFunctionObject_m_ml extends CApiBinaryBuiltinNode {
@Specialization
static long get(PythonBuiltinObject object, long methodDefPtr,
@@ -194,7 +195,7 @@ static long get(PythonBuiltinObject object, long methodDefPtr,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyCFunctionObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyCFunctionObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyCFunctionObject_m_module extends CApiUnaryBuiltinNode {
@Specialization
Object get(Object object,
@@ -205,7 +206,7 @@ Object get(Object object,
}
}
- @CApiBuiltin(ret = Void, args = {PyCFunctionObject, PyObjectBorrowed}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyCFunctionObject, PyObject}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Set_PyCFunctionObject_m_module extends CApiBinaryBuiltinNode {
@Specialization
Object set(Object object, Object value,
@@ -216,7 +217,7 @@ Object set(Object object, Object value,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyCFunctionObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyCFunctionObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyCFunctionObject_m_self extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PBuiltinMethod object) {
@@ -229,7 +230,7 @@ static Object get(PMethod object) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyCFunctionObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyCFunctionObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyCFunctionObject_m_weakreflist extends CApiUnaryBuiltinNode {
@Specialization
static int get(@SuppressWarnings("unused") Object object) {
@@ -237,7 +238,7 @@ static int get(@SuppressWarnings("unused") Object object) {
}
}
- @CApiBuiltin(ret = vectorcallfunc, args = {PyCFunctionObject}, call = Ignored)
+ @CApiBuiltin(ret = vectorcallfunc, args = {PyCFunctionObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyCFunctionObject_vectorcall extends CApiUnaryBuiltinNode {
@Specialization
static long get(@SuppressWarnings("unused") Object object) {
@@ -245,7 +246,7 @@ static long get(@SuppressWarnings("unused") Object object) {
}
}
- @CApiBuiltin(ret = Pointer, args = {PyByteArrayObject}, call = Ignored)
+ @CApiBuiltin(ret = Pointer, args = {PyByteArrayObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyByteArrayObject_ob_start extends CApiUnaryBuiltinNode {
@Specialization
@@ -255,7 +256,7 @@ static long doObStart(PByteArray object) {
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyByteArrayObject}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyByteArrayObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyByteArrayObject_ob_exports extends CApiUnaryBuiltinNode {
@Specialization
@@ -264,7 +265,7 @@ static long get(PByteArray object) {
}
}
- @CApiBuiltin(ret = Void, args = {PyByteArrayObject, Int}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyByteArrayObject, Int}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class, int.class})
abstract static class GraalPyPrivate_Set_PyByteArrayObject_ob_exports extends CApiBinaryBuiltinNode {
@Specialization
@@ -274,7 +275,7 @@ static Object set(PByteArray object, int value) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyDescrObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyDescrObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyDescrObject_d_name extends CApiUnaryBuiltinNode {
@Specialization
@@ -288,7 +289,7 @@ static Object get(GetSetDescriptor object) {
}
}
- @CApiBuiltin(ret = PyTypeObjectBorrowed, args = {PyDescrObject}, call = Ignored)
+ @CApiBuiltin(ret = PyTypeObject, args = {PyDescrObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyDescrObject_d_type extends CApiUnaryBuiltinNode {
@Specialization
@@ -303,7 +304,7 @@ static Object get(GetSetDescriptor object) {
}
}
- @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyFrameObject_f_lineno extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PFrame frame,
@@ -312,7 +313,7 @@ static Object get(PFrame frame,
}
}
- @CApiBuiltin(ret = Pointer, args = {PyGetSetDef}, call = Ignored)
+ @CApiBuiltin(ret = Pointer, args = {PyGetSetDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyGetSetDef_closure extends CApiUnaryBuiltinNode {
@Specialization
static long get(@SuppressWarnings("unused") long object) {
@@ -320,7 +321,7 @@ static long get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = ConstCharPtrAsTruffleString, args = {PyGetSetDef}, call = Ignored)
+ @CApiBuiltin(ret = ConstCharPtr, args = {PyGetSetDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyGetSetDef_doc extends CApiUnaryBuiltinNode {
@Specialization
long get(@SuppressWarnings("unused") long object) {
@@ -328,7 +329,7 @@ long get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = getter, args = {PyGetSetDef}, call = Ignored)
+ @CApiBuiltin(ret = getter, args = {PyGetSetDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyGetSetDef_get extends CApiUnaryBuiltinNode {
@Specialization
static long get(@SuppressWarnings("unused") long object) {
@@ -336,7 +337,7 @@ static long get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = ConstCharPtrAsTruffleString, args = {PyGetSetDef}, call = Ignored)
+ @CApiBuiltin(ret = ConstCharPtr, args = {PyGetSetDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyGetSetDef_name extends CApiUnaryBuiltinNode {
@Specialization
long get(@SuppressWarnings("unused") long object) {
@@ -344,7 +345,7 @@ long get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = setter, args = {PyGetSetDef}, call = Ignored)
+ @CApiBuiltin(ret = setter, args = {PyGetSetDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyGetSetDef_set extends CApiUnaryBuiltinNode {
@Specialization
static long get(@SuppressWarnings("unused") long object) {
@@ -352,7 +353,7 @@ static long get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = PyMethodDef, args = {PyMethodDescrObject}, call = Ignored)
+ @CApiBuiltin(ret = PyMethodDef, args = {PyMethodDescrObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyMethodDescrObject_d_method extends CApiUnaryBuiltinNode {
@Specialization
@@ -371,7 +372,7 @@ static long get(PBuiltinFunction builtinFunction,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyInstanceMethodObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyInstanceMethodObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyInstanceMethodObject_func extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PDecoratedMethod object) {
@@ -379,7 +380,7 @@ static Object get(PDecoratedMethod object) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyMethodObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyMethodObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyMethodObject_im_func extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PBuiltinMethod object) {
@@ -392,7 +393,7 @@ static Object get(PMethod object) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyMethodObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyMethodObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyMethodObject_im_self extends CApiUnaryBuiltinNode {
@Specialization
@@ -406,7 +407,7 @@ static Object get(PMethod object) {
}
}
- @CApiBuiltin(ret = ConstCharPtrAsTruffleString, args = {PyModuleDef}, call = Ignored)
+ @CApiBuiltin(ret = ConstCharPtr, args = {PyModuleDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyModuleDef_m_doc extends CApiUnaryBuiltinNode {
@Specialization
static int get(@SuppressWarnings("unused") Object object) {
@@ -414,7 +415,7 @@ static int get(@SuppressWarnings("unused") Object object) {
}
}
- @CApiBuiltin(ret = PyMethodDef, args = {PyModuleDef}, call = Ignored)
+ @CApiBuiltin(ret = PyMethodDef, args = {PyModuleDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyModuleDef_m_methods extends CApiUnaryBuiltinNode {
@Specialization
static int get(@SuppressWarnings("unused") long object) {
@@ -422,7 +423,7 @@ static int get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = ConstCharPtrAsTruffleString, args = {PyModuleDef}, call = Ignored)
+ @CApiBuiltin(ret = ConstCharPtr, args = {PyModuleDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyModuleDef_m_name extends CApiUnaryBuiltinNode {
@Specialization
static int get(@SuppressWarnings("unused") long object) {
@@ -430,7 +431,7 @@ static int get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyModuleDef}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyModuleDef}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyModuleDef_m_size extends CApiUnaryBuiltinNode {
@Specialization
static long get(@SuppressWarnings("unused") long object) {
@@ -438,7 +439,7 @@ static long get(@SuppressWarnings("unused") long object) {
}
}
- @CApiBuiltin(ret = PyModuleDef, args = {PyModuleObject}, call = Ignored)
+ @CApiBuiltin(ret = PyModuleDef, args = {PyModuleObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyModuleObject_md_def extends CApiUnaryBuiltinNode {
@Specialization
static long get(PythonModule object) {
@@ -446,7 +447,7 @@ static long get(PythonModule object) {
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyModuleObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyModuleObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyModuleObject_md_dict extends CApiUnaryBuiltinNode {
@Specialization
static Object get(Object object,
@@ -455,7 +456,7 @@ static Object get(Object object,
}
}
- @CApiBuiltin(ret = Pointer, args = {PyModuleObject}, call = Ignored)
+ @CApiBuiltin(ret = Pointer, args = {PyModuleObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyModuleObject_md_state extends CApiUnaryBuiltinNode {
@Specialization
static Object get(PythonModule object) {
@@ -463,7 +464,7 @@ static Object get(PythonModule object) {
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {Pointer}, call = Ignored, retConversion = long.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Get_PyObject_ob_refcnt extends CApiUnaryBuiltinNode {
@Specialization
@@ -480,7 +481,7 @@ static long get(long pointer) {
}
}
- @CApiBuiltin(ret = PyTypeObjectBorrowed, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyTypeObject, args = {PyObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyObject_ob_type extends CApiUnaryBuiltinNode {
@Specialization
@@ -498,7 +499,7 @@ static Object get(Object object,
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PySetObject}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PySetObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PySetObject_used extends CApiUnaryBuiltinNode {
@Specialization
@@ -532,7 +533,7 @@ static Object get(Node inliningTarget, PSlice object, HiddenAttr key, Object val
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PySliceObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PySliceObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PySliceObject_start extends CApiUnaryBuiltinNode {
@Specialization
@@ -543,7 +544,7 @@ static Object doStart(PSlice object,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PySliceObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PySliceObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PySliceObject_step extends CApiUnaryBuiltinNode {
@Specialization
@@ -554,7 +555,7 @@ static Object doStep(PSlice object,
}
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PySliceObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PySliceObject}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PySliceObject_stop extends CApiUnaryBuiltinNode {
@Specialization
@@ -565,7 +566,7 @@ static Object doStop(PSlice object,
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyVarObject}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyVarObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyVarObject_ob_size extends CApiUnaryBuiltinNode {
@Specialization
@@ -578,7 +579,7 @@ static long get(Object object,
}
}
- @CApiBuiltin(ret = UINTPTR_T, args = {PyLongObject}, call = Ignored)
+ @CApiBuiltin(ret = UINTPTR_T, args = {PyLongObject}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Get_PyLongObject_long_value_lv_tag extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextStructSeqBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextStructSeqBuiltins.java
index a6e08c511b..ed800f7903 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextStructSeqBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextStructSeqBuiltins.java
@@ -40,15 +40,14 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.SystemError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObjectTransfer;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.readPtrArrayElement;
import static com.oracle.graal.python.util.PythonUtils.EMPTY_OBJECT_ARRAY;
@@ -64,6 +63,9 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.FromCharPointerNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.dict.PDict;
import com.oracle.graal.python.builtins.objects.function.PKeyword;
import com.oracle.graal.python.builtins.objects.tuple.PTuple;
@@ -94,7 +96,7 @@
public final class PythonCextStructSeqBuiltins {
- @CApiBuiltin(ret = Int, args = {PyTypeObject, Pointer, Int}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyTypeObject, Pointer, Int}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonClassNode.class, long.class, int.class})
abstract static class GraalPyPrivate_StructSequence_InitType2 extends CApiTernaryBuiltinNode {
@Specialization
@@ -127,7 +129,8 @@ static int doGeneric(PythonAbstractClass klass, long fields, int nInSequence) {
}
}
- @CApiBuiltin(ret = PyTypeObjectTransfer, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Pointer, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyTypeObject, args = {ConstCharPtr, ConstCharPtr, Pointer,
+ Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class, CharPtrToPythonNode.class, long.class, int.class})
abstract static class GraalPyPrivate_StructSequence_NewType extends CApiQuaternaryBuiltinNode {
@Specialization
@@ -150,7 +153,7 @@ Object doGeneric(TruffleString typeName, TruffleString typeDoc, long fields, int
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyTypeObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyTypeObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonClassNode.class})
abstract static class PyStructSequence_New extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSysBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSysBuiltins.java
index e32485a23a..fa55e4b314 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSysBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextSysBuiltins.java
@@ -40,14 +40,12 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
import static com.oracle.graal.python.builtins.modules.io.IONodes.T_WRITE;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
import static com.oracle.graal.python.nodes.BuiltinNames.T_STDERR;
import static com.oracle.graal.python.nodes.BuiltinNames.T_STDOUT;
import static com.oracle.graal.python.runtime.PythonContext.NATIVE_NULL;
@@ -57,7 +55,10 @@
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.FromCharPointerNode;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.module.PythonModule;
import com.oracle.graal.python.lib.PyObjectCallMethodObjArgs;
import com.oracle.graal.python.lib.PyObjectLookupAttr;
@@ -75,7 +76,7 @@
public final class PythonCextSysBuiltins {
- @CApiBuiltin(ret = PyObjectBorrowed, args = {ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {CharPtrToPythonNode.class})
abstract static class PySys_GetObject extends CApiUnaryBuiltinNode {
@Specialization
@@ -118,7 +119,7 @@ private static Object selectOut(int fd) {
}
/** similar to {@code sys_pyfile_write} */
- @CApiBuiltin(ret = Int, args = {Int, ConstCharPtr}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = Int, args = {Int, ConstCharPtr}, call = Ignored, acquireGil = false, retConversion = int.class, argConversions = {int.class, long.class})
@TruffleBoundary
public static int GraalPyPrivate_Sys_WriteStd(int fd, long msgPtr) {
TruffleString msg = FromCharPointerNode.executeUncached(msgPtr);
@@ -127,7 +128,7 @@ public static int GraalPyPrivate_Sys_WriteStd(int fd, long msgPtr) {
}
/** similar to {@code sys_pyfile_write_unicode} */
- @CApiBuiltin(ret = Int, args = {Int, PyObject}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = Int, args = {Int, PyObject}, call = Ignored, acquireGil = false, retConversion = int.class, argConversions = {int.class, NativeToPythonNode.class})
@TruffleBoundary
public static int GraalPyPrivate_Sys_PyFileWriteUnicode(int fd, long unicodePtr) {
Object msg = NativeToPythonInternalNode.executeUncached(unicodePtr, false);
@@ -135,7 +136,7 @@ public static int GraalPyPrivate_Sys_PyFileWriteUnicode(int fd, long unicodePtr)
return 0;
}
- @CApiBuiltin(ret = Int, args = {ConstCharPtr, PyObject}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = Int, args = {ConstCharPtr, PyObject}, call = Ignored, acquireGil = false, retConversion = int.class, argConversions = {long.class, NativeToPythonNode.class})
@TruffleBoundary
public static int GraalPyPrivate_Sys_Audit(long eventPtr, long argsPtr) {
TruffleString event = FromCharPointerNode.executeUncached(eventPtr);
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTracebackBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTracebackBuiltins.java
index ce8ffd0192..745e41fb2e 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTracebackBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTracebackBuiltins.java
@@ -40,11 +40,11 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFrameObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
import com.oracle.graal.python.PythonLanguage;
@@ -52,6 +52,8 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiTernaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes;
import com.oracle.graal.python.builtins.objects.exception.ExceptionNodes;
import com.oracle.graal.python.builtins.objects.exception.PBaseException;
@@ -69,7 +71,8 @@
public final class PythonCextTracebackBuiltins {
- @CApiBuiltin(ret = Void, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int}, call = Direct)
+ @CApiBuiltin(ret = Void, args = {ConstCharPtr, ConstCharPtr, Int}, call = Direct, retConversion = void.class, argConversions = {CharPtrToPythonNode.class,
+ CharPtrToPythonNode.class, int.class})
abstract static class _PyTraceback_Add extends CApiTernaryBuiltinNode {
@Specialization
static Object tbHere(TruffleString funcname, TruffleString filename, int lineno,
@@ -82,7 +85,7 @@ static Object tbHere(TruffleString funcname, TruffleString filename, int lineno,
}
}
- @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyFrameObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class PyTraceBack_Here extends CApiUnaryBuiltinNode {
@Specialization
static int tbHere(PFrame frame,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTupleBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTupleBuiltins.java
index c820355956..3d4e84c44d 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTupleBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTupleBuiltins.java
@@ -40,15 +40,12 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IndexError;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.runtime.PythonContext.NATIVE_NULL;
import com.oracle.graal.python.PythonLanguage;
@@ -59,7 +56,10 @@
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.EnsureCapacityNode;
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemNode;
@@ -86,12 +86,12 @@
public final class PythonCextTupleBuiltins {
- @CApiBuiltin(ret = PyObjectRawPointer, call = Ignored)
+ @CApiBuiltin(ret = PyObject, call = Ignored, retConversion = long.class, argConversions = {})
static long GraalPyPrivate_Tuple_Empty() {
return PythonToNativeInternalNode.executeNewRefUncached(PFactory.createEmptyTuple(PythonLanguage.get(null)));
}
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyObject, Py_ssize_t}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Py_ssize_t}, call = Ignored, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonNode.class, long.class})
public abstract static class GraalPyPrivate_Tuple_GetItem extends CApiBinaryBuiltinNode {
public abstract Object execute(PTuple tuple, long key);
@@ -155,7 +155,8 @@ private static int checkIndex(Node inliningTarget, long key, SequenceStorage seq
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Py_ssize_t, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Py_ssize_t, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ long.class, long.class})
abstract static class PyTuple_GetSlice extends CApiTernaryBuiltinNode {
@Specialization
static Object getSlice(PTuple tuple, Object iLow, Object iHigh,
@@ -184,7 +185,7 @@ private static Object doGetSlice(SequenceStorage storage, Node inliningTarget, O
}
}
- @CApiBuiltin(ret = PyObjectPtr, args = {PyObject, Py_ssize_t, PyObjectPtr}, call = Ignored)
+ @CApiBuiltin(ret = PyObjectPtr, args = {PyObject, Py_ssize_t, PyObjectPtr}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class, long.class})
abstract static class GraalPyPrivate_Tuple_Resize extends CApiTernaryBuiltinNode {
@Specialization
public static long size(PTuple tuple, long size, long obItemsPtr,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTypeBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTypeBuiltins.java
index 691e893535..6f289c9201 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTypeBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextTypeBuiltins.java
@@ -40,20 +40,15 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyBufferProcs;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyBufferProcs;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.objects.cext.structs.CFields.PyTypeObject__tp_name;
import static com.oracle.graal.python.nodes.HiddenAttr.AS_BUFFER;
import static com.oracle.graal.python.nodes.HiddenAttr.METHOD_DEF_PTR;
@@ -64,6 +59,7 @@
import static com.oracle.graal.python.util.PythonUtils.EMPTY_OBJECT_ARRAY;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBinaryBuiltinNode;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
@@ -77,6 +73,7 @@
import com.oracle.graal.python.builtins.objects.cext.capi.CApiMemberAccessNodes.ReadMemberNode;
import com.oracle.graal.python.builtins.objects.cext.capi.CApiMemberAccessNodes.WriteMemberNode;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.GetterRoot;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.PExternalFunctionWrapper;
@@ -84,7 +81,9 @@
import com.oracle.graal.python.builtins.objects.cext.capi.MethodDescriptorWrapper;
import com.oracle.graal.python.builtins.objects.cext.capi.PyMethodFlags;
import com.oracle.graal.python.builtins.objects.cext.capi.WrapperDescriptorRootNodesGen;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassInternalNode;
@@ -142,8 +141,10 @@
public final class PythonCextTypeBuiltins {
- @CApiBuiltin(ret = PyObjectBorrowed, args = {PyTypeObject, PyObject}, call = Direct)
- @CApiBuiltin(name = "_PyType_LookupRef", ret = PyObjectTransfer, args = {PyTypeObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyTypeObject, PyObject}, call = Direct, retConversion = ToNativeBorrowedNode.class, argConversions = {NativeToPythonClassNode.class,
+ NativeToPythonNode.class})
+ @CApiBuiltin(name = "_PyType_LookupRef", ret = PyObject, args = {PyTypeObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonClassNode.class, NativeToPythonNode.class})
abstract static class _PyType_Lookup extends CApiBinaryBuiltinNode {
@Specialization
Object doGeneric(Object type, Object name,
@@ -201,7 +202,8 @@ Object doGeneric(Object type, Object name,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyTypeObject, ConstCharPtrAsTruffleString}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyTypeObject, ConstCharPtr}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonClassNode.class, CharPtrToPythonNode.class})
abstract static class GraalPyPrivate_Compute_Mro extends CApiBinaryBuiltinNode {
@Specialization
@@ -219,7 +221,7 @@ public NativeTypeDictStorage(Shape shape) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyTypeObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonClassNode.class})
abstract static class GraalPyPrivate_NewTypeDict extends CApiUnaryBuiltinNode {
@Specialization
@@ -233,7 +235,7 @@ static PDict doGeneric(PythonNativeClass nativeClass) {
}
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyTypeObject}, call = Direct)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyTypeObject}, call = Direct, retConversion = void.class, argConversions = {NativeToPythonClassNode.class})
abstract static class PyType_Modified extends CApiUnaryBuiltinNode {
@TruffleBoundary
@Specialization
@@ -277,7 +279,7 @@ public static void invalidateMroLookup(PythonAbstractClass klass) {
}
- @CApiBuiltin(ret = Int, args = {Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {Pointer}, call = Ignored, retConversion = int.class, argConversions = {long.class})
abstract static class GraalPyPrivate_Trace_Type extends CApiUnaryBuiltinNode {
private static final TruffleLogger LOGGER = CApiContext.getLogger(GraalPyPrivate_Trace_Type.class);
@@ -329,7 +331,9 @@ private static PythonBuiltinObject typeAddMethod(PythonLanguage language, long m
return func;
}
- @CApiBuiltin(ret = Int, args = {Pointer, PyTypeObject, PyObject, ConstCharPtrAsTruffleString, Pointer, Int, ConstCharPtrAsTruffleString}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {Pointer, PyTypeObject, PyObject, ConstCharPtr, Pointer, Int,
+ ConstCharPtr}, call = Ignored, retConversion = int.class, argConversions = {long.class, NativeToPythonClassNode.class, NativeToPythonNode.class,
+ CharPtrToPythonNode.class, long.class, int.class, CharPtrToPythonNode.class})
public static int GraalPyPrivate_Type_AddFunctionToType(long methodDefPtr, long typeRaw, long dictRaw, long nameRaw, long cfunc, int flags, long docRaw) {
CompilerAsserts.neverPartOfCompilation();
try {
@@ -347,7 +351,7 @@ public static int GraalPyPrivate_Type_AddFunctionToType(long methodDefPtr, long
}
}
- @CApiBuiltin(ret = Int, args = {PyTypeObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyTypeObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonClassNode.class})
public static int GraalPyPrivate_Type_AddOperators(long type) {
CompilerAsserts.neverPartOfCompilation();
try {
@@ -362,7 +366,8 @@ public static int GraalPyPrivate_Type_AddOperators(long type) {
return -1;
}
- @CApiBuiltin(ret = Int, args = {PyTypeObjectRawPointer, PyObjectRawPointer, ConstCharPtr, Int, Py_ssize_t, Int, ConstCharPtr}, call = CApiCallPath.Ignored)
+ @CApiBuiltin(ret = Int, args = {PyTypeObject, PyObject, ConstCharPtr, Int, Py_ssize_t, Int,
+ ConstCharPtr}, call = CApiCallPath.Ignored, retConversion = int.class, argConversions = {long.class, long.class, long.class, int.class, long.class, int.class, long.class})
@TruffleBoundary
public static int GraalPyPrivate_Type_AddMember(long clazzPtr, long tpDictPtr, long memberNamePtr, int memberType, long offset, int canSet, long memberDocPtr) {
Object clazz = NativeToPythonClassInternalNode.executeUncached(clazzPtr);
@@ -392,7 +397,8 @@ public static int addMember(Object clazz, PDict tpDict, TruffleString memberName
return 0;
}
- @CApiBuiltin(ret = Int, args = {PyTypeObjectRawPointer, PyObjectRawPointer, ConstCharPtr, Pointer, Pointer, ConstCharPtr, Pointer}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyTypeObject, PyObject, ConstCharPtr, Pointer, Pointer, ConstCharPtr, Pointer}, call = Ignored, retConversion = int.class, argConversions = {
+ long.class, long.class, long.class, long.class, long.class, long.class, long.class})
static int GraalPyPrivate_Type_AddGetSet(long clsPtr, long dictPtr, long namePtr, long getter, long setter, long docPtr, long closure) {
Object cls = NativeToPythonClassInternalNode.executeUncached(clsPtr);
PDict dict = (PDict) NativeToPythonInternalNode.executeUncached(dictPtr, false);
@@ -443,7 +449,7 @@ private static PRootNode setterRootNode(TruffleString name, PythonLanguage lang)
return lang.createCachedExternalFunWrapperRootNode(rootNodeFunction, SetterRoot.class, PExternalFunctionWrapper.SETTER, name, true, false);
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyTypeObject, PyBufferProcs}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {PyTypeObject, PyBufferProcs}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonClassNode.class, long.class})
abstract static class GraalPyPrivate_Type_SetBufferProcs extends CApiBinaryBuiltinNode {
@Specialization
@@ -464,7 +470,7 @@ static Object set(PythonAbstractObject object, long bufferProcs,
}
- @CApiBuiltin(ret = ArgDescriptor.Void, args = {Pointer, Int}, call = Ignored)
+ @CApiBuiltin(ret = ArgDescriptor.Void, args = {Pointer, Int}, call = Ignored, retConversion = void.class, argConversions = {long.class, int.class})
public static void GraalPyPrivate_Type_NotifyDealloc(long ptr, int typeLookupIdx) {
assert CStructAccess.readIntField(ptr, CFields.PyTypeObject__tp_version_tag) == typeLookupIdx;
if (typeLookupIdx != 0) {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextUnicodeBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextUnicodeBuiltins.java
index 7e67ff7c82..e2f4cdd7ef 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextUnicodeBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextUnicodeBuiltins.java
@@ -40,6 +40,18 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_WCHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_SSIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_UCS4;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_UNICODE_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectConstPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PY_ERROR_HANDLER;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.IndexError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.MemoryError;
import static com.oracle.graal.python.builtins.PythonBuiltinClassType.OverflowError;
@@ -55,22 +67,6 @@
import static com.oracle.graal.python.builtins.modules.CodecsModuleBuiltins.T_UTF_32_LE;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_WCHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleStringStrict;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_SSIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_UCS4;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_UNICODE_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectConstPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PY_ERROR_HANDLER;
import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.GraalPyUnicodeObjectUtil.GRAALPY_UNICODE_INTERN_STATE_INTERNED;
import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.GraalPyUnicodeObjectUtil.GRAALPY_UNICODE_INTERN_STATE_NOT_INTERNED;
import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.GraalPyUnicodeObjectUtil.GRAALPY_UNICODE_INTERN_STATE_UNDETERMINED;
@@ -119,14 +115,20 @@
import com.oracle.graal.python.builtins.objects.cext.PythonAbstractNativeObject;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.EnsurePythonObjectNode;
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodes.FromCharPointerNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToPythonStringNode;
import com.oracle.graal.python.builtins.objects.cext.capi.PySequenceArrayWrapper;
import com.oracle.graal.python.builtins.objects.cext.capi.UnicodeObjectNodes.UnicodeAsWideCharNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.AllocateNativeObjectStubNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonStrictNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.FirstToNativeNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.HandlePointerConverter;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.GraalPyUnicodeObjectUtil;
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.EncodeNativeStringNode;
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes.ReadUnicodeArrayNode;
@@ -221,7 +223,7 @@ static boolean isAnyString(Node inliningTarget, Object obj, GetClassNode getClas
return PGuards.isString(obj) || isStringSubtype(inliningTarget, obj, getClassNode, isSubtypeNode);
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PY_UCS4}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PY_UCS4}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {int.class})
abstract static class GraalPyPrivate_Unicode_FromOrdinal extends CApiUnaryBuiltinNode {
@Specialization
static Object chr(int value,
@@ -233,7 +235,7 @@ static Object chr(int value,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleStringStrict}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonStrictNode.class})
abstract static class PyUnicode_FromString extends CApiUnaryBuiltinNode {
@Specialization
static TruffleString fromString(TruffleString value) {
@@ -241,7 +243,7 @@ static TruffleString fromString(TruffleString value) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_FromObject extends CApiUnaryBuiltinNode {
@Specialization
@@ -278,14 +280,15 @@ protected boolean isPStringType(Node inliningTarget, Object obj, GetClassNode ge
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObjectAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {ToPythonStringNode.class})
public static long _PyUnicode_Copy(long unicodePtr) {
Object unicode = NativeToPythonInternalNode.executeUncached(unicodePtr, false);
Object copy = PFactory.createString(PythonLanguage.get(null), CastToTruffleStringNode.castKnownStringUncached(unicode));
return PythonToNativeInternalNode.executeUncached(copy, true);
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_Concat extends CApiBinaryBuiltinNode {
@@ -316,7 +319,8 @@ static Object rightNotString(@SuppressWarnings("unused") Object left, Object rig
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, CharPtrToPythonNode.class, CharPtrToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_FromEncodedObject extends CApiTernaryBuiltinNode {
@@ -353,7 +357,7 @@ static Object doGeneric(Object obj, Object encodingObj, Object errorsObj,
private static final CApiTiming TIMING_GRAALPYPRIVATE_UNICODE_LOOKUPANDINTERN = CApiTiming.create(false, "GraalPyPrivate_Unicode_LookupAndIntern");
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
static long GraalPyPrivate_Unicode_LookupAndIntern(long objPtr) {
CApiTiming.enter();
try {
@@ -387,7 +391,7 @@ static long GraalPyPrivate_Unicode_LookupAndIntern(long objPtr) {
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Unicode_CheckInterned extends CApiUnaryBuiltinNode {
@Specialization
static int withPString(PString str) {
@@ -400,7 +404,8 @@ static int nil(@SuppressWarnings("unused") Object obj) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Int, Int, Int}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Int, Int, Int}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class, int.class,
+ int.class, int.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class _PyUnicode_FormatLong extends CApiQuaternaryBuiltinNode {
@@ -517,7 +522,8 @@ static Object formatLong(Object val, int alt, int prec, int type,
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PY_UCS4, Py_ssize_t, Py_ssize_t, Int}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PY_UCS4, Py_ssize_t, Py_ssize_t, Int}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class, int.class,
+ long.class, long.class, int.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_FindChar extends CApi5BuiltinNode {
@Specialization(guards = {"isString(string) || isStringSubtype(inliningTarget, string, getClassNode, isSubtypeNode)", "direction > 0"})
@@ -550,7 +556,8 @@ static long find(Object string, @SuppressWarnings("unused") Object c, @SuppressW
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Py_ssize_t, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Py_ssize_t, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ long.class, long.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_Substring extends CApiTernaryBuiltinNode {
@Specialization(guards = {"isString(s) || isStringSubtype(s, inliningTarget, getClassNode, isSubtypeNode)"}, limit = "1")
@@ -582,7 +589,8 @@ protected static boolean isStringSubtype(Object obj, Node n, GetClassNode getCla
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_Join extends CApiBinaryBuiltinNode {
@Specialization(guards = {"isString(separator) || isStringSubtype(inliningTarget, separator, getClassNode, isSubtypeNode)"})
@@ -603,7 +611,7 @@ static Object find(Object separator, @SuppressWarnings("unused") Object seq,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, CharPtrToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class _PyUnicode_EqualToASCIIString extends CApiBinaryBuiltinNode {
@@ -628,7 +636,7 @@ static Object compare(Object left, Object right,
private static final CApiTiming TIMING_PYUNICODE_COMPAREWITHASCIISTRING = CApiTiming.create(false, "PyUnicode_CompareWithASCIIString");
- @CApiBuiltin(ret = Int, args = {PyObjectAsTruffleString, ConstCharPtr}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {ToPythonStringNode.class, long.class})
public static int PyUnicode_CompareWithASCIIString(long uniPtr, long str) {
/*
* This method cannot throw Python exceptions and doesn't need a GIL since both, the unicode
@@ -676,7 +684,7 @@ private static class InvalidStringException extends ControlFlowException {
static final InvalidStringException INSTANCE = new InvalidStringException();
}
- @CApiBuiltin(ret = Int, args = {PyObjectAsTruffleString, ConstCharPtr, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, ConstCharPtr, Py_ssize_t}, call = Direct, retConversion = int.class, argConversions = {ToPythonStringNode.class, long.class, long.class})
public static int PyUnicode_EqualToUTF8AndSize(long unicodePtr, long str, long size) {
if (size < 0) {
return 0;
@@ -695,7 +703,7 @@ public static int PyUnicode_EqualToUTF8AndSize(long unicodePtr, long str, long s
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_Compare extends CApiBinaryBuiltinNode {
@@ -721,7 +729,8 @@ static Object compare(Object left, Object right,
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t, Int}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t, Int}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class, long.class, int.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_Tailmatch extends CApi5BuiltinNode {
@Specialization(guards = {"isAnyString(inliningTarget, string, getClassNode, isSubtypeNode)", "isAnyString(inliningTarget, substring, getClassNode, isSubtypeNode)", "direction > 0"})
@@ -762,7 +771,8 @@ static long find(Object string, Object substring, Object start, Object end, Obje
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, CharPtrToPythonNode.class, CharPtrToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_AsEncodedString extends CApiTernaryBuiltinNode {
@Specialization(guards = "isString(obj) || isStringSubtype(inliningTarget, obj, getClassNode, isSubtypeNode)")
@@ -783,7 +793,8 @@ static Object encode(@SuppressWarnings("unused") Object obj, @SuppressWarnings("
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObject, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, NativeToPythonNode.class, long.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_Replace extends CApiQuaternaryBuiltinNode {
@Specialization(guards = {"isString(s)", "isString(substr)", "isString(replstr)"})
@@ -817,7 +828,8 @@ static Object replace(Object s, Object substr, Object replstr, long count,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObjectConstPtr, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObjectConstPtr, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ long.class, long.class})
@TypeSystemReference(PythonIntegerTypes.class)
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class _PyUnicode_JoinArray extends CApiTernaryBuiltinNode {
@@ -856,7 +868,7 @@ static Object join(Object separatorObj, long itemsObj, long seqlenlong,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
@ImportStatic(PythonCextUnicodeBuiltins.class)
abstract static class PyUnicode_AsUnicodeEscapeString extends CApiUnaryBuiltinNode {
@Specialization(guards = "isString(s)")
@@ -886,7 +898,7 @@ static Object escape(@SuppressWarnings("unused") Object obj,
}
}
- @CApiBuiltin(ret = PY_UCS4, args = {PyObject, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PY_UCS4, args = {PyObject, Py_ssize_t}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class PyUnicode_ReadChar extends CApiBinaryBuiltinNode {
@Specialization
static int doGeneric(Object type, long lindex,
@@ -911,7 +923,7 @@ static int doGeneric(Object type, long lindex,
}
}
- @CApiBuiltin(ret = PyObject, args = {Py_ssize_t, Int, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Py_ssize_t, Int, Int}, call = Ignored, retConversion = PythonToNativeNode.class, argConversions = {long.class, int.class, int.class})
static long GraalPyPrivate_Unicode_New(long nChars, int charSize, int isAscii) {
if (nChars < 0 || nChars > Long.MAX_VALUE / charSize) {
throw PRaiseNode.raiseStatic(null, MemoryError);
@@ -932,7 +944,7 @@ static long GraalPyPrivate_Unicode_New(long nChars, int charSize, int isAscii) {
return taggedPointer;
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Pointer, Py_ssize_t, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, Py_ssize_t, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, long.class, int.class})
abstract static class GraalPyPrivate_Unicode_FromUCS extends CApiTernaryBuiltinNode {
private static TruffleString.CompactionLevel compactionLevelFromKind(Node inliningTarget, int kind, PRaiseNode raiseNode) throws PException {
@@ -960,7 +972,7 @@ static Object doNative(long ptr, long byteLength, int kind,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Unicode_FSDecoder extends CApiUnaryBuiltinNode {
@Specialization
@@ -970,7 +982,8 @@ static Object fsDecoder(Object arg,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtr, Py_ssize_t}, call = Ignored, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = Ignored, acquireGil = false, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class,
+ long.class})
static long GraalPyPrivate_Unicode_DecodeFSDefaultAndSize(long s, long lsize) {
// TODO: this implementation does not honor Py_FileSystemDefaultEncoding and Py_FileSystemDefaultEncodeErrors
try {
@@ -984,7 +997,7 @@ static long GraalPyPrivate_Unicode_DecodeFSDefaultAndSize(long s, long lsize) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Pointer, Py_ssize_t, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, Py_ssize_t, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, long.class, int.class})
abstract static class GraalPyPrivate_Unicode_FromUTF extends CApiTernaryBuiltinNode {
private static TruffleString encodingFromKind(int kind) {
@@ -1029,7 +1042,7 @@ static Object doNative(long ptr, long byteLength, int kind,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObject}, call = Direct, retConversion = int.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyUnicode_Contains extends CApiBinaryBuiltinNode {
@Specialization
static int contains(Object haystack, Object needle,
@@ -1038,7 +1051,8 @@ static int contains(Object haystack, Object needle,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class})
abstract static class PyUnicode_Split extends CApiTernaryBuiltinNode {
@Specialization
static Object split(Object string, Object sep, Object maxsplit,
@@ -1047,7 +1061,8 @@ static Object split(Object string, Object sep, Object maxsplit,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Pointer, Py_ssize_t, ConstCharPtrAsTruffleString, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, Py_ssize_t, ConstCharPtr, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class,
+ long.class, CharPtrToPythonNode.class, int.class})
abstract static class GraalPyPrivate_Unicode_DecodeUTF8Stateful extends CApiQuaternaryBuiltinNode {
@Specialization
static Object doUtf8Decode(long cByteArray, long size, TruffleString errors, int reportConsumed,
@@ -1064,7 +1079,8 @@ static Object doUtf8Decode(long cByteArray, long size, TruffleString errors, int
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Pointer, Py_ssize_t, ConstCharPtrAsTruffleString, Int, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, Py_ssize_t, ConstCharPtr, Int, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ long.class, long.class, CharPtrToPythonNode.class, int.class, int.class})
abstract static class GraalPyPrivate_Unicode_DecodeUTF16Stateful extends CApi5BuiltinNode {
@Specialization
@@ -1090,7 +1106,8 @@ static Object decode(long cByteArray, long size, TruffleString errors, int byteo
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {Pointer, Py_ssize_t, ConstCharPtrAsTruffleString, Int, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {Pointer, Py_ssize_t, ConstCharPtr, Int, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ long.class, long.class, CharPtrToPythonNode.class, int.class, int.class})
abstract static class GraalPyPrivate_Unicode_DecodeUTF32Stateful extends CApi5BuiltinNode {
@Specialization
@@ -1116,7 +1133,8 @@ static Object decode(long cByteArray, long size, TruffleString errors, int byteo
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, CharPtrToPythonNode.class, CharPtrToPythonNode.class})
abstract static class GraalPyPrivate_Unicode_Decode extends CApiTernaryBuiltinNode {
@Specialization
@@ -1126,7 +1144,7 @@ static Object doDecode(PMemoryView mv, TruffleString encoding, TruffleString err
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class PyUnicode_EncodeFSDefault extends CApiUnaryBuiltinNode {
@Specialization
static PBytes fromObject(Object s,
@@ -1138,7 +1156,8 @@ static PBytes fromObject(Object s,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonNode.class})
abstract static class PyUnicode_EncodeLocale extends CApiBinaryBuiltinNode {
@Specialization
static Object encode(Object s, Object errors,
@@ -1150,7 +1169,7 @@ static Object encode(Object s, Object errors,
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {CONST_WCHAR_PTR, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {CONST_WCHAR_PTR, Py_ssize_t}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {long.class, long.class})
abstract static class PyUnicode_FromWideChar extends CApiBinaryBuiltinNode {
@Specialization
Object doInt(long arr, long size,
@@ -1190,21 +1209,24 @@ static Object doUnicode(@SuppressWarnings("unused") Object s, @SuppressWarnings(
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonNode.class})
abstract static class _PyUnicode_AsLatin1String extends NativeEncoderNode {
protected _PyUnicode_AsLatin1String() {
super(TruffleString.Encoding.ISO_8859_1);
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonNode.class})
abstract static class _PyUnicode_AsASCIIString extends NativeEncoderNode {
protected _PyUnicode_AsASCIIString() {
super(TruffleString.Encoding.US_ASCII);
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ CharPtrToPythonNode.class})
abstract static class _PyUnicode_AsUTF8String extends NativeEncoderNode {
protected _PyUnicode_AsUTF8String() {
@@ -1217,7 +1239,7 @@ public static _PyUnicode_AsUTF8String create() {
}
}
- @CApiBuiltin(ret = ConstCharPtr, args = {PyObject, PY_SSIZE_T_PTR}, call = Ignored)
+ @CApiBuiltin(ret = ConstCharPtr, args = {PyObject, PY_SSIZE_T_PTR}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_Unicode_AsUTF8AndSize extends CApiBinaryBuiltinNode {
@Specialization
@@ -1283,7 +1305,7 @@ static long doError(Object s, Object sizePtr,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Unicode_FillUtf8 extends CApiUnaryBuiltinNode {
@Specialization
@@ -1300,7 +1322,7 @@ static Object doNative(PythonAbstractNativeObject s,
}
}
- @CApiBuiltin(ret = PY_UNICODE_PTR, args = {PyObject, PY_SSIZE_T_PTR}, call = Ignored)
+ @CApiBuiltin(ret = PY_UNICODE_PTR, args = {PyObject, PY_SSIZE_T_PTR}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class, long.class})
abstract static class GraalPyPrivate_Unicode_AsUnicodeAndSize extends CApiBinaryBuiltinNode {
@Specialization
@@ -1331,7 +1353,7 @@ static Object doError(Object s, Object sizePtr,
}
}
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, acquireGil = false, canRaise = false)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, acquireGil = false, canRaise = false, retConversion = int.class, argConversions = {NativeToPythonNode.class})
static int GraalPyPrivate_Unicode_IsMaterialized(long objPtr) {
Object obj = NativeToPythonInternalNode.executeUncached(objPtr, false);
assert PyUnicodeCheckNode.executeUncached(obj);
@@ -1339,7 +1361,7 @@ static int GraalPyPrivate_Unicode_IsMaterialized(long objPtr) {
}
// TODO(native-access) Remove or fix and add test for GraalPyPrivate_Unicode_FillUnicode
- @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Int, args = {PyObject}, call = Ignored, retConversion = int.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Unicode_FillUnicode extends CApiUnaryBuiltinNode {
public static final int WCHAR_T_SIZE = PythonLanguage.getPythonOS() == PythonOS.PLATFORM_WIN32 ? 2 : 4;
public static final TruffleString.Encoding WCHAR_T_ENCODING = WCHAR_T_SIZE == 2 ? TruffleString.Encoding.UTF_16 : TruffleString.Encoding.UTF_32;
@@ -1360,7 +1382,7 @@ static Object doNative(PythonAbstractNativeObject s,
}
// TODO(native-access) Remove GraalPyPrivate_Unicode_AsWideChar
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, Int}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, Int}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class, int.class})
abstract static class GraalPyPrivate_Unicode_AsWideChar extends CApiBinaryBuiltinNode {
@Specialization
static Object doUnicode(Object s, int elementSize,
@@ -1382,7 +1404,7 @@ static Object doUnicode(Object s, int elementSize,
}
}
- @CApiBuiltin(ret = _PY_ERROR_HANDLER, args = {ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = _PY_ERROR_HANDLER, args = {ConstCharPtr}, call = Direct, retConversion = int.class, argConversions = {CharPtrToPythonNode.class})
abstract static class _Py_GetErrorHandler extends CApiUnaryBuiltinNode {
@Specialization
static Object doGeneric(TruffleString errors,
@@ -1397,7 +1419,9 @@ static Object doNull(@SuppressWarnings("unused") PNone noValue) {
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString, ConstCharPtr, Py_ssize_t, Py_ssize_t, Py_ssize_t, ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr, ConstCharPtr, Py_ssize_t, Py_ssize_t, Py_ssize_t,
+ ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class, long.class, long.class, long.class,
+ long.class, CharPtrToPythonNode.class})
abstract static class PyUnicodeDecodeError_Create extends CApi6BuiltinNode {
@Specialization
static Object doit(Object encoding, long object, long length, long start, long end, Object reason,
@@ -1414,7 +1438,8 @@ static Object doit(Object encoding, long object, long length, long start, long e
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t, Int}, call = Ignored)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t, Int}, call = Ignored, retConversion = long.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class, long.class, int.class})
abstract static class GraalPyPrivate_PyUnicode_Find extends CApi5BuiltinNode {
@Specialization(guards = "direction > 0")
long find(Object string, Object sub, long start, long end, @SuppressWarnings("unused") int direction,
@@ -1438,7 +1463,8 @@ private static int convertResult(int result) {
}
}
- @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t}, call = Direct)
+ @CApiBuiltin(ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t}, call = Direct, retConversion = long.class, argConversions = {NativeToPythonNode.class, NativeToPythonNode.class,
+ long.class, long.class})
abstract static class PyUnicode_Count extends CApiQuaternaryBuiltinNode {
@Specialization
long count(Object string, Object sub, long start, long end,
@@ -1488,7 +1514,7 @@ static long doGeneric(PString stringObject, int charSize, boolean isAscii, Truff
}
- @CApiBuiltin(ret = Void, args = {PyObject}, call = Ignored)
+ @CApiBuiltin(ret = Void, args = {PyObject}, call = Ignored, retConversion = void.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_Unicode_FillNativeData extends CApiUnaryBuiltinNode {
@Specialization
static Object doUnicode(PString stringObject,
@@ -1525,7 +1551,7 @@ static Object doUnicode(PString stringObject,
}
// intentionally a node because of the indirectly used TruffleString.FromZeroTerminatedNativePointerNode
- @CApiBuiltin(ret = PyObjectTransfer, args = {ConstCharPtrAsTruffleString}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {ConstCharPtr}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {CharPtrToPythonNode.class})
abstract static class PyUnicode_InternFromString extends CApiUnaryBuiltinNode {
@Specialization
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWarnBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWarnBuiltins.java
index 30cacd7d96..6cde562ee4 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWarnBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWarnBuiltins.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2022, 2025, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2022, 2026, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
@@ -40,11 +40,10 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
import static com.oracle.graal.python.nodes.BuiltinNames.T__WARNINGS;
import com.oracle.graal.python.builtins.modules.WarningsModuleBuiltins;
@@ -52,13 +51,16 @@
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiQuaternaryBuiltinNode;
import com.oracle.graal.python.builtins.objects.PNone;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.nodes.call.CallNode;
import com.oracle.truffle.api.dsl.Cached;
import com.oracle.truffle.api.dsl.Specialization;
public final class PythonCextWarnBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, Py_ssize_t, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, Py_ssize_t, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class,
+ NativeToPythonNode.class, long.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Err_Warn extends CApiQuaternaryBuiltinNode {
@Specialization
Object warn(Object message, Object category, long stackLevel, @SuppressWarnings("unused") Object source,
@@ -74,7 +76,8 @@ Object warn(Object message, Object category, long stackLevel, @SuppressWarnings(
}
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject, PyObject, Int, PyObject, PyObject}, call = Ignored)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject, PyObject, Int, PyObject, PyObject}, call = Ignored, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, NativeToPythonNode.class, NativeToPythonNode.class, int.class, NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class GraalPyPrivate_Err_WarnExplicit extends CApi6BuiltinNode {
@Specialization
Object warn(Object category, Object message, Object filename, int lineno, Object module, Object registry,
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWeakrefBuiltins.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWeakrefBuiltins.java
index e3acbf3747..2b409d07ad 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWeakrefBuiltins.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextWeakrefBuiltins.java
@@ -40,14 +40,12 @@
*/
package com.oracle.graal.python.builtins.modules.cext;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYWEAKREFERENCE_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Direct;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYWEAKREFERENCE_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
import static com.oracle.graal.python.nodes.BuiltinNames.T_PROXY_TYPE;
import static com.oracle.graal.python.nodes.BuiltinNames.T__WEAKREF;
import static com.oracle.graal.python.nodes.ErrorMessages.EXPECTED_A_WEAKREF;
@@ -61,6 +59,8 @@
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.PythonAbstractObject;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
+import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonInternalNode;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeInternalNode;
@@ -78,7 +78,7 @@
public final class PythonCextWeakrefBuiltins {
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject}, call = Direct)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, retConversion = PythonToNativeNewRefNode.class, argConversions = {NativeToPythonNode.class})
abstract static class GraalPyPrivate_GetManagedWeakRefs extends PythonCextBuiltins.CApiUnaryBuiltinNode {
@Specialization
static Object get(PythonAbstractObject object,
@@ -89,12 +89,13 @@ static Object get(PythonAbstractObject object,
}
}
- @CApiBuiltin(ret = Void, args = {PyObjectRawPointer}, call = Direct, acquireGil = false, canRaise = false)
+ @CApiBuiltin(ret = Void, args = {PyObject}, call = Direct, acquireGil = false, canRaise = false, retConversion = void.class, argConversions = {long.class})
public static void PyObject_ClearWeakRefs(long pyObject) {
CApiTransitions.removeNativeWeakRef(PythonContext.get(null), pyObject);
}
- @CApiBuiltin(ret = PyObjectTransfer, args = {PyObject, PyObject}, call = Direct, acquireGil = false, canRaise = true)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, acquireGil = false, canRaise = true, retConversion = PythonToNativeNewRefNode.class, argConversions = {
+ NativeToPythonNode.class, NativeToPythonNode.class})
abstract static class PyWeakref_NewRef extends CApiBinaryBuiltinNode {
@Specialization
static Object refType(Object object, Object callback,
@@ -103,7 +104,8 @@ static Object refType(Object object, Object callback,
}
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer}, call = Direct, acquireGil = false, canRaise = true)
+ @CApiBuiltin(ret = PyObject, args = {PyObject, PyObject}, call = Direct, acquireGil = false, canRaise = true, retConversion = long.class, argConversions = {
+ long.class, long.class})
public static long PyWeakref_NewProxy(long objectPtr, long callbackPtr) {
PythonModule weakrefModule = PythonContext.get(null).lookupBuiltinModule(T__WEAKREF);
Object callback;
@@ -117,7 +119,7 @@ public static long PyWeakref_NewProxy(long objectPtr, long callbackPtr) {
return PythonToNativeInternalNode.executeNewRefUncached(proxy);
}
- @CApiBuiltin(ret = PyObjectRawPointer, args = {PyObjectRawPointer}, call = Direct, acquireGil = false)
+ @CApiBuiltin(ret = PyObject, args = {PyObject}, call = Direct, acquireGil = false, retConversion = long.class, argConversions = {long.class})
public static long PyWeakref_GetObject(long referencePtr) {
Object reference = NativeToPythonInternalNode.executeUncached(referencePtr, false);
if (reference instanceof PReferenceType ref) {
@@ -136,7 +138,7 @@ public static long PyWeakref_GetObject(long referencePtr) {
return PythonContext.get(null).getCApiContext().getNonePtr();
}
- @CApiBuiltin(ret = Int, args = {PyObjectRawPointer, PyObjectPtr}, call = Direct, acquireGil = false)
+ @CApiBuiltin(ret = Int, args = {PyObject, PyObjectPtr}, call = Direct, acquireGil = false, retConversion = int.class, argConversions = {long.class, long.class})
public static int PyWeakref_GetRef(long referencePtr, long resultPtr) {
long result = NULLPTR;
try {
@@ -164,7 +166,7 @@ public static int PyWeakref_GetRef(long referencePtr, long resultPtr) {
}
}
- @CApiBuiltin(name = "_PyWeakref_ClearRef", ret = Void, args = {PYWEAKREFERENCE_PTR}, call = Direct, acquireGil = false, canRaise = false)
+ @CApiBuiltin(name = "_PyWeakref_ClearRef", ret = Void, args = {PYWEAKREFERENCE_PTR}, call = Direct, acquireGil = false, canRaise = false, retConversion = void.class, argConversions = {long.class})
public static void PyWeakref_ClearRef(long referencePtr) {
Object reference = NativeToPythonInternalNode.executeUncached(referencePtr, false);
if (reference instanceof PReferenceType ref) {
@@ -172,7 +174,7 @@ public static void PyWeakref_ClearRef(long referencePtr) {
}
}
- @CApiBuiltin(name = "_PyWeakref_IsDead", ret = Int, args = {PyObjectRawPointer}, call = Direct, acquireGil = false, canRaise = false)
+ @CApiBuiltin(name = "_PyWeakref_IsDead", ret = Int, args = {PyObject}, call = Direct, acquireGil = false, canRaise = false, retConversion = int.class, argConversions = {long.class})
public static int PyWeakref_IsDead(long referencePtr) {
PReferenceType reference = (PReferenceType) NativeToPythonInternalNode.executeUncached(referencePtr, false);
return reference.getObject() == null ? 1 : 0;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CApiFunction.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CApiFunction.java
index 9ab9a7f871..309f75d45b 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CApiFunction.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/CApiFunction.java
@@ -40,156 +40,143 @@
*/
package com.oracle.graal.python.builtins.objects.cext.capi;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_CONST_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_PTR_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PYCONFIG_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PYPRECONFIG_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PY_BUFFER;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PY_BUFFER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PY_LONG_LAYOUT_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PY_SSIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_PY_UCS4;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_UINT8_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_VOID_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CONST_WCHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstPyInterpreterConfig;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstPyLongObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.DIGIT_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Double;
+import static com.oracle.graal.python.annotations.ArgDescriptor.FILE_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INITTAB;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT32_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT32_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT64_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT64_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.LONG_LONG;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Long;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYCONFIG_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYHASH_FUNCDEF_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYMEMALLOCATORDOMAIN;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYMEMALLOCATOREX_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYMODULEDEF_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYOBJECTARENAALLOCATOR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYPRECONFIG_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYSTATUS;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PYWIDESTRINGLIST_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_AUDITHOOKFUNCTION;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_BUFFER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_COMPILER_FLAGS;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_COMPLEX;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_CRITICAL_SECTION2_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_CRITICAL_SECTION_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_C_FUNCTION;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_GEN_OBJECT;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_GIL_STATE_STATE;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_IDENTIFIER;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_INTERPRETER_GUARD_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_INTERPRETER_VIEW_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_LOCK_STATUS;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_LONG_EXPORT_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_LONG_WRITER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_MONITORING_STATE_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_MUTEX_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_OPENCODEHOOKFUNCTION;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_OS_SIGHANDLER;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_REF_TRACER;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_SLOT_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_SSIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_STRUCT_SEQUENCE_DESC;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_THREAD_STATE_TOKEN_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_THREAD_TYPE_LOCK;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_TRACEFUNC;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_TSS_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_TYPE_OBJECT_PTR_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_TYPE_SPEC;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_UCS4;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_UCS4_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCodeAddressRange;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCodeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyCode_WatchCallback;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyDict_WatchCallback;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFrameObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFunctionObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyFunction_WatchCallback;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyGetSetDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyInterpreterState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyLongObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMemberDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyModuleDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectConstPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PySendResult;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PySliceObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadStatePtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyType_WatchCallback;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyVarObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_hash_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.SIZE_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.SIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINT32_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINT32_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINT64_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINT64_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINTPTR_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_INT;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_LONG;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_LONG_LONG;
+import static com.oracle.graal.python.annotations.ArgDescriptor.VARARGS;
+import static com.oracle.graal.python.annotations.ArgDescriptor.VA_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.VOID_PTR_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
+import static com.oracle.graal.python.annotations.ArgDescriptor.WCHAR_T_CONST_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.WCHAR_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.WCHAR_T_PTR_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.WCHAR_T_PTR_PTR_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.WRAPPERBASE;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PYARG_PARSER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PYTIME_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PYTIME_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PYUNICODEWRITER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PY_IDENTIFIER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PyFrameEvalFunction;
+import static com.oracle.graal.python.annotations.ArgDescriptor._PyInterpreterFrame;
+import static com.oracle.graal.python.annotations.ArgDescriptor.atexit_datacallbackfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.freefunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.func_intvoidptr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.func_objvoid;
+import static com.oracle.graal.python.annotations.ArgDescriptor.func_voidvoidptr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.gcvisitobjects_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.vectorcallfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.visitproc;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.CImpl;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.Ignored;
import static com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiCallPath.NotImplemented;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR_CONST_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR_PTR_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PYCONFIG_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PYPRECONFIG_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PY_BUFFER;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PY_BUFFER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PY_SSIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PY_UCS4;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_UINT8_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_VOID_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_WCHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstPyInterpreterConfig;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstPyLongObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.DIGIT_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Double;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.FILE_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INITTAB;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT32_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT32_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT64_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT64_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.LONG_LONG;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Long;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYCONFIG_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYHASH_FUNCDEF_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYMEMALLOCATORDOMAIN;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYMEMALLOCATOREX_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYMODULEDEF_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYOBJECTARENAALLOCATOR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYPRECONFIG_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYSTATUS;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PYWIDESTRINGLIST_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_AUDITHOOKFUNCTION;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_BUFFER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_COMPILER_FLAGS;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_COMPLEX;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_CRITICAL_SECTION2_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_CRITICAL_SECTION_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_C_FUNCTION;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_GEN_OBJECT;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_GIL_STATE_STATE;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_IDENTIFIER;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_INTERPRETER_GUARD_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_INTERPRETER_VIEW_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_LOCK_STATUS;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_LONG_EXPORT_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_LONG_WRITER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_MONITORING_STATE_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_MUTEX_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_OPENCODEHOOKFUNCTION;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_OS_SIGHANDLER;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_REF_TRACER;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_SSIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_STRUCT_SEQUENCE_DESC;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_THREAD_STATE_TOKEN_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_THREAD_TYPE_LOCK;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_TRACEFUNC;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_TSS_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_TYPE_SPEC;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_SLOT_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_TYPE_OBJECT_PTR_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_UCS4;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_UCS4_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PrimitiveResult32;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PrimitiveResult64;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCodeAddressRange;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCodeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCodeObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCodeObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyCode_WatchCallback;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyDict_WatchCallback;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFrameObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFunctionObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyFunction_WatchCallback;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyGetSetDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyInterpreterState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyLongObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMemberDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectBorrowed;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectConstPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectReturn;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PySendResult;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PySliceObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadStatePtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObjectRawPointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyType_WatchCallback;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyVarObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_hash_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CONST_PY_LONG_LAYOUT_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.SIZE_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.SIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINT64_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINT64_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINT32_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINT32_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINTPTR_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_INT;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_LONG;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_LONG_LONG;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VARARGS;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VA_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VOID_PTR_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VoidNoReturn;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.WCHAR_T_CONST_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.WCHAR_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.WCHAR_T_PTR_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.WCHAR_T_PTR_PTR_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.WRAPPERBASE;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PYARG_PARSER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PYTIME_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PYTIME_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PYUNICODEWRITER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PY_IDENTIFIER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PyFrameEvalFunction;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor._PyInterpreterFrame;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.atexit_datacallbackfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.freefunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.func_intvoidptr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.func_objvoid;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.func_voidvoidptr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.gcvisitobjects_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.vectorcallfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.visitproc;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.ABI;
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiBuiltin;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
/**
* This file contains the specification of all CAPI builtins that aren't explicitly implemented in
@@ -199,12 +186,12 @@
public final class CApiFunction {
@CApiBuiltin(name = "PyGILState_Check", ret = Int, args = {}, acquireGil = false, call = CImpl)
- @CApiBuiltin(name = "PyArg_Parse", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyArg_ParseTuple", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyArg_ParseTupleAndKeywords", ret = Int, args = {PyObject, PyObject, ConstCharPtrAsTruffleString, CHAR_CONST_PTR, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyArg_UnpackTuple", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, Py_ssize_t, Py_ssize_t, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyArg_VaParse", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, VA_LIST}, call = CImpl)
- @CApiBuiltin(name = "PyArg_VaParseTupleAndKeywords", ret = Int, args = {PyObject, PyObject, ConstCharPtrAsTruffleString, CHAR_CONST_PTR, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyArg_Parse", ret = Int, args = {PyObject, ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyArg_ParseTuple", ret = Int, args = {PyObject, ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyArg_ParseTupleAndKeywords", ret = Int, args = {PyObject, PyObject, ConstCharPtr, CHAR_CONST_PTR, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyArg_UnpackTuple", ret = Int, args = {PyObject, ConstCharPtr, Py_ssize_t, Py_ssize_t, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyArg_VaParse", ret = Int, args = {PyObject, ConstCharPtr, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyArg_VaParseTupleAndKeywords", ret = Int, args = {PyObject, PyObject, ConstCharPtr, CHAR_CONST_PTR, VA_LIST}, call = CImpl)
@CApiBuiltin(name = "PyArg_ValidateKeywordArguments", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyBool_FromLong", ret = PyObject, args = {Long}, call = CImpl)
@CApiBuiltin(name = "PyBuffer_FillContiguousStrides", ret = Void, args = {Int, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR, Int, CHAR}, call = CImpl)
@@ -213,24 +200,24 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyBuffer_GetPointer", ret = Pointer, args = {CONST_PY_BUFFER_PTR, CONST_PY_SSIZE_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyBuffer_IsContiguous", ret = Int, args = {CONST_PY_BUFFER, CHAR}, call = CImpl)
@CApiBuiltin(name = "PyBuffer_Release", ret = Void, args = {PY_BUFFER_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyBuffer_SizeFromFormat", ret = Py_ssize_t, args = {ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "PyBuffer_SizeFromFormat", ret = Py_ssize_t, args = {ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyBuffer_ToContiguous", ret = Int, args = {Pointer, CONST_PY_BUFFER_PTR, Py_ssize_t, CHAR}, call = CImpl)
- @CApiBuiltin(name = "PyByteArray_FromStringAndSize", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyByteArray_FromStringAndSize", ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyByteArray_Size", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyBytes_AsStringAndSize", ret = Int, args = {PyObject, CHAR_PTR_LIST, PY_SSIZE_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyBytes_Concat", ret = Void, args = {PyObjectPtr, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyBytes_ConcatAndDel", ret = Void, args = {PyObjectPtr, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyBytes_FromFormat", ret = PyObject, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyBytes_FromFormatV", ret = PyObject, args = {ConstCharPtrAsTruffleString, VA_LIST}, call = CImpl)
- @CApiBuiltin(name = "PyBytes_FromString", ret = PyObject, args = {ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyBytes_FromStringAndSize", ret = PyObjectTransfer, args = {ConstCharPtr, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyBytes_FromFormat", ret = PyObject, args = {ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyBytes_FromFormatV", ret = PyObject, args = {ConstCharPtr, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyBytes_FromString", ret = PyObject, args = {ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyBytes_FromStringAndSize", ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyCFunction_GetFlags", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyCFunction_GetFunction", ret = PY_C_FUNCTION, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyCFunction_GetSelf", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyCFunction_New", ret = PyObject, args = {PyMethodDef, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyCFunction_NewEx", ret = PyObject, args = {PyMethodDef, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyCMethod_New", ret = PyObject, args = {PyMethodDef, PyObject, PyObject, PyTypeObject}, call = CImpl)
- @CApiBuiltin(name = "PyCallable_Check", ret = PrimitiveResult32, args = {PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyCallable_Check", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyUnstable_Code_New", ret = PyCodeObject, args = {Int, Int, Int, Int, Int, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, PyObject, Int,
PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyCodec_StrictErrors", ret = PyObject, args = {PyObject}, call = CImpl)
@@ -242,7 +229,7 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyDescr_IsData", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyDescr_NewClassMethod", ret = PyObject, args = {PyTypeObject, PyMethodDef}, call = CImpl)
@CApiBuiltin(name = "PyDescr_NewGetSet", ret = PyObject, args = {PyTypeObject, PyGetSetDef}, call = CImpl)
- @CApiBuiltin(name = "PyDict_GetItemString", ret = PyObjectReturn, args = {PyObjectReturn, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyDict_GetItemString", ret = PyObject, args = {PyObject, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyDict_Next", ret = Int, args = {PyObject, PY_SSIZE_T_PTR, PyObjectPtr, PyObjectPtr}, call = CImpl)
@CApiBuiltin(name = "PyDict_Size", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_BadArgument", ret = Int, args = {}, call = CImpl)
@@ -251,50 +238,50 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyErr_Clear", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "PyErr_ExceptionMatches", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_Fetch", ret = Void, args = {PyObjectPtr, PyObjectPtr, PyObjectPtr}, call = CImpl)
- @CApiBuiltin(name = "PyErr_Format", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyErr_FormatV", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_Format", ret = PyObject, args = {PyObject, ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_FormatV", ret = PyObject, args = {PyObject, ConstCharPtr, VA_LIST}, call = CImpl)
@CApiBuiltin(name = "PyErr_GetExcInfo", ret = Void, args = {PyObjectPtr, PyObjectPtr, PyObjectPtr}, call = CImpl)
@CApiBuiltin(name = "PyErr_GetHandledException", ret = PyObject, args = {}, call = CImpl)
@CApiBuiltin(name = "PyErr_GivenExceptionMatches", ret = Int, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_NoMemory", ret = PyObject, args = {}, call = CImpl)
@CApiBuiltin(name = "PyErr_NormalizeException", ret = Void, args = {PyObjectPtr, PyObjectPtr, PyObjectPtr}, call = CImpl)
- @CApiBuiltin(name = "PyErr_Occurred", ret = PyObjectBorrowed, args = {}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_Occurred", ret = PyObject, args = {}, call = CImpl)
@CApiBuiltin(name = "PyErr_Print", ret = Void, args = {}, call = CImpl)
- @CApiBuiltin(name = "PyErr_ResourceWarning", ret = Int, args = {PyObject, Py_ssize_t, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_ResourceWarning", ret = Int, args = {PyObject, Py_ssize_t, ConstCharPtr, VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyErr_Restore", ret = Void, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetExcInfo", ret = Void, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetFromErrno", ret = PyObject, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyErr_SetFromErrnoWithFilename", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_SetFromErrnoWithFilename", ret = PyObject, args = {PyObject, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetFromErrnoWithFilenameObject", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetFromErrnoWithFilenameObjects", ret = PyObject, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetHandledException", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetNone", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_SetObject", ret = Void, args = {PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyErr_SetString", ret = Void, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyErr_WarnEx", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PyErr_WarnExplicit", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int, ConstCharPtrAsTruffleString, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyErr_WarnExplicit", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int, ConstCharPtrAsTruffleString, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyErr_WarnExplicitFormat", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, Int, ConstCharPtrAsTruffleString, PyObject, ConstCharPtrAsTruffleString,
+ @CApiBuiltin(name = "PyErr_SetString", ret = Void, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_WarnEx", ret = Int, args = {PyObject, ConstCharPtr, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_WarnExplicit", ret = Int, args = {PyObject, ConstCharPtr, ConstCharPtr, Int, ConstCharPtr, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_WarnExplicit", ret = Int, args = {PyObject, ConstCharPtr, ConstCharPtr, Int, ConstCharPtr, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_WarnExplicitFormat", ret = Int, args = {PyObject, ConstCharPtr, Int, ConstCharPtr, PyObject, ConstCharPtr,
VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyErr_WarnExplicitFormat", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, Int, ConstCharPtrAsTruffleString, PyObject, ConstCharPtrAsTruffleString,
+ @CApiBuiltin(name = "PyErr_WarnExplicitFormat", ret = Int, args = {PyObject, ConstCharPtr, Int, ConstCharPtr, PyObject, ConstCharPtr,
VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyErr_WarnExplicitObject", ret = Int, args = {PyObject, PyObject, PyObject, Int, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyErr_WarnExplicitObject", ret = Int, args = {PyObject, PyObject, PyObject, Int, PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyErr_WarnFormat", ret = Int, args = {PyObject, Py_ssize_t, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_WarnFormat", ret = Int, args = {PyObject, Py_ssize_t, ConstCharPtr, VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyEval_EvalCode", ret = PyObject, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyEval_EvalCodeEx", ret = PyObject, args = {PyObject, PyObject, PyObject, PyObjectConstPtr, Int, PyObjectConstPtr, Int, PyObjectConstPtr, Int, PyObject,
PyObject}, call = CImpl)
@CApiBuiltin(name = "PyEval_InitThreads", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "PyEval_MergeCompilerFlags", ret = Int, args = {PY_COMPILER_FLAGS}, call = CImpl)
- @CApiBuiltin(name = "PyFile_WriteString", ret = Int, args = {ConstCharPtrAsTruffleString, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyFloat_FromDouble", ret = PyObjectTransfer, args = {ArgDescriptor.Double}, call = CImpl)
+ @CApiBuiltin(name = "PyFile_WriteString", ret = Int, args = {ConstCharPtr, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyFloat_FromDouble", ret = PyObject, args = {ArgDescriptor.Double}, call = CImpl)
@CApiBuiltin(name = "PyFloat_AsDouble", ret = ArgDescriptor.Double, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyFloat_Pack2", ret = Int, args = {Double, CHAR_PTR, Int}, call = CImpl)
@CApiBuiltin(name = "PyFloat_Pack4", ret = Int, args = {Double, CHAR_PTR, Int}, call = CImpl)
@CApiBuiltin(name = "PyFloat_Pack8", ret = Int, args = {Double, CHAR_PTR, Int}, call = CImpl)
- @CApiBuiltin(name = "PyFloat_Unpack2", ret = Double, args = {ConstCharPtrAsTruffleString, Int}, call = CImpl)
- @CApiBuiltin(name = "PyFloat_Unpack4", ret = Double, args = {ConstCharPtrAsTruffleString, Int}, call = CImpl)
- @CApiBuiltin(name = "PyFloat_Unpack8", ret = Double, args = {ConstCharPtrAsTruffleString, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyFloat_Unpack2", ret = Double, args = {ConstCharPtr, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyFloat_Unpack4", ret = Double, args = {ConstCharPtr, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyFloat_Unpack8", ret = Double, args = {ConstCharPtr, Int}, call = CImpl)
@CApiBuiltin(name = "PyGC_Collect", ret = Py_ssize_t, args = {}, call = CImpl)
@CApiBuiltin(name = "PyGC_Disable", ret = Int, args = {}, call = CImpl)
@CApiBuiltin(name = "PyGC_Enable", ret = Int, args = {}, call = CImpl)
@@ -304,9 +291,9 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyGILState_Release", ret = Void, args = {PY_GIL_STATE_STATE}, acquireGil = false, call = CImpl)
@CApiBuiltin(name = "PyGen_New", ret = PyObject, args = {PyFrameObject}, call = CImpl)
@CApiBuiltin(name = "PyGen_NewWithQualName", ret = PyObject, args = {PyFrameObject, PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyImport_AddModule", ret = PyObject, args = {ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "PyImport_AddModule", ret = PyObject, args = {ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyImport_AddModuleObject", ret = PyObject, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyImport_ImportModuleLevel", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyObject, PyObject, PyObject, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyImport_ImportModuleLevel", ret = PyObject, args = {ConstCharPtr, PyObject, PyObject, PyObject, Int}, call = CImpl)
@CApiBuiltin(name = "PyIndex_Check", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyInstanceMethod_Function", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyInterpreterState_GetDict", ret = PyObject, args = {PyInterpreterState}, call = CImpl)
@@ -314,9 +301,9 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyInterpreterState_Main", ret = PyInterpreterState, args = {}, call = CImpl)
@CApiBuiltin(name = "PyIter_Check", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyIter_Send", ret = PySendResult, args = {PyObject, PyObject, PyObjectPtr}, call = CImpl)
- @CApiBuiltin(name = "PyList_SetItem", ret = Int, args = {PyObject, Py_ssize_t, PyObjectTransfer}, call = CImpl)
+ @CApiBuiltin(name = "PyList_SetItem", ret = Int, args = {PyObject, Py_ssize_t, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyLong_AsDouble", ret = Double, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyLong_AsInt", ret = PrimitiveResult32, args = {PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_AsInt", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyLong_AsLong", ret = Long, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyLong_AsLongAndOverflow", ret = Long, args = {PyObject, INT_LIST}, call = CImpl)
@CApiBuiltin(name = "PyLong_AsLongLong", ret = LONG_LONG, args = {PyObject}, call = CImpl)
@@ -331,25 +318,25 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyUnstable_Long_IsCompact", ret = Int, args = {ConstPyLongObject}, call = CImpl)
@CApiBuiltin(name = "_PyLong_NumBits", ret = SIZE_T, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyLong_Sign", ret = Int, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromString", ret = PyObject, args = {ConstCharPtrAsTruffleString, CHAR_PTR_LIST, Int}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromDouble", ret = PyObjectTransfer, args = {ArgDescriptor.Double}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromLong", ret = PyObjectTransfer, args = {ArgDescriptor.Long}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromLongLong", ret = PyObjectTransfer, args = {LONG_LONG}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromSize_t", ret = PyObjectTransfer, args = {SIZE_T}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromSsize_t", ret = PyObjectTransfer, args = {Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromUnsignedLong", ret = PyObjectTransfer, args = {UNSIGNED_LONG}, call = CImpl)
- @CApiBuiltin(name = "PyLong_FromUnsignedLongLong", ret = PyObjectTransfer, args = {UNSIGNED_LONG_LONG}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromString", ret = PyObject, args = {ConstCharPtr, CHAR_PTR_LIST, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromDouble", ret = PyObject, args = {ArgDescriptor.Double}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromLong", ret = PyObject, args = {ArgDescriptor.Long}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromLongLong", ret = PyObject, args = {LONG_LONG}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromSize_t", ret = PyObject, args = {SIZE_T}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromSsize_t", ret = PyObject, args = {Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromUnsignedLong", ret = PyObject, args = {UNSIGNED_LONG}, call = CImpl)
+ @CApiBuiltin(name = "PyLong_FromUnsignedLongLong", ret = PyObject, args = {UNSIGNED_LONG_LONG}, call = CImpl)
@CApiBuiltin(name = "PyLong_FromVoidPtr", ret = PyObject, args = {Pointer}, call = CImpl)
@CApiBuiltin(name = "PyMapping_Check", ret = Int, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_GetItemString", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_GetOptionalItem", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn, PyObjectPtr}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_GetOptionalItemString", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr, PyObjectPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_GetItemString", ret = PyObject, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_GetOptionalItem", ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_GetOptionalItemString", ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = CImpl)
@CApiBuiltin(name = "PyMapping_HasKey", ret = Int, args = {PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_HasKeyString", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_HasKeyStringWithError", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_HasKeyWithError", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_HasKeyString", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_HasKeyStringWithError", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_HasKeyWithError", ret = Int, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyMapping_Length", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyMapping_SetItemString", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyMapping_SetItemString", ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyMapping_Size", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyMem_Calloc", ret = Pointer, args = {SIZE_T, SIZE_T}, call = CImpl)
@CApiBuiltin(name = "PyMem_Free", ret = Void, args = {Pointer}, call = CImpl)
@@ -363,10 +350,10 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyMemoryView_FromMemory", ret = PyObject, args = {CHAR_PTR, Py_ssize_t, Int}, call = CImpl)
@CApiBuiltin(name = "PyMethod_Function", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyMethod_Self", ret = PyObject, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyModule_Add", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr, PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyModule_Add", ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyModule_AddFunctions", ret = Int, args = {PyObject, PyMethodDef}, call = CImpl)
- @CApiBuiltin(name = "PyModule_AddObject", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyModule_AddStringConstant", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "PyModule_AddObject", ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyModule_AddStringConstant", ret = Int, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyModule_AddType", ret = Int, args = {PyObject, PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyModuleDef_Init", ret = PyObject, args = {PYMODULEDEF_PTR}, call = CImpl)
@CApiBuiltin(name = "PyModule_Create2", ret = PyObject, args = {PYMODULEDEF_PTR, Int}, call = CImpl)
@@ -374,8 +361,8 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyModule_ExecDef", ret = Int, args = {PyObject, PyModuleDef}, call = CImpl)
@CApiBuiltin(name = "PyModule_GetDef", ret = PyModuleDef, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyModule_GetDict", ret = PyObject, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyModule_GetFilename", ret = ConstCharPtrAsTruffleString, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyModule_GetName", ret = ConstCharPtrAsTruffleString, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyModule_GetFilename", ret = ConstCharPtr, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyModule_GetName", ret = ConstCharPtr, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyModule_GetState", ret = Pointer, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyNumber_Absolute", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyNumber_Add", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@@ -414,50 +401,50 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyNumber_TrueDivide", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyNumber_Xor", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyOS_double_to_string", ret = CHAR_PTR, args = {Double, CHAR, Int, Int, INT_LIST}, call = CImpl)
- @CApiBuiltin(name = "PyOS_mystricmp", ret = Int, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyOS_mystrnicmp", ret = Int, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PyOS_snprintf", ret = Int, args = {CHAR_PTR, SIZE_T, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyOS_string_to_double", ret = Double, args = {ConstCharPtrAsTruffleString, CHAR_PTR_LIST, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyOS_strtol", ret = Long, args = {ConstCharPtrAsTruffleString, CHAR_PTR_LIST, Int}, call = CImpl)
- @CApiBuiltin(name = "PyOS_strtoul", ret = UNSIGNED_LONG, args = {ConstCharPtrAsTruffleString, CHAR_PTR_LIST, Int}, call = CImpl)
- @CApiBuiltin(name = "PyOS_vsnprintf", ret = Int, args = {CHAR_PTR, SIZE_T, ConstCharPtrAsTruffleString, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_mystricmp", ret = Int, args = {ConstCharPtr, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_mystrnicmp", ret = Int, args = {ConstCharPtr, ConstCharPtr, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_snprintf", ret = Int, args = {CHAR_PTR, SIZE_T, ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_string_to_double", ret = Double, args = {ConstCharPtr, CHAR_PTR_LIST, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_strtol", ret = Long, args = {ConstCharPtr, CHAR_PTR_LIST, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_strtoul", ret = UNSIGNED_LONG, args = {ConstCharPtr, CHAR_PTR_LIST, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyOS_vsnprintf", ret = Int, args = {CHAR_PTR, SIZE_T, ConstCharPtr, VA_LIST}, call = CImpl)
@CApiBuiltin(name = "PyObject_Call", ret = PyObject, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_Calloc", ret = Pointer, args = {SIZE_T, SIZE_T}, call = CImpl)
- @CApiBuiltin(name = "PyObject_CallFunction", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_CallFunction", ret = PyObject, args = {PyObject, ConstCharPtr, VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyObject_CallFunctionObjArgs", ret = PyObject, args = {PyObject, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyObject_CallMethod", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_CallMethod", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr, VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyObject_CallMethodObjArgs", ret = PyObject, args = {PyObject, PyObject, VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyObject_CallNoArgs", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_CallObject", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_CallOneArg", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_CheckBuffer", ret = Int, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_ClearManagedDict", ret = Void, args = {PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_ClearManagedDict", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_CopyData", ret = Int, args = {PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_DelAttr", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn}, call = CImpl)
- @CApiBuiltin(name = "PyObject_DelAttrString", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr}, call = CImpl)
- @CApiBuiltin(name = "PyObject_DelItemString", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_DelAttr", ret = Int, args = {PyObject, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_DelAttrString", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_DelItemString", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyObject_Free", ret = Void, args = {Pointer}, call = CImpl)
@CApiBuiltin(name = "PyObject_GC_Del", ret = Void, args = {Pointer}, call = CImpl)
@CApiBuiltin(name = "PyObject_GC_IsFinalized", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_GC_IsTracked", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_GC_Track", ret = Void, args = {Pointer}, call = CImpl)
@CApiBuiltin(name = "PyObject_GC_UnTrack", ret = Void, args = {Pointer}, call = CImpl)
- @CApiBuiltin(name = "PyObject_GenericGetAttr", ret = PyObjectTransfer, args = {PyObject, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_GenericGetAttr", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_GenericGetDict", ret = PyObject, args = {PyObject, Pointer}, call = CImpl)
- @CApiBuiltin(name = "PyObject_GenericHash", ret = Py_hash_t, args = {PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_GenericHash", ret = Py_hash_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_GenericSetAttr", ret = Int, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_GenericSetDict", ret = Int, args = {PyObject, PyObject, Pointer}, call = CImpl)
@CApiBuiltin(name = "PyObject_GetAIter", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_GetAttr", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_GetAttrString", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_GetAttrString", ret = PyObject, args = {PyObject, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyObject_GetBuffer", ret = Int, args = {PyObject, PY_BUFFER_PTR, Int}, call = CImpl)
@CApiBuiltin(name = "PyObject_GetIter", ret = PyObject, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_GetOptionalAttr", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn, PyObjectPtr}, call = CImpl)
- @CApiBuiltin(name = "PyObject_GetOptionalAttrString", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr, PyObjectPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_GetOptionalAttr", ret = Int, args = {PyObject, PyObject, PyObjectPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_GetOptionalAttrString", ret = Int, args = {PyObject, ConstCharPtr, PyObjectPtr}, call = CImpl)
@CApiBuiltin(name = "PyObject_HasAttr", ret = Int, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_HasAttrString", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
- @CApiBuiltin(name = "PyObject_HasAttrStringWithError", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr}, call = CImpl)
- @CApiBuiltin(name = "PyObject_HasAttrWithError", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_HasAttrStringWithError", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_HasAttrWithError", ret = Int, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_Init", ret = PyObject, args = {PyObject, PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_InitVar", ret = PyVarObject, args = {PyVarObject, PyTypeObject, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyObject_IS_GC", ret = Int, args = {PyObject}, call = CImpl)
@@ -466,24 +453,24 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyObject_Not", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_Print", ret = Int, args = {PyObject, FILE_PTR, Int}, call = CImpl)
@CApiBuiltin(name = "PyObject_Realloc", ret = Pointer, args = {Pointer, SIZE_T}, call = CImpl)
- @CApiBuiltin(name = "PyObject_RichCompare", ret = PyObjectTransfer, args = {PyObject, PyObject, Int}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_RichCompare", ret = PyObject, args = {PyObject, PyObject, Int}, call = CImpl)
@CApiBuiltin(name = "PyObject_RichCompareBool", ret = Int, args = {PyObject, PyObject, Int}, call = CImpl)
@CApiBuiltin(name = "PyObject_Length", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_SelfIter", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_SetAttr", ret = Int, args = {PyObject, PyObject, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_SetAttrString", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_SetAttrString", ret = Int, args = {PyObject, ConstCharPtr, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_Size", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_Type", ret = PyObjectTransfer, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_Type", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_Vectorcall", ret = PyObject, args = {PyObject, PyObjectConstPtr, SIZE_T, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_VectorcallDict", ret = PyObject, args = {PyObject, PyObjectConstPtr, SIZE_T, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyObject_VectorcallMethod", ret = PyObject, args = {PyObject, PyObjectConstPtr, SIZE_T, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyObject_VisitManagedDict", ret = PrimitiveResult32, args = {PyObjectReturn, visitproc, Pointer}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_VisitManagedDict", ret = Int, args = {PyObject, visitproc, Pointer}, call = CImpl)
@CApiBuiltin(name = "PyRefTracer_GetTracer", ret = PY_REF_TRACER, args = {VOID_PTR_LIST}, call = CImpl)
- @CApiBuiltin(name = "PyRefTracer_SetTracer", ret = PrimitiveResult32, args = {PY_REF_TRACER, Pointer}, call = CImpl)
+ @CApiBuiltin(name = "PyRefTracer_SetTracer", ret = Int, args = {PY_REF_TRACER, Pointer}, call = CImpl)
@CApiBuiltin(name = "PySequence_Check", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PySequence_DelItem", ret = Int, args = {PyObject, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PySequence_Fast", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PySequence_GetItem", ret = PyObjectTransfer, args = {PyObject, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PySequence_Fast", ret = PyObject, args = {PyObject, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PySequence_GetItem", ret = PyObject, args = {PyObject, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PySequence_Length", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PySequence_SetItem", ret = Int, args = {PyObject, Py_ssize_t, PyObject}, call = CImpl)
@CApiBuiltin(name = "PySequence_Size", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@@ -491,18 +478,18 @@ public final class CApiFunction {
@CApiBuiltin(name = "PySlice_AdjustIndices", ret = Py_ssize_t, args = {Py_ssize_t, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PySlice_Unpack", ret = Int, args = {PyObject, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyState_AddModule", ret = Int, args = {PyObject, PYMODULEDEF_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyState_FindModule", ret = PyObjectBorrowed, args = {PYMODULEDEF_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyState_FindModule", ret = PyObject, args = {PYMODULEDEF_PTR}, call = CImpl)
@CApiBuiltin(name = "PyState_RemoveModule", ret = Int, args = {PYMODULEDEF_PTR}, call = CImpl)
@CApiBuiltin(name = "PyStructSequence_GetItem", ret = PyObject, args = {PyObject, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyStructSequence_InitType", ret = Void, args = {PyTypeObject, PY_STRUCT_SEQUENCE_DESC}, call = CImpl)
@CApiBuiltin(name = "PyStructSequence_InitType2", ret = Int, args = {PyTypeObject, PY_STRUCT_SEQUENCE_DESC}, call = CImpl)
@CApiBuiltin(name = "PyStructSequence_NewType", ret = PyTypeObject, args = {PY_STRUCT_SEQUENCE_DESC}, call = CImpl)
@CApiBuiltin(name = "PyStructSequence_SetItem", ret = Void, args = {PyObject, Py_ssize_t, PyObject}, call = CImpl)
- @CApiBuiltin(name = "PySys_Audit", ret = Int, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PySys_FormatStderr", ret = Void, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PySys_FormatStdout", ret = Void, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PySys_WriteStderr", ret = Void, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PySys_WriteStdout", ret = Void, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PySys_Audit", ret = Int, args = {ConstCharPtr, ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PySys_FormatStderr", ret = Void, args = {ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PySys_FormatStdout", ret = Void, args = {ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PySys_WriteStderr", ret = Void, args = {ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PySys_WriteStdout", ret = Void, args = {ConstCharPtr, VARARGS}, call = CImpl)
@CApiBuiltin(name = "PyThreadState_Clear", ret = Void, args = {PyThreadState}, call = CImpl)
@CApiBuiltin(name = "PyThreadState_DeleteCurrent", ret = Void, args = {}, call = NotImplemented)
@CApiBuiltin(name = "PyThreadState_Get", ret = PyThreadState, args = {}, call = CImpl)
@@ -516,18 +503,18 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyThread_tss_is_created", ret = Int, args = {PY_TSS_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyThread_tss_set", ret = Int, args = {PY_TSS_T_PTR, Pointer}, call = CImpl)
@CApiBuiltin(name = "PyTime_AsSecondsDouble", ret = Double, args = {_PYTIME_T}, call = CImpl)
- @CApiBuiltin(name = "PyTime_Monotonic", ret = PrimitiveResult32, args = {_PYTIME_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyTime_MonotonicRaw", ret = PrimitiveResult32, args = {_PYTIME_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyTime_PerfCounter", ret = PrimitiveResult32, args = {_PYTIME_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyTime_PerfCounterRaw", ret = PrimitiveResult32, args = {_PYTIME_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyTime_Time", ret = PrimitiveResult32, args = {_PYTIME_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyTime_TimeRaw", ret = PrimitiveResult32, args = {_PYTIME_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyTime_Monotonic", ret = Int, args = {_PYTIME_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyTime_MonotonicRaw", ret = Int, args = {_PYTIME_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyTime_PerfCounter", ret = Int, args = {_PYTIME_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyTime_PerfCounterRaw", ret = Int, args = {_PYTIME_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyTime_Time", ret = Int, args = {_PYTIME_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyTime_TimeRaw", ret = Int, args = {_PYTIME_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyTraceMalloc_Track", ret = Int, args = {UNSIGNED_INT, UINTPTR_T, SIZE_T}, call = CImpl)
@CApiBuiltin(name = "PyTraceMalloc_Untrack", ret = Int, args = {UNSIGNED_INT, UINTPTR_T}, call = CImpl)
@CApiBuiltin(name = "PyTuple_New", ret = PyObject, args = {Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyTuple_Pack", ret = PyObject, args = {Py_ssize_t, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyTuple_GetItem", ret = PyObjectBorrowed, args = {PyObject, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PyTuple_SetItem", ret = Int, args = {PyObject, Py_ssize_t, PyObjectTransfer}, call = CImpl)
+ @CApiBuiltin(name = "PyTuple_GetItem", ret = PyObject, args = {PyObject, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyTuple_SetItem", ret = Int, args = {PyObject, Py_ssize_t, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyTuple_Size", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyType_FromModuleAndSpec", ret = PyObject, args = {PyObject, PY_TYPE_SPEC, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyType_FromSpec", ret = PyObject, args = {PY_TYPE_SPEC}, call = CImpl)
@@ -537,7 +524,7 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyType_GetFlags", ret = UNSIGNED_LONG, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyType_GetModule", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyType_GetModuleByDef", ret = PyObject, args = {PyTypeObject, PYMODULEDEF_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyType_GetModuleName", ret = PyObjectReturn, args = {PyTypeObjectRawPointer}, call = CImpl)
+ @CApiBuiltin(name = "PyType_GetModuleName", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyType_GetModuleState", ret = Pointer, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyType_GetName", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyType_GetQualName", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@@ -550,47 +537,47 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyUnicode_AsLatin1String", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_AsUCS4", ret = PY_UCS4_PTR, args = {PyObject, PY_UCS4_PTR, Py_ssize_t, Int}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_AsUCS4Copy", ret = PY_UCS4_PTR, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_AsUTF8", ret = ConstCharPtrAsTruffleString, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_AsUTF8AndSize", ret = ConstCharPtrAsTruffleString, args = {PyObject, PY_SSIZE_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_AsUTF8", ret = ConstCharPtr, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_AsUTF8AndSize", ret = ConstCharPtr, args = {PyObject, PY_SSIZE_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_AsUTF8String", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_AsWideChar", ret = Py_ssize_t, args = {PyObject, WCHAR_T_PTR, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_AsWideCharString", ret = WCHAR_T_PTR, args = {PyObject, PY_SSIZE_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_Decode", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeASCII", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeFSDefault", ret = PyObject, args = {ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeFSDefaultAndSize", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeLatin1", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeLocale", ret = PyObject, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeLocaleAndSize", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeRawUnicodeEscape", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF16", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, INT_LIST}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF16Stateful", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, INT_LIST, PY_SSIZE_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF32", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, INT_LIST}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF32Stateful", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, INT_LIST, PY_SSIZE_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF8", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF8Stateful", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, PY_SSIZE_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_Decode", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeASCII", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeFSDefault", ret = PyObject, args = {ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeFSDefaultAndSize", ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeLatin1", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeLocale", ret = PyObject, args = {ConstCharPtr, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeLocaleAndSize", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeRawUnicodeEscape", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF16", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, INT_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF16Stateful", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, INT_LIST, PY_SSIZE_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF32", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, INT_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF32Stateful", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, INT_LIST, PY_SSIZE_T_PTR}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF8", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF8Stateful", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, PY_SSIZE_T_PTR}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_FSConverter", ret = Int, args = {PyObject, Pointer}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_Find", ret = Py_ssize_t, args = {PyObject, PyObject, Py_ssize_t, Py_ssize_t, Int}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_FromFormat", ret = PyObject, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_FromFormatV", ret = PyObject, args = {ConstCharPtrAsTruffleString, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_FromFormat", ret = PyObject, args = {ConstCharPtr, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_FromFormatV", ret = PyObject, args = {ConstCharPtr, VA_LIST}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_FromKindAndData", ret = PyObject, args = {Int, CONST_VOID_PTR, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_FromOrdinal", ret = PyObject, args = {Int}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_FromStringAndSize", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_FromStringAndSize", ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_GetLength", ret = Py_ssize_t, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_InternInPlace", ret = Void, args = {PyObjectPtr}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_New", ret = PyObject, args = {Py_ssize_t, PY_UCS4}, call = CImpl)
- @CApiBuiltin(name = "PyUnstable_InterpreterState_GetMainModule", ret = PyObjectReturn, args = {PyInterpreterState}, call = CImpl)
+ @CApiBuiltin(name = "PyUnstable_InterpreterState_GetMainModule", ret = PyObject, args = {PyInterpreterState}, call = CImpl)
@CApiBuiltin(name = "PyVectorcall_Call", ret = PyObject, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyVectorcall_Call", ret = PyObject, args = {PyObject, PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "PyVectorcall_Function", ret = vectorcallfunc, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "Py_BuildValue", ret = PyObject, args = {ConstCharPtrAsTruffleString, VARARGS}, call = CImpl)
+ @CApiBuiltin(name = "Py_BuildValue", ret = PyObject, args = {ConstCharPtr, VARARGS}, call = CImpl)
@CApiBuiltin(name = "Py_DecRef", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "Py_EnterRecursiveCall", ret = Int, args = {ConstCharPtr}, call = CImpl)
- @CApiBuiltin(name = "Py_GetBuildInfo", ret = ConstCharPtrAsTruffleString, args = {}, call = CImpl)
- @CApiBuiltin(name = "Py_GetCompiler", ret = ConstCharPtrAsTruffleString, args = {}, call = CImpl)
- @CApiBuiltin(name = "Py_GetConstant", ret = PyObjectReturn, args = {UNSIGNED_INT}, call = CImpl)
- @CApiBuiltin(name = "Py_GetConstantBorrowed", ret = PyObjectReturn, args = {UNSIGNED_INT}, call = CImpl)
- @CApiBuiltin(name = "Py_GetVersion", ret = ConstCharPtrAsTruffleString, args = {}, call = CImpl)
+ @CApiBuiltin(name = "Py_GetBuildInfo", ret = ConstCharPtr, args = {}, call = CImpl)
+ @CApiBuiltin(name = "Py_GetCompiler", ret = ConstCharPtr, args = {}, call = CImpl)
+ @CApiBuiltin(name = "Py_GetConstant", ret = PyObject, args = {UNSIGNED_INT}, call = CImpl)
+ @CApiBuiltin(name = "Py_GetConstantBorrowed", ret = PyObject, args = {UNSIGNED_INT}, call = CImpl)
+ @CApiBuiltin(name = "Py_GetVersion", ret = ConstCharPtr, args = {}, call = CImpl)
@CApiBuiltin(name = "Py_HashPointer", ret = Py_hash_t, args = {CONST_VOID_PTR}, call = CImpl)
@CApiBuiltin(name = "Py_IncRef", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "Py_Is", ret = Int, args = {PyObject, PyObject}, call = CImpl)
@@ -600,17 +587,17 @@ public final class CApiFunction {
@CApiBuiltin(name = "Py_IsTrue", ret = Int, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "Py_LeaveRecursiveCall", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "Py_NewRef", ret = PyObject, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "Py_VaBuildValue", ret = PyObject, args = {ConstCharPtrAsTruffleString, VA_LIST}, call = CImpl)
+ @CApiBuiltin(name = "Py_VaBuildValue", ret = PyObject, args = {ConstCharPtr, VA_LIST}, call = CImpl)
@CApiBuiltin(name = "Py_XNewRef", ret = PyObject, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyArg_ParseTupleAndKeywordsFast", ret = Int, args = {PyObject, PyObject, _PYARG_PARSER_PTR, VARARGS}, call = CImpl)
@CApiBuiltin(name = "_PyBytes_Resize", ret = Int, args = {PyObjectPtr, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "_PyDict_GetItem_KnownHash", ret = PyObject, args = {PyObject, PyObject, Py_hash_t}, call = CImpl)
@CApiBuiltin(name = "_PyDict_NewPresized", ret = PyObject, args = {Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "_PyErr_BadInternalCall", ret = Void, args = {ConstCharPtr, PrimitiveResult32}, call = CImpl)
+ @CApiBuiltin(name = "_PyErr_BadInternalCall", ret = Void, args = {ConstCharPtr, Int}, call = CImpl)
@CApiBuiltin(name = "_PyErr_ChainExceptions1", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyEval_SliceIndex", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = CImpl)
- @CApiBuiltin(name = "_PyObject_AssertFailed", ret = VoidNoReturn, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int,
- ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "_PyObject_AssertFailed", ret = Void, args = {PyObject, ConstCharPtr, ConstCharPtr, ConstCharPtr, Int,
+ ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "_PyObject_Dump", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyObject_GC_New", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "_PyObject_GC_NewVar", ret = PyVarObject, args = {PyTypeObject, Py_ssize_t}, call = CImpl)
@@ -619,10 +606,10 @@ public final class CApiFunction {
@CApiBuiltin(name = "_PyObject_GetDictPtr", ret = PyObjectPtr, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyObject_New", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "_PyObject_NewVar", ret = PyVarObject, args = {PyTypeObject, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "_PyTrash_thread_deposit_object", ret = Void, args = {PyThreadState, PyObjectReturn}, call = CImpl)
+ @CApiBuiltin(name = "_PyTrash_thread_deposit_object", ret = Void, args = {PyThreadState, PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyTrash_thread_destroy_chain", ret = Void, args = {PyThreadState}, call = CImpl)
@CApiBuiltin(name = "_PyTuple_Resize", ret = Int, args = {PyObjectPtr, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "_PyType_Name", ret = ConstCharPtrAsTruffleString, args = {PyTypeObject}, call = CImpl)
+ @CApiBuiltin(name = "_PyType_Name", ret = ConstCharPtr, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "_PyUnicode_FromId", ret = PyObject, args = {PY_IDENTIFIER}, call = CImpl)
@CApiBuiltin(name = "_PyUnicode_IsAlpha", ret = Int, args = {PY_UCS4}, call = CImpl)
@CApiBuiltin(name = "_PyUnicode_IsDecimalDigit", ret = Int, args = {PY_UCS4}, call = CImpl)
@@ -643,12 +630,12 @@ public final class CApiFunction {
@CApiBuiltin(name = "_Py_BreakPoint", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "_Py_Dealloc", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_Py_DecRef", ret = Void, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "_Py_FatalErrorFunc", ret = VoidNoReturn, args = {ConstCharPtr, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "_Py_FatalErrorFunc", ret = Void, args = {ConstCharPtr, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "_Py_HashDouble", ret = Py_hash_t, args = {PyObject, ArgDescriptor.Double}, call = CImpl)
@CApiBuiltin(name = "_Py_IncRef", ret = Void, args = {PyObject}, call = CImpl)
@CApiBuiltin(name = "_Py_NewReference", ret = Void, args = {PyObject}, call = CImpl)
- @CApiBuiltin(name = "_Py_ResurrectReference", ret = Void, args = {PyObjectReturn}, call = CImpl)
- @CApiBuiltin(name = "_Py_SetRefcnt", ret = Void, args = {PyObjectReturn, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "_Py_ResurrectReference", ret = Void, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "_Py_SetRefcnt", ret = Void, args = {PyObject, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "_Py_c_abs", ret = Double, args = {PY_COMPLEX}, call = CImpl)
@CApiBuiltin(name = "_Py_c_diff", ret = PY_COMPLEX, args = {PY_COMPLEX, PY_COMPLEX}, call = CImpl)
@CApiBuiltin(name = "_Py_c_neg", ret = PY_COMPLEX, args = {PY_COMPLEX}, call = CImpl)
@@ -660,8 +647,8 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyAsyncGen_New", ret = PyObject, args = {PyFrameObject, PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyByteArray_Concat", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyByteArray_FromObject", ret = PyObject, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyBytes_DecodeEscape", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, Py_ssize_t,
- ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyBytes_DecodeEscape", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, Py_ssize_t,
+ ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyBytes_Repr", ret = PyObject, args = {PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyCell_New", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCode_Addr2Location", ret = Int, args = {PyCodeObject, Int, INT_LIST, INT_LIST, INT_LIST, INT_LIST}, call = NotImplemented)
@@ -671,19 +658,19 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyCode_GetVarnames", ret = PyObject, args = {PyCodeObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCode_Optimize", ret = PyObject, args = {PyObject, PyObject, PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_BackslashReplaceErrors", ret = PyObject, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_Decode", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_Encode", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_Decode", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_Encode", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_IgnoreErrors", ret = PyObject, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_IncrementalDecoder", ret = PyObject, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_IncrementalEncoder", ret = PyObject, args = {ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_KnownEncoding", ret = Int, args = {ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_LookupError", ret = PyObject, args = {ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_IncrementalDecoder", ret = PyObject, args = {ConstCharPtr, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_IncrementalEncoder", ret = PyObject, args = {ConstCharPtr, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_KnownEncoding", ret = Int, args = {ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_LookupError", ret = PyObject, args = {ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_NameReplaceErrors", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_Register", ret = Int, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_RegisterError", ret = Int, args = {ConstCharPtrAsTruffleString, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_RegisterError", ret = Int, args = {ConstCharPtr, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_ReplaceErrors", ret = PyObject, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_StreamReader", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyCodec_StreamWriter", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_StreamReader", ret = PyObject, args = {ConstCharPtr, PyObject, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCodec_StreamWriter", ret = PyObject, args = {ConstCharPtr, PyObject, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_Unregister", ret = Int, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCodec_XMLCharRefReplaceErrors", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCompile_OpcodeStackEffect", ret = Int, args = {Int, Int}, call = NotImplemented)
@@ -698,40 +685,40 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyConfig_SetString", ret = PYSTATUS, args = {PYCONFIG_PTR, WCHAR_T_PTR_LIST, CONST_WCHAR_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyConfig_SetWideStringList", ret = PYSTATUS, args = {PYCONFIG_PTR, PYWIDESTRINGLIST_PTR, Py_ssize_t, WCHAR_T_PTR_LIST}, call = NotImplemented)
@CApiBuiltin(name = "PyCoro_New", ret = PyObject, args = {PyFrameObject, PyObject, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyCriticalSection2_Begin", ret = Void, args = {PY_CRITICAL_SECTION2_PTR, PyObjectReturn, PyObjectReturn}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCriticalSection2_Begin", ret = Void, args = {PY_CRITICAL_SECTION2_PTR, PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCriticalSection2_End", ret = Void, args = {PY_CRITICAL_SECTION2_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "PyCriticalSection_Begin", ret = Void, args = {PY_CRITICAL_SECTION_PTR, PyObjectReturn}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCriticalSection_Begin", ret = Void, args = {PY_CRITICAL_SECTION_PTR, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyCriticalSection_End", ret = Void, args = {PY_CRITICAL_SECTION_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyDescr_NewMember", ret = PyObject, args = {PyTypeObject, PyMemberDef}, call = NotImplemented)
@CApiBuiltin(name = "PyDescr_NewMethod", ret = PyObject, args = {PyTypeObject, PyMethodDef}, call = NotImplemented)
@CApiBuiltin(name = "PyDescr_NewWrapper", ret = PyObject, args = {PyTypeObject, WRAPPERBASE, Pointer}, call = NotImplemented)
@CApiBuiltin(name = "PyDict_MergeFromSeq2", ret = Int, args = {PyObject, PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_FormatUnraisable", ret = Void, args = {ConstCharPtr, VARARGS}, call = CImpl)
- @CApiBuiltin(name = "PyErr_ProgramText", ret = PyObject, args = {ConstCharPtrAsTruffleString, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyErr_ProgramText", ret = PyObject, args = {ConstCharPtr, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_ProgramTextObject", ret = PyObject, args = {PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_RangedSyntaxLocationObject", ret = Void, args = {PyObject, Int, Int, Int, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_SetImportError", ret = PyObject, args = {PyObject, PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_SetImportErrorSubclass", ret = PyObject, args = {PyObject, PyObject, PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_SetInterrupt", ret = Void, args = {}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_SetInterruptEx", ret = Int, args = {Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyErr_SyntaxLocation", ret = Void, args = {ConstCharPtrAsTruffleString, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyErr_SyntaxLocationEx", ret = Void, args = {ConstCharPtrAsTruffleString, Int, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyErr_SyntaxLocation", ret = Void, args = {ConstCharPtr, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyErr_SyntaxLocationEx", ret = Void, args = {ConstCharPtr, Int, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyErr_SyntaxLocationObject", ret = Void, args = {PyObject, Int, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyEval_AcquireThread", ret = Void, args = {PyThreadState}, call = NotImplemented)
@CApiBuiltin(name = "PyEval_EvalFrame", ret = PyObject, args = {PyFrameObject}, call = NotImplemented)
@CApiBuiltin(name = "PyEval_EvalFrameEx", ret = PyObject, args = {PyFrameObject, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyEval_GetFuncDesc", ret = ConstCharPtrAsTruffleString, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyEval_GetFuncName", ret = ConstCharPtrAsTruffleString, args = {PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyEval_GetFuncDesc", ret = ConstCharPtr, args = {PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyEval_GetFuncName", ret = ConstCharPtr, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyEval_ReleaseThread", ret = Void, args = {PyThreadState}, call = NotImplemented)
@CApiBuiltin(name = "PyEval_SetProfile", ret = Void, args = {PY_TRACEFUNC, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyEval_SetTrace", ret = Void, args = {PY_TRACEFUNC, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnstable_Eval_RequestCodeExtraIndex", ret = Py_ssize_t, args = {freefunc}, call = NotImplemented)
- @CApiBuiltin(name = "PyExceptionClass_Name", ret = ConstCharPtrAsTruffleString, args = {PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyFile_FromFd", ret = PyObject, args = {Int, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString, Int, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString,
- ConstCharPtrAsTruffleString, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyExceptionClass_Name", ret = ConstCharPtr, args = {PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyFile_FromFd", ret = PyObject, args = {Int, ConstCharPtr, ConstCharPtr, Int, ConstCharPtr, ConstCharPtr,
+ ConstCharPtr, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyFile_GetLine", ret = PyObject, args = {PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyFile_NewStdPrinter", ret = PyObject, args = {Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyFile_OpenCode", ret = PyObject, args = {ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyFile_OpenCode", ret = PyObject, args = {ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyFile_OpenCodeObject", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyFile_SetOpenCodeHook", ret = Int, args = {PY_OPENCODEHOOKFUNCTION, Pointer}, call = NotImplemented)
@CApiBuiltin(name = "PyFloat_GetInfo", ret = PyObject, args = {}, call = NotImplemented)
@@ -749,16 +736,16 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyFunction_SetKwDefaults", ret = Int, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyHash_GetFuncDef", ret = PYHASH_FUNCDEF_PTR, args = {}, call = Ignored, comment = "removed from our pyhash.h")
@CApiBuiltin(name = "PyImport_AppendInittab", ret = Int, args = {ConstCharPtr, func_objvoid}, call = NotImplemented)
- @CApiBuiltin(name = "PyImport_ExecCodeModule", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyImport_ExecCodeModuleEx", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyImport_ExecCodeModule", ret = PyObject, args = {ConstCharPtr, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyImport_ExecCodeModuleEx", ret = PyObject, args = {ConstCharPtr, PyObject, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyImport_ExecCodeModuleObject", ret = PyObject, args = {PyObject, PyObject, PyObject, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyImport_ExecCodeModuleWithPathnames", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyObject, ConstCharPtrAsTruffleString,
- ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyImport_ExecCodeModuleWithPathnames", ret = PyObject, args = {ConstCharPtr, PyObject, ConstCharPtr,
+ ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyImport_ExtendInittab", ret = Int, args = {INITTAB}, call = NotImplemented)
@CApiBuiltin(name = "PyImport_GetImporter", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyImport_GetMagicNumber", ret = Long, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyImport_GetMagicTag", ret = ConstCharPtrAsTruffleString, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyImport_ImportFrozenModule", ret = Int, args = {ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyImport_GetMagicTag", ret = ConstCharPtr, args = {}, call = NotImplemented)
+ @CApiBuiltin(name = "PyImport_ImportFrozenModule", ret = Int, args = {ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyImport_ImportFrozenModuleObject", ret = Int, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyImport_ReloadModule", ret = PyObject, args = {PyObject}, call = NotImplemented)
// Not implemented, we just use handwritten stub (in import.c) to preserve the C attributes
@@ -772,20 +759,20 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyInterpreterState_Next", ret = PyInterpreterState, args = {PyInterpreterState}, call = CImpl)
@CApiBuiltin(name = "PyInterpreterState_ThreadHead", ret = PyThreadState, args = {PyInterpreterState}, call = CImpl)
@CApiBuiltin(name = "PyMarshal_ReadLastObjectFromFile", ret = PyObject, args = {FILE_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "PyMarshal_ReadLongFromFile", ret = PrimitiveResult64, args = {FILE_PTR}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMarshal_ReadLongFromFile", ret = Long, args = {FILE_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyMarshal_ReadObjectFromFile", ret = PyObject, args = {FILE_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyMarshal_ReadObjectFromString", ret = PyObject, args = {ConstCharPtr, Py_ssize_t}, call = NotImplemented)
- @CApiBuiltin(name = "PyMarshal_ReadShortFromFile", ret = PrimitiveResult32, args = {FILE_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "PyMarshal_WriteLongToFile", ret = Void, args = {PrimitiveResult64, FILE_PTR, PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "PyMarshal_WriteObjectToFile", ret = Void, args = {PyObject, FILE_PTR, PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "PyMarshal_WriteObjectToString", ret = PyObject, args = {PyObject, PrimitiveResult32}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMarshal_ReadShortFromFile", ret = Int, args = {FILE_PTR}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMarshal_WriteLongToFile", ret = Void, args = {Long, FILE_PTR, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMarshal_WriteObjectToFile", ret = Void, args = {PyObject, FILE_PTR, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMarshal_WriteObjectToString", ret = PyObject, args = {PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyMem_GetAllocator", ret = Void, args = {PYMEMALLOCATORDOMAIN, PYMEMALLOCATOREX_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyMem_SetAllocator", ret = Void, args = {PYMEMALLOCATORDOMAIN, PYMEMALLOCATOREX_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyMem_SetupDebugHooks", ret = Void, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyMember_GetOne", ret = PyObject, args = {ConstCharPtrAsTruffleString, PyMemberDef}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMember_GetOne", ret = PyObject, args = {ConstCharPtr, PyMemberDef}, call = NotImplemented)
@CApiBuiltin(name = "PyMember_SetOne", ret = Int, args = {CHAR_PTR, PyMemberDef, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyMonitoring_EnterScope", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, UINT64_T_PTR, CONST_UINT8_T_PTR, Py_ssize_t}, call = NotImplemented)
- @CApiBuiltin(name = "PyMonitoring_ExitScope", ret = PrimitiveResult32, args = {}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMonitoring_EnterScope", ret = Int, args = {PY_MONITORING_STATE_PTR, UINT64_T_PTR, CONST_UINT8_T_PTR, Py_ssize_t}, call = NotImplemented)
+ @CApiBuiltin(name = "PyMonitoring_ExitScope", ret = Int, args = {}, call = NotImplemented)
@CApiBuiltin(name = "PyMutex_Lock", ret = Void, args = {PY_MUTEX_PTR}, call = CImpl)
@CApiBuiltin(name = "PyMutex_Unlock", ret = Void, args = {PY_MUTEX_PTR}, call = CImpl)
@CApiBuiltin(name = "PyODict_DelItem", ret = Int, args = {PyObject, PyObject}, call = NotImplemented)
@@ -796,7 +783,7 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyOS_AfterFork_Parent", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "PyOS_BeforeFork", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "PyOS_InterruptOccurred", ret = Int, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyOS_Readline", ret = CHAR_PTR, args = {FILE_PTR, FILE_PTR, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyOS_Readline", ret = CHAR_PTR, args = {FILE_PTR, FILE_PTR, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyOS_getsig", ret = PY_OS_SIGHANDLER, args = {Int}, call = NotImplemented)
@CApiBuiltin(name = "PyOS_setsig", ret = PY_OS_SIGHANDLER, args = {Int, PY_OS_SIGHANDLER}, call = NotImplemented)
@CApiBuiltin(name = "PyObject_CallFinalizer", ret = Void, args = {PyObject}, call = NotImplemented)
@@ -809,27 +796,27 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyPickleBuffer_Release", ret = Int, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyPreConfig_InitIsolatedConfig", ret = Void, args = {PYPRECONFIG_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyPreConfig_InitPythonConfig", ret = Void, args = {PYPRECONFIG_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_AnyFile", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_AnyFileEx", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_AnyFileExFlags", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_AnyFileFlags", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_File", ret = PyObject, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int, PyObject, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_FileEx", ret = PyObject, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int, PyObject, PyObject, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_FileExFlags", ret = PyObject, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int, PyObject, PyObject, Int, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_FileFlags", ret = PyObject, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int, PyObject, PyObject, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_InteractiveLoop", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_InteractiveLoopFlags", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_InteractiveOne", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_InteractiveOneFlags", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_AnyFile", ret = Int, args = {FILE_PTR, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_AnyFileEx", ret = Int, args = {FILE_PTR, ConstCharPtr, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_AnyFileExFlags", ret = Int, args = {FILE_PTR, ConstCharPtr, Int, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_AnyFileFlags", ret = Int, args = {FILE_PTR, ConstCharPtr, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_File", ret = PyObject, args = {FILE_PTR, ConstCharPtr, Int, PyObject, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_FileEx", ret = PyObject, args = {FILE_PTR, ConstCharPtr, Int, PyObject, PyObject, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_FileExFlags", ret = PyObject, args = {FILE_PTR, ConstCharPtr, Int, PyObject, PyObject, Int, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_FileFlags", ret = PyObject, args = {FILE_PTR, ConstCharPtr, Int, PyObject, PyObject, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_InteractiveLoop", ret = Int, args = {FILE_PTR, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_InteractiveLoopFlags", ret = Int, args = {FILE_PTR, ConstCharPtr, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_InteractiveOne", ret = Int, args = {FILE_PTR, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_InteractiveOneFlags", ret = Int, args = {FILE_PTR, ConstCharPtr, PY_COMPILER_FLAGS}, call = NotImplemented)
@CApiBuiltin(name = "PyRun_InteractiveOneObject", ret = Int, args = {FILE_PTR, PyObject, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_SimpleFile", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_SimpleFileEx", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_SimpleFileExFlags", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString, Int, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_SimpleString", ret = Int, args = {ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_SimpleStringFlags", ret = Int, args = {ConstCharPtrAsTruffleString, PY_COMPILER_FLAGS}, call = NotImplemented)
- @CApiBuiltin(name = "PyRun_String", ret = PyObject, args = {ConstCharPtrAsTruffleString, Int, PyObject, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_SimpleFile", ret = Int, args = {FILE_PTR, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_SimpleFileEx", ret = Int, args = {FILE_PTR, ConstCharPtr, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_SimpleFileExFlags", ret = Int, args = {FILE_PTR, ConstCharPtr, Int, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_SimpleString", ret = Int, args = {ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_SimpleStringFlags", ret = Int, args = {ConstCharPtr, PY_COMPILER_FLAGS}, call = NotImplemented)
+ @CApiBuiltin(name = "PyRun_String", ret = PyObject, args = {ConstCharPtr, Int, PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PySequence_In", ret = Int, args = {PyObject, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PySignal_SetWakeupFd", ret = PrimitiveResult32, args = {PrimitiveResult32}, call = NotImplemented)
+ @CApiBuiltin(name = "PySignal_SetWakeupFd", ret = Int, args = {Int}, call = NotImplemented)
@CApiBuiltin(name = "PySlice_GetIndices", ret = Int, args = {PyObject, Py_ssize_t, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PySlice_GetIndicesEx", ret = Int, args = {PyObject, Py_ssize_t, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR, PY_SSIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyStatus_Error", ret = PYSTATUS, args = {ConstCharPtr}, call = CImpl)
@@ -840,12 +827,12 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyStatus_NoMemory", ret = PYSTATUS, args = {}, call = CImpl)
@CApiBuiltin(name = "PyStatus_Ok", ret = PYSTATUS, args = {}, call = CImpl)
@CApiBuiltin(name = "PySys_AddAuditHook", ret = Int, args = {PY_AUDITHOOKFUNCTION, Pointer}, call = NotImplemented)
- @CApiBuiltin(name = "PySys_AuditTuple", ret = PrimitiveResult32, args = {ConstCharPtr, PyObjectReturn}, call = NotImplemented)
+ @CApiBuiltin(name = "PySys_AuditTuple", ret = Int, args = {ConstCharPtr, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PySys_GetXOptions", ret = PyObject, args = {}, call = NotImplemented)
@CApiBuiltin(name = "PySys_ResetWarnOptions", ret = Void, args = {}, call = NotImplemented)
@CApiBuiltin(name = "PySys_SetArgv", ret = Void, args = {Int, WCHAR_T_PTR_LIST}, call = NotImplemented)
@CApiBuiltin(name = "PySys_SetArgvEx", ret = Void, args = {Int, WCHAR_T_PTR_LIST, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PySys_SetObject", ret = Int, args = {ConstCharPtrAsTruffleString, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PySys_SetObject", ret = Int, args = {ConstCharPtr, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyThreadState_Delete", ret = Void, args = {PyThreadState}, call = NotImplemented)
@CApiBuiltin(name = "PyThreadState_EnterTracing", ret = Void, args = {PyThreadState}, call = NotImplemented)
@CApiBuiltin(name = "PyThreadState_GetID", ret = UINT64_T, args = {PyThreadState}, call = CImpl)
@@ -859,7 +846,7 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyThread_create_key", ret = Int, args = {}, call = CImpl)
@CApiBuiltin(name = "PyThread_delete_key", ret = Void, args = {Int}, call = CImpl)
@CApiBuiltin(name = "PyThread_delete_key_value", ret = Void, args = {Int}, call = CImpl)
- @CApiBuiltin(name = "PyThread_exit_thread", ret = VoidNoReturn, args = {}, call = CImpl)
+ @CApiBuiltin(name = "PyThread_exit_thread", ret = Void, args = {}, call = CImpl)
@CApiBuiltin(name = "PyThread_get_key_value", ret = Pointer, args = {Int}, call = CImpl)
@CApiBuiltin(name = "PyThread_get_stacksize", ret = SIZE_T, args = {}, call = NotImplemented)
@CApiBuiltin(name = "PyThread_get_thread_native_id", ret = UNSIGNED_LONG, args = {}, call = CImpl)
@@ -867,12 +854,12 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyThread_set_key_value", ret = Int, args = {Int, Pointer}, call = CImpl)
@CApiBuiltin(name = "PyThread_set_stacksize", ret = Int, args = {SIZE_T}, call = NotImplemented)
@CApiBuiltin(name = "PyThread_start_new_thread", ret = UNSIGNED_LONG, args = {func_voidvoidptr, Pointer}, call = CImpl)
- @CApiBuiltin(name = "PyThread_acquire_lock", ret = PrimitiveResult32, args = {PY_THREAD_TYPE_LOCK, PrimitiveResult32}, call = CImpl)
+ @CApiBuiltin(name = "PyThread_acquire_lock", ret = Int, args = {PY_THREAD_TYPE_LOCK, Int}, call = CImpl)
@CApiBuiltin(name = "PyThread_allocate_lock", ret = PY_THREAD_TYPE_LOCK, args = {}, call = CImpl)
@CApiBuiltin(name = "PyThread_release_lock", ret = Void, args = {PY_THREAD_TYPE_LOCK}, call = CImpl)
@CApiBuiltin(name = "PyTraceBack_Print", ret = Int, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyType_ClearCache", ret = UNSIGNED_INT, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyType_GetFullyQualifiedName", ret = PyObjectReturn, args = {PyTypeObjectRawPointer}, call = CImpl)
+ @CApiBuiltin(name = "PyType_GetFullyQualifiedName", ret = PyObject, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyType_SUPPORTS_WEAKREFS", ret = Int, args = {PyTypeObject}, call = CImpl)
@CApiBuiltin(name = "PyUnicodeDecodeError_GetEncoding", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeDecodeError_GetEnd", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = NotImplemented)
@@ -880,7 +867,7 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyUnicodeDecodeError_GetReason", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeDecodeError_GetStart", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeDecodeError_SetEnd", ret = Int, args = {PyObject, Py_ssize_t}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicodeDecodeError_SetReason", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicodeDecodeError_SetReason", ret = Int, args = {PyObject, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeDecodeError_SetStart", ret = Int, args = {PyObject, Py_ssize_t}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeEncodeError_GetEncoding", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeEncodeError_GetEnd", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = NotImplemented)
@@ -888,33 +875,33 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyUnicodeEncodeError_GetReason", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeEncodeError_GetStart", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeEncodeError_SetEnd", ret = Int, args = {PyObject, Py_ssize_t}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicodeEncodeError_SetReason", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicodeEncodeError_SetReason", ret = Int, args = {PyObject, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeEncodeError_SetStart", ret = Int, args = {PyObject, Py_ssize_t}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeTranslateError_GetEnd", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeTranslateError_GetObject", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeTranslateError_GetReason", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeTranslateError_GetStart", ret = Int, args = {PyObject, PY_SSIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeTranslateError_SetEnd", ret = Int, args = {PyObject, Py_ssize_t}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicodeTranslateError_SetReason", ret = Int, args = {PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicodeTranslateError_SetReason", ret = Int, args = {PyObject, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicodeTranslateError_SetStart", ret = Int, args = {PyObject, Py_ssize_t}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_AsCharmapString", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_AsDecodedObject", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_AsDecodedUnicode", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_AsEncodedObject", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_AsEncodedUnicode", ret = PyObject, args = {PyObject, ConstCharPtrAsTruffleString, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_AsDecodedObject", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_AsDecodedUnicode", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_AsEncodedObject", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_AsEncodedUnicode", ret = PyObject, args = {PyObject, ConstCharPtr, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_AsRawUnicodeEscapeString", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_AsUTF16String", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_AsUTF32String", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_BuildEncodingMap", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_CopyCharacters", ret = Py_ssize_t, args = {PyObject, Py_ssize_t, PyObject, Py_ssize_t, Py_ssize_t}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_DecodeCharmap", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF7", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_DecodeUTF7Stateful", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString, PY_SSIZE_T_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_DecodeUnicodeEscape", ret = PyObject, args = {ConstCharPtrAsTruffleString, Py_ssize_t, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_EqualToUTF8", ret = PrimitiveResult32, args = {PyObjectReturn, ConstCharPtr}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_DecodeCharmap", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, PyObject, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF7", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_DecodeUTF7Stateful", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr, PY_SSIZE_T_PTR}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_DecodeUnicodeEscape", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_EqualToUTF8", ret = Int, args = {PyObject, ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_FSDecoder", ret = Int, args = {PyObject, Pointer}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_Fill", ret = Py_ssize_t, args = {PyObject, Py_ssize_t, Py_ssize_t, PY_UCS4}, call = CImpl)
- @CApiBuiltin(name = "PyUnicode_GetDefaultEncoding", ret = ConstCharPtrAsTruffleString, args = {}, call = CImpl)
+ @CApiBuiltin(name = "PyUnicode_GetDefaultEncoding", ret = ConstCharPtr, args = {}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_IsIdentifier", ret = Int, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_Partition", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_RPartition", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
@@ -922,29 +909,29 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyUnicode_Resize", ret = Int, args = {PyObjectPtr, Py_ssize_t}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_RichCompare", ret = PyObject, args = {PyObject, PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_Splitlines", ret = PyObject, args = {PyObject, Int}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnicode_Translate", ret = PyObject, args = {PyObject, PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnicode_Translate", ret = PyObject, args = {PyObject, PyObject, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyUnicode_WriteChar", ret = Int, args = {PyObject, Py_ssize_t, PY_UCS4}, call = NotImplemented)
@CApiBuiltin(name = "PyWideStringList_Append", ret = PYSTATUS, args = {PYWIDESTRINGLIST_PTR, CONST_WCHAR_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyWideStringList_Insert", ret = PYSTATUS, args = {PYWIDESTRINGLIST_PTR, Py_ssize_t, CONST_WCHAR_PTR}, call = NotImplemented)
@CApiBuiltin(name = "PyWrapper_New", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "Py_AddPendingCall", ret = Int, args = {func_intvoidptr, Pointer}, call = NotImplemented)
@CApiBuiltin(name = "Py_BytesMain", ret = Int, args = {Int, CHAR_PTR_LIST}, call = NotImplemented)
- @CApiBuiltin(name = "Py_DecodeLocale", ret = WCHAR_T_PTR, args = {ConstCharPtrAsTruffleString, SIZE_T_PTR}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_DecodeLocale", ret = WCHAR_T_PTR, args = {ConstCharPtr, SIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "Py_EncodeLocale", ret = CHAR_PTR, args = {CONST_WCHAR_PTR, SIZE_T_PTR}, call = NotImplemented)
@CApiBuiltin(name = "Py_EndInterpreter", ret = Void, args = {PyThreadState}, call = NotImplemented)
- @CApiBuiltin(name = "Py_Exit", ret = VoidNoReturn, args = {Int}, call = NotImplemented)
- @CApiBuiltin(name = "Py_ExitStatusException", ret = VoidNoReturn, args = {PYSTATUS}, call = NotImplemented)
- @CApiBuiltin(name = "Py_FatalError", ret = VoidNoReturn, args = {ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "Py_FdIsInteractive", ret = Int, args = {FILE_PTR, ConstCharPtrAsTruffleString}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_Exit", ret = Void, args = {Int}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_ExitStatusException", ret = Void, args = {PYSTATUS}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_FatalError", ret = Void, args = {ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_FdIsInteractive", ret = Int, args = {FILE_PTR, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "Py_Finalize", ret = Void, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_FinalizeEx", ret = Int, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_FrozenMain", ret = Int, args = {Int, CHAR_PTR_LIST}, call = NotImplemented)
- @CApiBuiltin(name = "Py_GETENV", ret = CHAR_PTR, args = {ConstCharPtrAsTruffleString}, call = CImpl)
+ @CApiBuiltin(name = "Py_GETENV", ret = CHAR_PTR, args = {ConstCharPtr}, call = CImpl)
@CApiBuiltin(name = "Py_GetArgcArgv", ret = Void, args = {INT_LIST, WCHAR_T_PTR_PTR_LIST}, call = NotImplemented)
- @CApiBuiltin(name = "Py_GetCopyright", ret = ConstCharPtrAsTruffleString, args = {}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_GetCopyright", ret = ConstCharPtr, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_GetExecPrefix", ret = WCHAR_T_PTR, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_GetPath", ret = WCHAR_T_PTR, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "Py_GetPlatform", ret = ConstCharPtrAsTruffleString, args = {}, call = NotImplemented)
+ @CApiBuiltin(name = "Py_GetPlatform", ret = ConstCharPtr, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_GetPrefix", ret = WCHAR_T_PTR, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_GetProgramFullPath", ret = WCHAR_T_PTR, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_GetProgramName", ret = WCHAR_T_PTR, args = {}, call = NotImplemented)
@@ -953,7 +940,7 @@ public final class CApiFunction {
@CApiBuiltin(name = "Py_Initialize", ret = Void, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_InitializeEx", ret = Void, args = {Int}, call = NotImplemented)
@CApiBuiltin(name = "Py_InitializeFromConfig", ret = PYSTATUS, args = {CONST_PYCONFIG_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "Py_IsFinalizing", ret = PrimitiveResult32, args = {}, call = CImpl)
+ @CApiBuiltin(name = "Py_IsFinalizing", ret = Int, args = {}, call = CImpl)
@CApiBuiltin(name = "Py_Main", ret = Int, args = {Int, WCHAR_T_PTR_LIST}, call = NotImplemented)
@CApiBuiltin(name = "Py_MakePendingCalls", ret = Int, args = {}, call = NotImplemented)
@CApiBuiltin(name = "Py_NewInterpreter", ret = PyThreadState, args = {}, call = NotImplemented)
@@ -979,27 +966,27 @@ public final class CApiFunction {
@CApiBuiltin(name = "_PyLong_Copy", ret = PyObject, args = {PyLongObject}, call = NotImplemented)
@CApiBuiltin(name = "_PyLong_GCD", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "_PyLong_New", ret = PyLongObject, args = {Py_ssize_t}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireBranchEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireCRaiseEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireCReturnEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireCallEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireExceptionHandledEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireJumpEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireLineEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FirePyResumeEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FirePyReturnEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FirePyStartEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FirePyThrowEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FirePyUnwindEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FirePyYieldEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireRaiseEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireReraiseEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T}, call = NotImplemented)
- @CApiBuiltin(name = "_PyMonitoring_FireStopIterationEvent", ret = PrimitiveResult32, args = {PY_MONITORING_STATE_PTR, PyObjectReturn, INT32_T, PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "_PyObject_CallMethodId", ret = PyObject, args = {PyObject, PY_IDENTIFIER, ConstCharPtrAsTruffleString, VARARGS}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireBranchEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireCRaiseEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireCReturnEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireCallEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireExceptionHandledEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireJumpEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireLineEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, Int}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FirePyResumeEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FirePyReturnEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FirePyStartEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FirePyThrowEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FirePyUnwindEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FirePyYieldEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireRaiseEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireReraiseEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyMonitoring_FireStopIterationEvent", ret = Int, args = {PY_MONITORING_STATE_PTR, PyObject, INT32_T, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyObject_CallMethodId", ret = PyObject, args = {PyObject, PY_IDENTIFIER, ConstCharPtr, VARARGS}, call = NotImplemented)
@CApiBuiltin(name = "_PyObject_FunctionStr", ret = PyObject, args = {PyObject}, call = NotImplemented)
@CApiBuiltin(name = "_PyObject_GenericGetAttrWithDict", ret = PyObject, args = {PyObject, PyObject, PyObject, Int}, call = NotImplemented)
@CApiBuiltin(name = "_PyObject_GenericSetAttrWithDict", ret = Int, args = {PyObject, PyObject, PyObject, PyObject}, call = NotImplemented)
- @CApiBuiltin(name = "_PyObject_SetManagedDict", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyObject_SetManagedDict", ret = Int, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "_PySlice_FromIndices", ret = PyObject, args = {Py_ssize_t, Py_ssize_t}, call = NotImplemented)
@CApiBuiltin(name = "_PySlice_GetLongIndices", ret = Int, args = {PySliceObject, PyObject, PyObjectPtr, PyObjectPtr, PyObjectPtr}, call = NotImplemented)
@CApiBuiltin(name = "_PyStack_AsDict", ret = PyObject, args = {PyObjectConstPtr, PyObject}, call = NotImplemented)
@@ -1009,62 +996,62 @@ public final class CApiFunction {
@CApiBuiltin(name = "_PyUnicodeWriter_Init", ret = Void, args = {_PYUNICODEWRITER_PTR}, call = CImpl)
@CApiBuiltin(name = "_PyUnicodeWriter_PrepareInternal", ret = Int, args = {_PYUNICODEWRITER_PTR, Py_ssize_t, PY_UCS4}, call = CImpl)
@CApiBuiltin(name = "_PyUnicodeWriter_PrepareKindInternal", ret = Int, args = {_PYUNICODEWRITER_PTR, Int}, call = CImpl)
- @CApiBuiltin(name = "_PyUnicodeWriter_WriteASCIIString", ret = Int, args = {_PYUNICODEWRITER_PTR, ConstCharPtrAsTruffleString, Py_ssize_t}, call = CImpl)
+ @CApiBuiltin(name = "_PyUnicodeWriter_WriteASCIIString", ret = Int, args = {_PYUNICODEWRITER_PTR, ConstCharPtr, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "_PyUnicodeWriter_WriteChar", ret = Int, args = {_PYUNICODEWRITER_PTR, PY_UCS4}, call = CImpl)
- @CApiBuiltin(name = "_PyUnicodeWriter_WriteLatin1String", ret = Int, args = {_PYUNICODEWRITER_PTR, ConstCharPtrAsTruffleString, Py_ssize_t}, call = NotImplemented)
+ @CApiBuiltin(name = "_PyUnicodeWriter_WriteLatin1String", ret = Int, args = {_PYUNICODEWRITER_PTR, ConstCharPtr, Py_ssize_t}, call = NotImplemented)
@CApiBuiltin(name = "_PyUnicodeWriter_WriteStr", ret = Int, args = {_PYUNICODEWRITER_PTR, PyObject}, call = CImpl)
@CApiBuiltin(name = "_PyUnicodeWriter_WriteSubstring", ret = Int, args = {_PYUNICODEWRITER_PTR, PyObject, Py_ssize_t, Py_ssize_t}, call = CImpl)
@CApiBuiltin(name = "PyUnicode_Format", ret = PyObject, args = {PyObject, PyObject}, call = CImpl)
@CApiBuiltin(name = "_Py_InitializeMain", ret = PYSTATUS, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "_Py_fopen_obj", ret = FILE_PTR, args = {PyObject, ConstCharPtrAsTruffleString}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_AtExit", ret = PrimitiveResult32, args = {PyInterpreterState, atexit_datacallbackfunc, Pointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyCode_AddWatcher", ret = PrimitiveResult32, args = {PyCode_WatchCallback}, call = NotImplemented)
- @CApiBuiltin(name = "PyCode_ClearWatcher", ret = PrimitiveResult32, args = {PrimitiveResult32}, call = NotImplemented)
+ @CApiBuiltin(name = "_Py_fopen_obj", ret = FILE_PTR, args = {PyObject, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_AtExit", ret = Int, args = {PyInterpreterState, atexit_datacallbackfunc, Pointer}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCode_AddWatcher", ret = Int, args = {PyCode_WatchCallback}, call = NotImplemented)
+ @CApiBuiltin(name = "PyCode_ClearWatcher", ret = Int, args = {Int}, call = NotImplemented)
@CApiBuiltin(name = "PyFunction_SetVectorcall", ret = Void, args = {PyFunctionObject, vectorcallfunc}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_Code_GetExtra", ret = PrimitiveResult32, args = {PyObject, Py_ssize_t, VOID_PTR_LIST}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_Code_SetExtra", ret = PrimitiveResult32, args = {PyObject, Py_ssize_t, Pointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_CopyPerfMapFile", ret = PrimitiveResult32, args = {ConstCharPtr}, call = NotImplemented)
- @CApiBuiltin(name = "PyDict_AddWatcher", ret = PrimitiveResult32, args = {PyDict_WatchCallback}, call = NotImplemented)
- @CApiBuiltin(name = "PyDict_ClearWatcher", ret = PrimitiveResult32, args = {PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "PyDict_Unwatch", ret = PrimitiveResult32, args = {PrimitiveResult32, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyDict_Watch", ret = PrimitiveResult32, args = {PrimitiveResult32, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyErr_DisplayException", ret = Void, args = {PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyErr_GetRaisedException", ret = PyObjectRawPointer, args = {}, call = CImpl)
- @CApiBuiltin(name = "PyErr_SetRaisedException", ret = Void, args = {PyObjectRawPointer}, call = CImpl)
- @CApiBuiltin(name = "PyEval_SetProfileAllThreads", ret = Void, args = {PY_TRACEFUNC, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyEval_SetTraceAllThreads", ret = Void, args = {PY_TRACEFUNC, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyFrame_GetVar", ret = PyObjectRawPointer, args = {PyFrameObjectBorrowed, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyFrame_GetVarString", ret = PyObjectRawPointer, args = {PyFrameObjectBorrowed, ConstCharPtr}, call = NotImplemented)
- @CApiBuiltin(name = "PyFunction_AddWatcher", ret = PrimitiveResult32, args = {PyFunction_WatchCallback}, call = NotImplemented)
- @CApiBuiltin(name = "PyFunction_ClearWatcher", ret = PrimitiveResult32, args = {PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "PyGen_GetCode", ret = PyCodeObjectTransfer, args = {PY_GEN_OBJECT}, call = NotImplemented)
- @CApiBuiltin(name = "PyObject_GetItemData", ret = Pointer, args = {PyObjectRawPointer}, call = CImpl)
- @CApiBuiltin(name = "PyObject_GetTypeData", ret = Pointer, args = {PyObjectRawPointer, PyTypeObjectTransfer}, call = CImpl)
- @CApiBuiltin(name = "PyType_AddWatcher", ret = PrimitiveResult32, args = {PyType_WatchCallback}, call = NotImplemented)
- @CApiBuiltin(name = "PyType_ClearWatcher", ret = PrimitiveResult32, args = {PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "PyType_FromMetaclass", ret = PyObjectRawPointer, args = {PyTypeObjectTransfer, PyObjectRawPointer, PY_TYPE_SPEC, PyObjectRawPointer}, call = CImpl)
- @CApiBuiltin(name = "PyType_GetDict", ret = PyObjectRawPointer, args = {PyTypeObjectTransfer}, call = CImpl)
- @CApiBuiltin(name = "PyType_GetTypeDataSize", ret = Py_ssize_t, args = {PyTypeObjectTransfer}, call = CImpl)
- @CApiBuiltin(name = "PyType_Unwatch", ret = PrimitiveResult32, args = {PrimitiveResult32, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyType_Watch", ret = PrimitiveResult32, args = {PrimitiveResult32, PyObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_Exc_PrepReraiseStar", ret = PyObjectRawPointer, args = {PyObjectRawPointer, PyObjectRawPointer}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_Code_GetExtra", ret = Int, args = {PyObject, Py_ssize_t, VOID_PTR_LIST}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_Code_SetExtra", ret = Int, args = {PyObject, Py_ssize_t, Pointer}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_CopyPerfMapFile", ret = Int, args = {ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyDict_AddWatcher", ret = Int, args = {PyDict_WatchCallback}, call = NotImplemented)
+ @CApiBuiltin(name = "PyDict_ClearWatcher", ret = Int, args = {Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyDict_Unwatch", ret = Int, args = {Int, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyDict_Watch", ret = Int, args = {Int, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyErr_DisplayException", ret = Void, args = {PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyErr_GetRaisedException", ret = PyObject, args = {}, call = CImpl)
+ @CApiBuiltin(name = "PyErr_SetRaisedException", ret = Void, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyEval_SetProfileAllThreads", ret = Void, args = {PY_TRACEFUNC, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyEval_SetTraceAllThreads", ret = Void, args = {PY_TRACEFUNC, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyFrame_GetVar", ret = PyObject, args = {PyFrameObject, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyFrame_GetVarString", ret = PyObject, args = {PyFrameObject, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyFunction_AddWatcher", ret = Int, args = {PyFunction_WatchCallback}, call = NotImplemented)
+ @CApiBuiltin(name = "PyFunction_ClearWatcher", ret = Int, args = {Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyGen_GetCode", ret = PyCodeObject, args = {PY_GEN_OBJECT}, call = NotImplemented)
+ @CApiBuiltin(name = "PyObject_GetItemData", ret = Pointer, args = {PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyObject_GetTypeData", ret = Pointer, args = {PyObject, PyTypeObject}, call = CImpl)
+ @CApiBuiltin(name = "PyType_AddWatcher", ret = Int, args = {PyType_WatchCallback}, call = NotImplemented)
+ @CApiBuiltin(name = "PyType_ClearWatcher", ret = Int, args = {Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyType_FromMetaclass", ret = PyObject, args = {PyTypeObject, PyObject, PY_TYPE_SPEC, PyObject}, call = CImpl)
+ @CApiBuiltin(name = "PyType_GetDict", ret = PyObject, args = {PyTypeObject}, call = CImpl)
+ @CApiBuiltin(name = "PyType_GetTypeDataSize", ret = Py_ssize_t, args = {PyTypeObject}, call = CImpl)
+ @CApiBuiltin(name = "PyType_Unwatch", ret = Int, args = {Int, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyType_Watch", ret = Int, args = {Int, PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_Exc_PrepReraiseStar", ret = PyObject, args = {PyObject, PyObject}, call = NotImplemented)
@CApiBuiltin(name = "PyUnstable_GC_VisitObjects", ret = Void, args = {gcvisitobjects_t, Pointer}, call = CImpl)
- @CApiBuiltin(name = "PyUnstable_InterpreterFrame_GetCode", ret = PyObjectRawPointer, args = {_PyInterpreterFrame}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_InterpreterFrame_GetLasti", ret = PrimitiveResult32, args = {_PyInterpreterFrame}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_InterpreterFrame_GetLine", ret = PrimitiveResult32, args = {_PyInterpreterFrame}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_InterpreterFrame_GetCode", ret = PyObject, args = {_PyInterpreterFrame}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_InterpreterFrame_GetLasti", ret = Int, args = {_PyInterpreterFrame}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_InterpreterFrame_GetLine", ret = Int, args = {_PyInterpreterFrame}, call = NotImplemented)
@CApiBuiltin(name = "PyUnstable_Long_CompactValue", ret = Py_ssize_t, args = {ConstPyLongObject}, call = CImpl)
- @CApiBuiltin(name = "PyUnstable_Object_ClearWeakRefsNoCallbacks", ret = Void, args = {PyObjectReturn}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_Object_GC_NewWithExtraData", ret = PyObjectRawPointer, args = {PyTypeObjectTransfer, SIZE_T}, call = CImpl)
+ @CApiBuiltin(name = "PyUnstable_Object_ClearWeakRefsNoCallbacks", ret = Void, args = {PyObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_Object_GC_NewWithExtraData", ret = PyObject, args = {PyTypeObject, SIZE_T}, call = CImpl)
@CApiBuiltin(name = "PyUnstable_PerfMapState_Fini", ret = Void, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_PerfMapState_Init", ret = PrimitiveResult32, args = {}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_PerfTrampoline_CompileCode", ret = PrimitiveResult32, args = {PyCodeObjectRawPointer}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_PerfTrampoline_SetPersistAfterFork", ret = PrimitiveResult32, args = {PrimitiveResult32}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_Type_AssignVersionTag", ret = PrimitiveResult32, args = {PyTypeObjectTransfer}, call = NotImplemented)
- @CApiBuiltin(name = "PyUnstable_WritePerfMapEntry", ret = PrimitiveResult32, args = {CONST_VOID_PTR, UNSIGNED_INT, ConstCharPtr}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_PerfMapState_Init", ret = Int, args = {}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_PerfTrampoline_CompileCode", ret = Int, args = {PyCodeObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_PerfTrampoline_SetPersistAfterFork", ret = Int, args = {Int}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_Type_AssignVersionTag", ret = Int, args = {PyTypeObject}, call = NotImplemented)
+ @CApiBuiltin(name = "PyUnstable_WritePerfMapEntry", ret = Int, args = {CONST_VOID_PTR, UNSIGNED_INT, ConstCharPtr}, call = NotImplemented)
@CApiBuiltin(name = "PyVectorcall_NARGS", ret = Py_ssize_t, args = {SIZE_T}, call = CImpl)
@CApiBuiltin(name = "Py_NewInterpreterFromConfig", ret = PYSTATUS, args = {PyThreadStatePtr, ConstPyInterpreterConfig}, call = NotImplemented)
- @CApiBuiltin(name = "_PyLong_FromDigits", ret = PyLongObject, args = {PrimitiveResult32, Py_ssize_t, DIGIT_PTR}, call = NotImplemented)
- @CApiBuiltin(name = "_Py_NewReferenceNoTotal", ret = Void, args = {PyObjectRawPointer}, call = CImpl)
+ @CApiBuiltin(name = "_PyLong_FromDigits", ret = PyLongObject, args = {Int, Py_ssize_t, DIGIT_PTR}, call = NotImplemented)
+ @CApiBuiltin(name = "_Py_NewReferenceNoTotal", ret = Void, args = {PyObject}, call = CImpl)
// ABI3T-only functions that are not supported yet. Use Ignored to validate their signatures
// without generating C stubs against the 3.13 headers, which lack ABI3T declarations.
@@ -1074,46 +1061,46 @@ public final class CApiFunction {
@CApiBuiltin(name = "PyInterpreterView_Close", ret = Void, args = {PY_INTERPRETER_VIEW_PTR}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyInterpreterView_FromCurrent", ret = PY_INTERPRETER_VIEW_PTR, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyInterpreterView_FromMain", ret = PY_INTERPRETER_VIEW_PTR, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyIter_NextItem", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectPtr}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLongWriter_Create", ret = PY_LONG_WRITER_PTR, args = {PrimitiveResult32, Py_ssize_t, VOID_PTR_LIST}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyIter_NextItem", ret = Int, args = {PyObject, PyObjectPtr}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLongWriter_Create", ret = PY_LONG_WRITER_PTR, args = {Int, Py_ssize_t, VOID_PTR_LIST}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyLongWriter_Discard", ret = Void, args = {PY_LONG_WRITER_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLongWriter_Finish", ret = PyObjectReturn, args = {PY_LONG_WRITER_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_AsInt32", ret = PrimitiveResult32, args = {PyObjectReturn, INT32_T_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_AsInt64", ret = PrimitiveResult32, args = {PyObjectReturn, INT64_T_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_AsUInt32", ret = PrimitiveResult32, args = {PyObjectReturn, UINT32_T_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_AsUInt64", ret = PrimitiveResult32, args = {PyObjectReturn, UINT64_T_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_Export", ret = PrimitiveResult32, args = {PyObjectReturn, PY_LONG_EXPORT_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLongWriter_Finish", ret = PyObject, args = {PY_LONG_WRITER_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_AsInt32", ret = Int, args = {PyObject, INT32_T_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_AsInt64", ret = Int, args = {PyObject, INT64_T_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_AsUInt32", ret = Int, args = {PyObject, UINT32_T_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_AsUInt64", ret = Int, args = {PyObject, UINT64_T_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_Export", ret = Int, args = {PyObject, PY_LONG_EXPORT_PTR}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyLong_FreeExport", ret = Void, args = {PY_LONG_EXPORT_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_FromInt32", ret = PyObjectReturn, args = {INT32_T}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_FromInt64", ret = PyObjectReturn, args = {INT64_T}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_FromUInt32", ret = PyObjectReturn, args = {UINT32_T}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyLong_FromUInt64", ret = PyObjectReturn, args = {UINT64_T}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_FromInt32", ret = PyObject, args = {INT32_T}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_FromInt64", ret = PyObject, args = {INT64_T}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_FromUInt32", ret = PyObject, args = {UINT32_T}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyLong_FromUInt64", ret = PyObject, args = {UINT64_T}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyLong_GetNativeLayout", ret = CONST_PY_LONG_LAYOUT_PTR, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyObject_GetTypeData_DuringGC", ret = Pointer, args = {PyObjectReturn, PyTypeObjectRawPointer}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PySys_GetAttr", ret = PyObjectReturn, args = {PyObjectReturn}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PySys_GetAttrString", ret = PyObjectReturn, args = {ConstCharPtr}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PySys_GetOptionalAttr", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectPtr}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PySys_GetOptionalAttrString", ret = PrimitiveResult32, args = {ConstCharPtr, PyObjectPtr}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyObject_GetTypeData_DuringGC", ret = Pointer, args = {PyObject, PyTypeObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PySys_GetAttr", ret = PyObject, args = {PyObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PySys_GetAttrString", ret = PyObject, args = {ConstCharPtr}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PySys_GetOptionalAttr", ret = Int, args = {PyObject, PyObjectPtr}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PySys_GetOptionalAttrString", ret = Int, args = {ConstCharPtr, PyObjectPtr}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyThreadState_Ensure", ret = PY_THREAD_STATE_TOKEN_PTR, args = {PY_INTERPRETER_GUARD_PTR}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyThreadState_EnsureFromView", ret = PY_THREAD_STATE_TOKEN_PTR, args = {PY_INTERPRETER_VIEW_PTR}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "PyThreadState_Release", ret = Void, args = {PY_THREAD_STATE_TOKEN_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_Freeze", ret = PrimitiveResult32, args = {PyTypeObjectRawPointer}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_FromSlots", ret = PyObjectReturn, args = {PY_SLOT_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_GetBaseByToken", ret = PrimitiveResult32, args = {PyTypeObjectRawPointer, Pointer, PY_TYPE_OBJECT_PTR_LIST}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_GetBaseByToken_DuringGC", ret = PrimitiveResult32, args = {PyTypeObjectRawPointer, Pointer, PY_TYPE_OBJECT_PTR_LIST}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_GetModuleByToken", ret = PyObjectReturn, args = {PyTypeObjectRawPointer, CONST_VOID_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_GetModuleByToken_DuringGC", ret = PyObjectReturn, args = {PyTypeObjectRawPointer, CONST_VOID_PTR}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_GetModuleState_DuringGC", ret = Pointer, args = {PyTypeObjectRawPointer}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyType_GetModule_DuringGC", ret = PyObjectReturn, args = {PyTypeObjectRawPointer}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "PyUnicode_Equal", ret = PrimitiveResult32, args = {PyObjectReturn, PyObjectReturn}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "Py_IS_TYPE", ret = PrimitiveResult32, args = {PyObjectReturn, PyTypeObjectRawPointer}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "Py_PACK_FULL_VERSION", ret = UINT32_T, args = {PrimitiveResult32, PrimitiveResult32, PrimitiveResult32, PrimitiveResult32,
- PrimitiveResult32}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "Py_PACK_VERSION", ret = UINT32_T, args = {PrimitiveResult32, PrimitiveResult32}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "Py_REFCNT", ret = Py_ssize_t, args = {PyObjectReturn}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_Freeze", ret = Int, args = {PyTypeObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_FromSlots", ret = PyObject, args = {PY_SLOT_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_GetBaseByToken", ret = Int, args = {PyTypeObject, Pointer, PY_TYPE_OBJECT_PTR_LIST}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_GetBaseByToken_DuringGC", ret = Int, args = {PyTypeObject, Pointer, PY_TYPE_OBJECT_PTR_LIST}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_GetModuleByToken", ret = PyObject, args = {PyTypeObject, CONST_VOID_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_GetModuleByToken_DuringGC", ret = PyObject, args = {PyTypeObject, CONST_VOID_PTR}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_GetModuleState_DuringGC", ret = Pointer, args = {PyTypeObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyType_GetModule_DuringGC", ret = PyObject, args = {PyTypeObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "PyUnicode_Equal", ret = Int, args = {PyObject, PyObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "Py_IS_TYPE", ret = Int, args = {PyObject, PyTypeObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "Py_PACK_FULL_VERSION", ret = UINT32_T, args = {Int, Int, Int, Int,
+ Int}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "Py_PACK_VERSION", ret = UINT32_T, args = {Int, Int}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "Py_REFCNT", ret = Py_ssize_t, args = {PyObject}, call = Ignored, abi = ABI.ABI3T)
@CApiBuiltin(name = "Py_SET_SIZE", ret = Void, args = {PyVarObject, Py_ssize_t}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "Py_SIZE", ret = Py_ssize_t, args = {PyObjectReturn}, call = Ignored, abi = ABI.ABI3T)
- @CApiBuiltin(name = "Py_TYPE", ret = PyTypeObjectRawPointer, args = {PyObjectReturn}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "Py_SIZE", ret = Py_ssize_t, args = {PyObject}, call = Ignored, abi = ABI.ABI3T)
+ @CApiBuiltin(name = "Py_TYPE", ret = PyTypeObject, args = {PyObject}, call = Ignored, abi = ABI.ABI3T)
// Windows only functions
@CApiBuiltin(name = "PyUnicode_DecodeMBCS", ret = PyObject, args = {ConstCharPtr, Py_ssize_t, ConstCharPtr}, call = NotImplemented)
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionNodes.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionNodes.java
index f3f18b0b54..fd1c1d3dad 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionNodes.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionNodes.java
@@ -40,6 +40,7 @@
*/
package com.oracle.graal.python.builtins.objects.cext.capi;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
import static com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.PExternalFunctionWrapper.BINARYFUNC;
import static com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.PExternalFunctionWrapper.BINARYFUNC_L;
import static com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.PExternalFunctionWrapper.BINARYFUNC_R;
@@ -78,7 +79,6 @@
import static com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.PExternalFunctionWrapper.UNARYFUNC;
import static com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol.FUN_PY_DEALLOC;
import static com.oracle.graal.python.builtins.objects.cext.capi.NativeCAPISymbol.FUN_PY_TYPE_GENERIC_ALLOC;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectReturn;
import static com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess.readLongField;
import static com.oracle.graal.python.nodes.StringLiterals.T_EMPTY_STRING;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.NULLPTR;
@@ -96,6 +96,7 @@
import java.util.logging.Level;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.PythonBuiltinClassType;
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.lib.PyLongAsIntNodeGen;
@@ -111,7 +112,6 @@
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodesFactory.PyObjectCheckFunctionResultNodeGen;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodesFactory.ReleaseNativeArgsTupleNodeGen;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodesFactory.ToPythonStringNodeGen;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions;
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.HandlePointerConverter;
@@ -244,6 +244,11 @@ private static boolean canBorrowDirectly(Object object) {
!(object instanceof Number || object instanceof TruffleString);
}
+ @NeverDefault
+ public static ToNativeBorrowedNode create() {
+ return new ToNativeBorrowedNode();
+ }
+
@TruffleBoundary(allowInlining = true)
public static long executeUncached(Object object) {
Object promoted = EnsurePythonObjectNode.executeUncached(PythonContext.get(null), object, false);
@@ -586,7 +591,7 @@ public abstract static class MethodDescriptorRoot extends WrapperBaseRoot {
MethodDescriptorRoot(PythonLanguage language, TruffleString name, boolean isStatic, MethodDescriptorWrapper wrapper) {
super(language, name, isStatic);
- assert wrapper.returnValue == PyObjectReturn;
+ assert wrapper.returnValue == PyObject;
this.timing = CApiTiming.create(true, name);
}
@@ -649,7 +654,7 @@ public abstract static class ObjectWrapperDescriptorRoot extends WrapperDescript
ObjectWrapperDescriptorRoot(PythonLanguage language, TruffleString name, PExternalFunctionWrapper wrapper) {
super(language, name, wrapper);
- assert wrapper.signature.returnValue == PyObjectReturn;
+ assert wrapper.signature.returnValue == PyObject;
}
final NativeToPythonReturnNode ensureNativeToPythonReturnNode() {
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionSignature.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionSignature.java
index 25fa86bf80..1e033dd326 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionSignature.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/ExternalFunctionSignature.java
@@ -41,35 +41,33 @@
package com.oracle.graal.python.builtins.objects.cext.capi;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstPyLongObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Double;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT64_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT8_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INTPTR_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PrimitiveResult64;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_BUFFER_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_CAPSULE_DESTRUCTOR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectReturn;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectTransfer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadState;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyThreadStatePtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.SIZE_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINTPTR_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.VA_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Void;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.visitproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstPyLongObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Double;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT64_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT8_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INTPTR_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Long;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_BUFFER_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_CAPSULE_DESTRUCTOR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadState;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyThreadStatePtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.SIZE_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINTPTR_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.VA_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Void;
+import static com.oracle.graal.python.annotations.ArgDescriptor.visitproc;
import static com.oracle.graal.python.util.PythonUtils.toTruffleStringUncached;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.annotations.CApiExternalFunctionSignatures;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.common.NativeCExtSymbol;
import com.oracle.truffle.api.strings.TruffleString;
@@ -80,33 +78,33 @@
@CApiExternalFunctionSignatures
public enum ExternalFunctionSignature implements NativeCExtSymbol {
// typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
- PYCFUNCTION(false, PyObjectReturn, PyObject, PyObject),
+ PYCFUNCTION(false, PyObject, PyObject, PyObject),
// typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *, PyObject *);
- PYCFUNCTION_WITH_KEYWORDS(false, PyObjectReturn, PyObject, PyObject, PyObject),
+ PYCFUNCTION_WITH_KEYWORDS(false, PyObject, PyObject, PyObject, PyObject),
// typedef PyObject *(*_PyCFunctionFast) (PyObject *, PyObject *const *, Py_ssize_t);
- PYCFUNCTION_FAST(false, PyObjectReturn, PyObject, Pointer, Py_ssize_t),
+ PYCFUNCTION_FAST(false, PyObject, PyObject, Pointer, Py_ssize_t),
// typedef PyObject *(*_PyCFunctionFastWithKeywords) (PyObject *, PyObject *const *, Py_ssize_t,
// PyObject *);
- PYCFUNCTION_FAST_WITH_KEYWORDS(false, PyObjectReturn, PyObject, Pointer, Py_ssize_t, PyObject),
+ PYCFUNCTION_FAST_WITH_KEYWORDS(false, PyObject, PyObject, Pointer, Py_ssize_t, PyObject),
// typedef PyObject *(*PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t,
// PyObject *);
- PYCMETHOD(false, PyObjectReturn, PyObject, PyTypeObject, Pointer, Py_ssize_t, PyObject),
+ PYCMETHOD(false, PyObject, PyObject, PyTypeObject, Pointer, Py_ssize_t, PyObject),
// typedef PyObject * (*unaryfunc)(PyObject *);
- UNARYFUNC(false, PyObjectReturn, PyObject),
+ UNARYFUNC(false, PyObject, PyObject),
// typedef PyObject * (*binaryfunc)(PyObject *, PyObject *);
- BINARYFUNC(false, PyObjectReturn, PyObject, PyObject),
+ BINARYFUNC(false, PyObject, PyObject, PyObject),
// typedef PyObject * (*ternaryfunc)(PyObject *, PyObject *, PyObject *);
- TERNARYFUNC(false, PyObjectReturn, PyObject, PyObject, PyObject),
+ TERNARYFUNC(false, PyObject, PyObject, PyObject, PyObject),
// typedef int (*inquiry)(PyObject *);
INQUIRY(false, Int, PyObject),
// typedef Py_ssize_t (*lenfunc)(PyObject *);
- LENFUNC(false, PrimitiveResult64, PyObject),
+ LENFUNC(false, Long, PyObject),
// typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
- SSIZEARGFUNC(false, PyObjectReturn, PyObject, Py_ssize_t),
+ SSIZEARGFUNC(false, PyObject, PyObject, Py_ssize_t),
// typedef PyObject *(*ssizessizeargfunc)(PyObject *, Py_ssize_t, Py_ssize_t);
- SSIZESSIZEARGFUNC(false, PyObjectReturn, PyObject, Py_ssize_t, Py_ssize_t),
+ SSIZESSIZEARGFUNC(false, PyObject, PyObject, Py_ssize_t, Py_ssize_t),
// typedef int(*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
SSIZEOBJARGPROC(false, Int, PyObject, Py_ssize_t, PyObject),
// typedef int(*ssizessizeobjargproc)(PyObject *, Py_ssize_t, Py_ssize_t, PyObject *);
@@ -121,9 +119,9 @@ public enum ExternalFunctionSignature implements NativeCExtSymbol {
// typedef int (*traverseproc)(PyObject *, visitproc, void *);
TRAVERSEPROC(false, Int, PyObject, Pointer, Pointer),
// PyObject *PyType_GenericAlloc(PyTypeObject *, Py_ssize_t);
- TYPE_GENERIC_ALLOC(false, PyObjectReturn, PyTypeObject, Py_ssize_t),
+ TYPE_GENERIC_ALLOC(false, PyObject, PyTypeObject, Py_ssize_t),
// PyObject *PyType_GenericNew(PyTypeObject *, PyObject *, PyObject *);
- PY_TYPE_GENERIC_NEW(false, PyObjectReturn, PyTypeObject, PyObject, PyObject),
+ PY_TYPE_GENERIC_NEW(false, PyObject, PyTypeObject, PyObject, PyObject),
// uintptr_t PyType_GenericNew(PyTypeObject *, uintptr_t, uintptr_t);
PY_TYPE_GENERIC_NEW_RAW(true, UINTPTR_T, PyTypeObject, UINTPTR_T, UINTPTR_T),
@@ -134,38 +132,38 @@ public enum ExternalFunctionSignature implements NativeCExtSymbol {
// void _Py_Dealloc(PyObject *);
PY_DEALLOC(false, Void, PyObject),
// typedef PyObject *(*getattrfunc)(PyObject *, char *);
- GETATTRFUNC(false, PyObjectReturn, PyObject, CharPtrAsTruffleString),
+ GETATTRFUNC(false, PyObject, PyObject, CHAR_PTR),
// typedef PyObject *(*getattrofunc)(PyObject *, PyObject *);
- GETATTROFUNC(false, PyObjectReturn, PyObject, PyObject),
+ GETATTROFUNC(false, PyObject, PyObject, PyObject),
// typedef int (*setattrfunc)(PyObject *, char *, PyObject *);
- SETATTRFUNC(false, Int, PyObject, CharPtrAsTruffleString, PyObject),
+ SETATTRFUNC(false, Int, PyObject, CHAR_PTR, PyObject),
// typedef int (*setattrofunc)(PyObject *, PyObject *, PyObject *);
SETATTROFUNC(false, Int, PyObject, PyObject, PyObject),
// typedef PyObject *(*reprfunc)(PyObject *);
- REPRFUNC(false, PyObjectReturn, PyObject),
+ REPRFUNC(false, PyObject, PyObject),
// typedef Py_hash_t (*hashfunc)(PyObject *);
HASHFUNC(false, Py_ssize_t, PyObject),
// typedef PyObject *(*richcmpfunc) (PyObject *, PyObject *, int);
- RICHCMPFUNC(false, PyObjectReturn, PyObject, PyObject, Int),
+ RICHCMPFUNC(false, PyObject, PyObject, PyObject, Int),
// typedef PyObject *(*getiterfunc) (PyObject *);
- GETITERFUNC(false, PyObjectReturn, PyObject),
+ GETITERFUNC(false, PyObject, PyObject),
// typedef PyObject *(*iternextfunc) (PyObject *);
- ITERNEXTFUNC(false, PyObjectReturn, PyObject),
+ ITERNEXTFUNC(false, PyObject, PyObject),
// typedef PyObject *(*descrgetfunc) (PyObject *, PyObject *, PyObject *);
- DESCRGETFUNC(false, PyObjectReturn, PyObject, PyObject, PyObject),
+ DESCRGETFUNC(false, PyObject, PyObject, PyObject, PyObject),
// typedef int (*descrsetfunc) (PyObject *, PyObject *, PyObject *);
DESCRSETFUNC(false, Int, PyObject, PyObject, PyObject),
// typedef int (*initproc)(PyObject *, PyObject *, PyObject *);
INITPROC(false, Int, PyObject, PyObject, PyObject),
// typedef PyObject *(*newfunc)(PyTypeObject *, PyObject *, PyObject *);
- NEWFUNC(false, PyObjectReturn, PyTypeObject, PyObject, PyObject),
+ NEWFUNC(false, PyObject, PyTypeObject, PyObject, PyObject),
// typedef PyObject *(*getter)(PyObject *, void *);
- GETTER(false, PyObjectReturn, PyObject, Pointer),
+ GETTER(false, PyObject, PyObject, Pointer),
// typedef int (*setter)(PyObject *, PyObject *, void *);
SETTER(false, Int, PyObject, PyObject, Pointer),
// typedef PyObject *(*Py_mod_create)(PyObject *, PyModuleDef *);
- MODCREATE(false, PyObjectReturn, Pointer, Pointer),
+ MODCREATE(false, PyObject, Pointer, Pointer),
// typedef int (*Py_mod_exec)(PyObject *);
MODEXEC(false, Int, Pointer),
// typedef PyObject *(*PyModInitFunction)(void);
@@ -184,7 +182,7 @@ public enum ExternalFunctionSignature implements NativeCExtSymbol {
// void GraalPyPrivate_CheckTypeReady(PyTypeObject *);
TRUFFLE_CHECK_TYPE_READY(true, Void, PyTypeObject),
// Py_ssize_t PyUnicode_GetLength(PyObject *);
- PY_UNICODE_GET_LENGTH(false, PrimitiveResult64, PyObject),
+ PY_UNICODE_GET_LENGTH(false, Long, PyObject),
// void GraalPyPrivate_InitNativeDateTime(void);
INIT_NATIVE_DATETIME(true, Void),
// uintptr_t GraalPyPrivate_Long_lv_tag(const PyLongObject *);
@@ -198,7 +196,7 @@ public enum ExternalFunctionSignature implements NativeCExtSymbol {
// int PyObject_GenericSetDict(PyObject *, PyObject *, void *);
PY_OBJECT_GENERIC_SET_DICT(false, Int, PyObject, PyObject, Pointer),
// PyObject *GraalPyPrivate_ObjectNew(PyTypeObject *);
- PY_OBJECT_NEW(false, PyObjectReturn, PyTypeObject),
+ PY_OBJECT_NEW(false, PyObject, PyTypeObject),
// void PyObject_Free(void *);
PY_OBJECT_FREE(true, Void, Pointer),
// void GraalPyPrivate_ObjectArrayRelease(PyObject **, int);
@@ -218,37 +216,37 @@ public enum ExternalFunctionSignature implements NativeCExtSymbol {
// void GraalPyPrivate_MMap_InitBufferProtocol(PyObject *);
MMAP_INIT_BUFFERPROTOCOL(true, Void, PyObject),
// PyObject *GraalPyPrivate_Exception_SubtypeNew(PyTypeObject *, PyObject *);
- EXCEPTION_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, PyObject),
+ EXCEPTION_SUBTYPE_NEW(false, PyObject, PyTypeObject, PyObject),
// PyObject *GraalPyPrivate_Bytes_SubtypeNew(PyTypeObject *, int8_t *, Py_ssize_t);
- BYTES_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, INT8_T_PTR, Py_ssize_t),
+ BYTES_SUBTYPE_NEW(false, PyObject, PyTypeObject, INT8_T_PTR, Py_ssize_t),
// PyObject *GraalPyPrivate_Float_SubtypeNew(PyTypeObject *, double);
- FLOAT_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, Double),
+ FLOAT_SUBTYPE_NEW(false, PyObject, PyTypeObject, Double),
// PyObject *GraalPyPrivate_Complex_SubtypeFromDoubles(PyTypeObject *, double, double);
- COMPLEX_SUBTYPE_FROM_DOUBLES(false, PyObjectReturn, PyTypeObject, Double, Double),
+ COMPLEX_SUBTYPE_FROM_DOUBLES(false, PyObject, PyTypeObject, Double, Double),
// PyObject *GraalPyPrivate_Tuple_SubtypeNew(PyTypeObject *, PyObject *);
- TUPLE_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, PyObject),
+ TUPLE_SUBTYPE_NEW(false, PyObject, PyTypeObject, PyObject),
// PyObject *GraalPyPrivate_Unicode_SubtypeNew(PyTypeObject *, PyObject *);
- UNICODE_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, PyObject),
+ UNICODE_SUBTYPE_NEW(false, PyObject, PyTypeObject, PyObject),
// int GraalPyPrivate_CheckBasicsizeForGetstate(PyTypeObject *, int);
CHECK_BASICSIZE_FOR_GETSTATE(true, Int, PyTypeObject, Int),
// PyObject *GraalPyPrivate_Date_SubtypeNew(PyTypeObject *, int, int, int);
- DATE_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, Int, Int, Int),
+ DATE_SUBTYPE_NEW(false, PyObject, PyTypeObject, Int, Int, Int),
// PyObject *GraalPyPrivate_Time_SubtypeNew(PyTypeObject *, int, int, int, int, PyObject *,
// int);
- TIME_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, Int, Int, Int, Int, PyObject, Int),
+ TIME_SUBTYPE_NEW(false, PyObject, PyTypeObject, Int, Int, Int, Int, PyObject, Int),
// PyObject *GraalPyPrivate_TimeDelta_SubtypeNew(PyTypeObject *, int, int, int);
- TIMEDELTA_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, Int, Int, Int),
+ TIMEDELTA_SUBTYPE_NEW(false, PyObject, PyTypeObject, Int, Int, Int),
// PyObject *GraalPyPrivate_DateTime_SubtypeNew(PyTypeObject *, int, int, int, int, int, int,
// int, PyObject *, int);
- DATETIME_SUBTYPE_NEW(false, PyObjectReturn, PyTypeObject, Int, Int, Int, Int, Int, Int, Int, PyObject, Int),
+ DATETIME_SUBTYPE_NEW(false, PyObject, PyTypeObject, Int, Int, Int, Int, Int, Int, Int, PyObject, Int),
// PyObject *GraalPyPrivate_MemoryViewFromObject(PyObject *, int);
- GRAALPY_MEMORYVIEW_FROM_OBJECT(false, PyObjectReturn, PyObject, Int),
+ GRAALPY_MEMORYVIEW_FROM_OBJECT(false, PyObject, PyObject, Int),
// Py_hash_t PyObject_HashNotImplemented(PyObject *);
PYOBJECT_HASH_NOT_IMPLEMENTED(false, Py_ssize_t, PyObject),
// void _PyGC_CollectNoFail(PyThreadState *);
PY_GC_COLLECT_NO_FAIL(true, Void, PyThreadState),
// PyObject *_PyObject_NextNotImplemented(PyObject *);
- PY_OBJECT_NEXT_NOT_IMPLEMENTED(false, PyObjectTransfer, PyObject),
+ PY_OBJECT_NEXT_NOT_IMPLEMENTED(false, PyObject, PyObject),
// int GraalPyPrivate_SubtypeTraverse(PyObject *, void *, void *);
SUBTYPE_TRAVERSE(true, Int, PyObject, visitproc, Pointer),
@@ -256,7 +254,7 @@ public enum ExternalFunctionSignature implements NativeCExtSymbol {
GCCOLLECT(false, Py_ssize_t, Int),
GETDICTPTRFUN(true, Pointer, PyObject),
// typedef PyObject *(*vectorcallfunc)(PyObject *, PyObject *const *, size_t, PyObject *);
- VECTORCALL(false, PyObjectReturn, PyObject, Pointer, Py_ssize_t, PyObject);
+ VECTORCALL(false, PyObject, PyObject, Pointer, Py_ssize_t, PyObject);
public final ArgDescriptor returnValue;
public final ArgDescriptor[] arguments;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/MethodDescriptorWrapper.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/MethodDescriptorWrapper.java
index 0a12551eec..c17079c510 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/MethodDescriptorWrapper.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/MethodDescriptorWrapper.java
@@ -40,13 +40,13 @@
*/
package com.oracle.graal.python.builtins.objects.cext.capi;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectConstArray;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectReturn;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectConstArray;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
import com.oracle.graal.python.PythonLanguage;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.PNone;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.MethFastcallRoot;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.MethFastcallWithKeywordsRoot;
@@ -55,7 +55,6 @@
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.MethNoargsRoot;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.MethORoot;
import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.MethVarargsRoot;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.common.CExtCommonNodes;
import com.oracle.graal.python.builtins.objects.cext.common.NativeCExtSymbol;
import com.oracle.graal.python.builtins.objects.function.PBuiltinFunction;
@@ -71,25 +70,25 @@
public enum MethodDescriptorWrapper implements NativeCExtSymbol {
// METH_FASTCALL
- FASTCALL(PyObjectReturn, PyObject, PyObjectConstArray, Py_ssize_t),
+ FASTCALL(PyObject, PyObject, PyObjectConstArray, Py_ssize_t),
// METH_FASTCALL | METH_KEYWORDS
- FASTCALL_WITH_KEYWORDS(PyObjectReturn, PyObject, PyObjectConstArray, Py_ssize_t, PyObject),
+ FASTCALL_WITH_KEYWORDS(PyObject, PyObject, PyObjectConstArray, Py_ssize_t, PyObject),
// METH_VARARGS | METH_KEYWORDS
- KEYWORDS(PyObjectReturn, PyObject, PyObject, PyObject),
+ KEYWORDS(PyObject, PyObject, PyObject, PyObject),
// METH_VARARGS
- VARARGS(PyObjectReturn, PyObject, PyObject),
+ VARARGS(PyObject, PyObject, PyObject),
// METH_NOARGS
- NOARGS(PyObjectReturn, PyObject, PyObject),
+ NOARGS(PyObject, PyObject, PyObject),
// METH_O
- O(PyObjectReturn, PyObject, PyObject),
+ O(PyObject, PyObject, PyObject),
// METH_FASTCALL | METH_KEYWORDS | METH_METHOD:
- METHOD(PyObjectReturn, PyObject, PyTypeObject, PyObjectConstArray, Py_ssize_t, PyObject);
+ METHOD(PyObject, PyObject, PyTypeObject, PyObjectConstArray, Py_ssize_t, PyObject);
public final ArgDescriptor returnValue;
public final ArgDescriptor[] arguments;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/NativeCAPISymbol.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/NativeCAPISymbol.java
index 673218f930..12b9f313a8 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/NativeCAPISymbol.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/NativeCAPISymbol.java
@@ -44,7 +44,7 @@
import java.util.Objects;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.builtins.objects.cext.common.NativeCExtSymbol;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
import com.oracle.truffle.api.strings.TruffleString;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/transitions/ArgDescriptor.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/transitions/ArgDescriptor.java
deleted file mode 100644
index ff8f5cb5ab..0000000000
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/capi/transitions/ArgDescriptor.java
+++ /dev/null
@@ -1,505 +0,0 @@
-/*
- * Copyright (c) 2022, 2026, Oracle and/or its affiliates. All rights reserved.
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * The Universal Permissive License (UPL), Version 1.0
- *
- * Subject to the condition set forth below, permission is hereby granted to any
- * person obtaining a copy of this software, associated documentation and/or
- * data (collectively the "Software"), free of charge and under any and all
- * copyright rights in the Software, and any and all patent rights owned or
- * freely licensable by each licensor hereunder covering either (i) the
- * unmodified Software as contributed to or provided by such licensor, or (ii)
- * the Larger Works (as defined below), to deal in both
- *
- * (a) the Software, and
- *
- * (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
- * one is included with the Software each a "Larger Work" to which the Software
- * is contributed by such licensors),
- *
- * without restriction, including without limitation the rights to copy, create
- * derivative works of, display, perform, and distribute the Software and make,
- * use, sell, offer for sale, import, export, have made, and have sold the
- * Software and the Larger Work(s), and to sublicense the foregoing rights on
- * either these or other terms.
- *
- * This license is subject to the following condition:
- *
- * The above copyright notice and either this complete permission notice or at a
- * minimum a reference to the UPL must be included in all copies or substantial
- * portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-package com.oracle.graal.python.builtins.objects.cext.capi.transitions;
-
-import com.oracle.graal.python.annotations.NativeSimpleType;
-import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToNativeBorrowedNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.ExternalFunctionNodes.ToPythonStringNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.CharPtrToPythonStrictNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonClassNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonReturnNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.NativeToPythonTransferNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNewRefNode;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTransitions.PythonToNativeNode;
-import com.oracle.graal.python.builtins.objects.cext.common.CExtToJavaNode;
-import com.oracle.graal.python.builtins.objects.cext.common.CExtToNativeNode;
-import com.oracle.graal.python.util.Supplier;
-
-enum ArgBehavior {
- PyObject(
- NativeSimpleType.POINTER,
- PythonToNativeNode::create,
- NativeToPythonNode::create,
- NativeToPythonNode.getUncached(),
- PythonToNativeNewRefNode::create,
- NativeToPythonTransferNode::create,
- NativeToPythonTransferNode.getUncached()),
- PyObjectBorrowed(NativeSimpleType.POINTER, ToNativeBorrowedNode::new, NativeToPythonNode::create, NativeToPythonNode.getUncached(), null, null, null),
- PyObjectAsTruffleString(NativeSimpleType.POINTER, null, ToPythonStringNode::create, ToPythonStringNode.getUncached(), null, null, null),
- PyTypeObject(
- NativeSimpleType.POINTER,
- PythonToNativeNode::create,
- NativeToPythonClassNode::create,
- NativeToPythonClassNode.getUncached(),
- PythonToNativeNewRefNode::create,
- NativeToPythonTransferNode::create,
- NativeToPythonTransferNode.getUncached()),
- Pointer(NativeSimpleType.POINTER),
- TruffleStringPointer(NativeSimpleType.POINTER, null, CharPtrToPythonNode::create, CharPtrToPythonNode.getUncached()),
- TruffleStringPointerStrict(NativeSimpleType.POINTER, null, CharPtrToPythonStrictNode::create, CharPtrToPythonStrictNode.getUncached()),
- Char8(NativeSimpleType.SINT8),
- UChar8(NativeSimpleType.SINT8),
- Char16(NativeSimpleType.SINT16),
- UInt16(NativeSimpleType.SINT16),
- Int32(NativeSimpleType.SINT32),
- UInt32(NativeSimpleType.SINT32),
- Int64(NativeSimpleType.SINT64),
- UInt64(NativeSimpleType.SINT64),
- Long(NativeSimpleType.SINT64),
- Float32(NativeSimpleType.FLOAT),
- Float64(NativeSimpleType.DOUBLE),
- Void(NativeSimpleType.VOID),
- Unknown(NativeSimpleType.SINT64);
-
- public final NativeSimpleType nativeSimpleType;
- public final Supplier pythonToNative;
- public final Supplier nativeToPython;
- public final CExtToJavaNode uncachedNativeToPython;
- public final Supplier pythonToNativeTransfer;
- public final Supplier nativeToPythonTransfer;
- public final CExtToJavaNode uncachedNativeToPythonTransfer;
-
- ArgBehavior(NativeSimpleType nativeSimpleType, Supplier pythonToNative, Supplier nativeToPython, CExtToJavaNode uncachedNativeToPython,
- Supplier pythonToNativeTransfer, Supplier nativeToPythonTransfer, CExtToJavaNode uncachedNativeToPythonTransfer) {
- this.nativeSimpleType = nativeSimpleType;
- this.pythonToNative = pythonToNative;
- this.nativeToPython = nativeToPython;
- this.uncachedNativeToPython = uncachedNativeToPython;
- this.pythonToNativeTransfer = pythonToNativeTransfer;
- this.nativeToPythonTransfer = nativeToPythonTransfer;
- this.uncachedNativeToPythonTransfer = uncachedNativeToPythonTransfer;
- }
-
- ArgBehavior(NativeSimpleType nativeSimpleType, Supplier pythonToNative, Supplier nativeToPython, CExtToJavaNode uncachedNativeToPython) {
- this(nativeSimpleType, pythonToNative, nativeToPython, uncachedNativeToPython, null, null, null);
- }
-
- ArgBehavior(NativeSimpleType nativeSimpleType) {
- this(nativeSimpleType, null, null, null, null, null, null);
- }
-
-}
-
-public enum ArgDescriptor {
- Void(ArgBehavior.Void, "void"),
- VoidNoReturn(ArgBehavior.Void, "void"),
- PyObject(ArgBehavior.PyObject, "PyObject*"),
- PyObjectBorrowed(ArgBehavior.PyObjectBorrowed, "PyObject*"),
- PyObjectAsTruffleString(ArgBehavior.PyObjectAsTruffleString, "PyObject*"),
- PyTypeObject(ArgBehavior.PyTypeObject, "PyTypeObject*"),
- PyTypeObjectBorrowed(ArgBehavior.PyObjectBorrowed, "PyTypeObject*"),
- PyTypeObjectTransfer(ArgBehavior.PyObject, "PyTypeObject*", true, false),
- PyTypeObjectRawPointer(ArgBehavior.Pointer, "PyTypeObject*"),
- PyListObject(ArgBehavior.PyObject, "PyListObject*"),
- PyTupleObject(ArgBehavior.PyObject, "PyTupleObject*"),
- PyMethodObject(ArgBehavior.PyObject, "PyMethodObject*"),
- PyInstanceMethodObject(ArgBehavior.PyObject, "PyInstanceMethodObject*"),
- PyObjectTransfer(ArgBehavior.PyObject, "PyObject*", true, false),
- PyObjectReturn(ArgBehavior.PyObject, "PyObject*", true, true),
- PyObjectRawPointer(ArgBehavior.Pointer, "PyObject*"),
- Pointer(ArgBehavior.Pointer, "void*"),
- Py_ssize_t(ArgBehavior.Int64, "Py_ssize_t"),
- Py_hash_t(ArgBehavior.Int64, "Py_hash_t"),
- Int(ArgBehavior.Int32, "int"),
- ConstInt(ArgBehavior.Int32, "const int"),
- Double(ArgBehavior.Float64, "double"),
- Float(ArgBehavior.Float32, "float"),
- Long(ArgBehavior.Long, "long"),
- PyObjectConstArray(ArgBehavior.Pointer, "PyObject *const *"),
-
- _FRAME(ArgBehavior.PyObject, "struct _frame*"),
- _MOD_PTR("struct _mod*"),
- _NODE_PTR("struct _node*"),
- _PY_CLOCK_INFO_T_PTR("_Py_clock_info_t*"),
- _PY_ERROR_HANDLER(ArgBehavior.Int32, "_Py_error_handler"),
- _PY_IDENTIFIER_PTR("struct _Py_Identifier*"),
- _PYARG_PARSER_PTR("struct _PyArg_Parser*"),
- _PYBYTESWRITER_PTR("_PyBytesWriter*"),
- _PYCROSSINTERPRETERDATA_PTR("_PyCrossInterpreterData*"),
- _PYERR_STACKITEM_PTR("_PyErr_StackItem*"),
- _PYTIME_ROUND_T("_PyTime_round_t"),
- _PYTIME_T("PyTime_t"),
- _PYTIME_T_PTR("PyTime_t*"),
- _PYUNICODEWRITER_PTR("_PyUnicodeWriter*"),
- CHAR(ArgBehavior.Char8, "char"),
- UCHAR(ArgBehavior.UChar8, "unsigned char"),
- CHAR_CONST("char*const"),
- CHAR_CONST_PTR("char*const*"),
- CHAR_CONST_ARRAY("char*const []"),
- CHAR_PTR(ArgBehavior.Pointer, "char*"),
- CHAR_PTR_LIST(ArgBehavior.Pointer, "char**"),
- ConstCharPtrAsTruffleString(ArgBehavior.TruffleStringPointer, "const char*"),
- ConstCharPtrAsTruffleStringStrict(ArgBehavior.TruffleStringPointerStrict, "const char*"),
- ConstCharPtr(ArgBehavior.Pointer, "const char*"),
- CharPtrAsTruffleString(ArgBehavior.TruffleStringPointer, "char*"),
- CONST_CHAR_PTR_LIST("const char**"),
- CONST_PY_BUFFER("const Py_buffer*"),
- CONST_PY_SSIZE_T("const Py_ssize_t"),
- CONST_SIZE_T("const size_t"),
- CONST_PY_SSIZE_T_PTR("const Py_ssize_t*"),
- CONST_PY_UCS4("const Py_UCS4"),
- CONST_PY_UNICODE("const Py_UNICODE*"),
- CONST_PYCONFIG_PTR("const PyConfig*"),
- CONST_PYPRECONFIG_PTR("const PyPreConfig*"),
- CONST_UINT8_T_PTR(ArgBehavior.Pointer, "const uint8_t*"),
- CONST_UNSIGNED_CHAR_PTR(ArgBehavior.Pointer, "const unsigned char*"),
- CONST_VOID_PTR(ArgBehavior.Pointer, "const void*"),
- CONST_VOID_PTR_LIST("const void**"),
- CONST_WCHAR_PTR(ArgBehavior.Pointer, "const wchar_t*"),
- CROSSINTERPDATAFUNC("crossinterpdatafunc"),
- FILE_PTR("FILE*"),
- FREEFUNC("freefunc"),
- INITTAB("struct _inittab*"),
- UINT16_T(ArgBehavior.UInt16, "uint16_t"),
- INT32_T(ArgBehavior.Int32, "int32_t"),
- INT32_T_PTR(ArgBehavior.Pointer, "int32_t*"),
- INT_LIST("int*"),
- INT8_T_PTR(ArgBehavior.Pointer, "int8_t*"),
- INT64_T(ArgBehavior.Int64, "int64_t"),
- INTPTR_T_PTR(ArgBehavior.Pointer, "intptr_t*"),
- LONG_LONG(ArgBehavior.Int64, "long long"),
- LONG_PTR("long*"),
- DIGIT_PTR(ArgBehavior.Pointer, "digit*"),
- INT64_T_PTR(ArgBehavior.Pointer, "int64_t*"),
- PyASCIIObject(ArgBehavior.PyObject, "PyASCIIObject*"),
- PY_AUDITHOOKFUNCTION("Py_AuditHookFunction"),
- Py_buffer("Py_buffer"),
- PY_BUFFER_PTR(ArgBehavior.Pointer, "Py_buffer*"),
- CONST_PY_BUFFER_PTR(ArgBehavior.Pointer, "const Py_buffer*"),
- CONST_PY_SLOT_PTR(ArgBehavior.Pointer, "const PySlot*"),
- PY_C_FUNCTION(ArgBehavior.Pointer, "PyCFunction"),
- PyByteArrayObject(ArgBehavior.PyObject, "PyByteArrayObject*"),
- PyCFunctionObject(ArgBehavior.PyObject, "PyCFunctionObject*"),
- PyCMethodObject(ArgBehavior.PyObject, "PyCMethodObject*"),
- PY_CAPSULE_DESTRUCTOR(ArgBehavior.Pointer, "PyCapsule_Destructor"),
- PyCodeObject(ArgBehavior.PyObject, "PyCodeObject*"),
- PyCodeObjectTransfer(ArgBehavior.PyObject, "PyCodeObject*", true, false),
- PyCodeObjectRawPointer(ArgBehavior.Pointer, "PyCodeObject*"),
- PyCode_WatchCallback(ArgBehavior.Pointer, "PyCode_WatchCallback"),
- PY_COMPILER_FLAGS(ArgBehavior.Pointer, "PyCompilerFlags*"),
- PY_COMPLEX("Py_complex"),
- PY_CRITICAL_SECTION_PTR(ArgBehavior.Pointer, "PyCriticalSection*"),
- PY_CRITICAL_SECTION2_PTR(ArgBehavior.Pointer, "PyCriticalSection2*"),
- PyCodeAddressRange("PyCodeAddressRange*"),
- PyCompactUnicodeObject(ArgBehavior.PyObject, "PyCompactUnicodeObject*"),
- PyFunctionObject(ArgBehavior.PyObject, "PyFunctionObject*"),
- PyFrameConstructor("PyFrameConstructor*"),
- PyFrameObject(ArgBehavior.PyObject, "PyFrameObject*"),
- PyFrameObjectBorrowed(ArgBehavior.PyObjectBorrowed, "PyFrameObject*"),
- PyFrameObjectTransfer(ArgBehavior.PyObject, "PyFrameObject*", true, false),
- PyFrameObjectRawPointer(ArgBehavior.Pointer, "PyFrameObject*"),
- _PyFrameEvalFunction("_PyFrameEvalFunction"),
- _PyInterpreterFrame("struct _PyInterpreterFrame*"),
- PY_GEN_OBJECT(ArgBehavior.PyObject, "PyGenObject*"),
- PyGetSetDef(ArgBehavior.Pointer, "PyGetSetDef*"),
- PY_GIL_STATE_STATE(ArgBehavior.Int32, "PyGILState_STATE"),
- PY_ABI_INFO_PTR(ArgBehavior.Pointer, "PyABIInfo*"),
- PY_INTERPRETER_GUARD_PTR(ArgBehavior.Pointer, "PyInterpreterGuard*"),
- PY_INTERPRETER_VIEW_PTR(ArgBehavior.Pointer, "PyInterpreterView*"),
- PY_HASH_T_PTR(ArgBehavior.Pointer, "Py_hash_t*"),
- PY_IDENTIFIER("_Py_Identifier*"),
- PyInterpreterState(ArgBehavior.Pointer, "PyInterpreterState*"),
- ConstPyInterpreterConfig(ArgBehavior.Pointer, "const PyInterpreterConfig*"),
- PY_LOCK_STATUS("PyLockStatus"),
- PyLongObject(ArgBehavior.PyObject, "PyLongObject*"),
- ConstPyLongObject(ArgBehavior.PyObject, "const PyLongObject*"),
- PyLongObjectTransfer(ArgBehavior.PyObject, "PyLongObject*", true, false),
- PY_LONG_EXPORT_PTR(ArgBehavior.Pointer, "PyLongExport*"),
- PY_LONG_WRITER_PTR(ArgBehavior.Pointer, "PyLongWriter*"),
- CONST_PY_LONG_LAYOUT_PTR(ArgBehavior.Pointer, "const PyLongLayout*"),
- PyMemberDef(ArgBehavior.Pointer, "PyMemberDef*"),
- PyModuleObject(ArgBehavior.PyObject, "PyModuleObject*"),
- PyModuleObjectTransfer(ArgBehavior.PyObject, "PyModuleObject*", true, false),
- PyMethodDef(ArgBehavior.Pointer, "PyMethodDef*"),
- PY_MONITORING_STATE_PTR(ArgBehavior.Pointer, "PyMonitoringState*"),
- PyModuleDef(ArgBehavior.Pointer, "PyModuleDef*"), // it's unclear if this should be
- // PyObject
- PyModuleDefSlot(ArgBehavior.Pointer, "PyModuleDef_Slot*"),
- PyNumberMethods(ArgBehavior.Pointer, "PyNumberMethods*"),
- PySequenceMethods(ArgBehavior.Pointer, "PySequenceMethods*"),
- PyMappingMethods(ArgBehavior.Pointer, "PyMappingMethods*"),
- PyAsyncMethods(ArgBehavior.Pointer, "PyAsyncMethods*"),
- PyBufferProcs(ArgBehavior.Pointer, "PyBufferProcs*"),
- PyMethodDescrObject(ArgBehavior.PyObject, "PyMethodDescrObject*"),
- PySendResult(ArgBehavior.Int32, "PySendResult"),
- PySetObject(ArgBehavior.PyObject, "PySetObject*"),
- PyDescrObject(ArgBehavior.PyObject, "PyDescrObject*"),
- PY_MUTEX_PTR(ArgBehavior.Pointer, "PyMutex*"),
- PY_OPENCODEHOOKFUNCTION("Py_OpenCodeHookFunction"),
- PY_OS_SIGHANDLER("PyOS_sighandler_t"),
- PySliceObject(ArgBehavior.PyObject, "PySliceObject*"),
- PY_SSIZE_T_PTR(ArgBehavior.Pointer, "Py_ssize_t*"),
- PY_STRUCT_SEQUENCE_DESC("PyStructSequence_Desc*"),
- PyThreadState(ArgBehavior.Pointer, "PyThreadState*"),
- PyThreadStatePtr(ArgBehavior.Pointer, "PyThreadState**"),
- PY_THREAD_STATE_TOKEN_PTR(ArgBehavior.Pointer, "PyThreadStateToken*"),
- PY_REF_TRACER(ArgBehavior.Pointer, "PyRefTracer"),
- PY_THREAD_TYPE_LOCK(ArgBehavior.Int64, "PyThread_type_lock"),
- PY_THREAD_TYPE_LOCK_PTR(ArgBehavior.Pointer, "PyThread_type_lock*"),
- PyTryBlock("PyTryBlock*"),
- PY_TRACEFUNC("Py_tracefunc"),
- PY_TSS_T_PTR("Py_tss_t*"),
- PY_TYPE_SPEC("PyType_Spec*"),
- PY_SLOT_PTR(ArgBehavior.Pointer, "struct PySlot*"),
- PY_TYPE_OBJECT_PTR_LIST(ArgBehavior.Pointer, "PyTypeObject**"),
- PY_UCS4(ArgBehavior.Int32, "Py_UCS4"),
- PY_UCS4_PTR("Py_UCS4*"),
- PY_UNICODE("Py_UNICODE"),
- PyUnicodeObject(ArgBehavior.PyObject, "PyUnicodeObject*"),
- PY_UNICODE_PTR(ArgBehavior.Pointer, "Py_UNICODE*"),
- PyVarObject(ArgBehavior.PyObject, "PyVarObject*"),
- ConstPyVarObject(ArgBehavior.PyObject, "const PyVarObject*"),
- PYADDRPAIR_PTR("PyAddrPair*"),
- PYCONFIG_PTR("PyConfig*"),
- PYDICTKEYSOBJECT_PTR("PyDictKeysObject*"),
- PYDICTOBJECT_PTR("PyDictObject*"),
- PYHASH_FUNCDEF_PTR("PyHash_FuncDef*"),
- PYMEMALLOCATORDOMAIN("PyMemAllocatorDomain"),
- PYMEMALLOCATOREX_PTR("PyMemAllocatorEx*"),
- PYMODULEDEF_PTR("struct PyModuleDef*"),
- PyObjectConst("PyObject*const"),
- PyObjectConstPtr(ArgBehavior.Pointer, "PyObject*const*"),
- PYOBJECT_CONST_PTR_LIST("PyObject*const**"),
- PyObjectPtr(ArgBehavior.Pointer, "PyObject**"),
- PYOBJECTARENAALLOCATOR_PTR("PyObjectArenaAllocator*"),
- PYPRECONFIG_PTR("PyPreConfig*"),
- PYSTATUS("PyStatus"),
- PYUNICODE_KIND("enum PyUnicode_Kind"),
- PYWEAKREFERENCE_PTR(ArgBehavior.Pointer, "PyWeakReference*"),
- PYWIDESTRINGLIST_PTR("PyWideStringList*"),
- PyDict_WatchCallback(ArgBehavior.Pointer, "PyDict_WatchCallback"),
- PyFunction_WatchCallback(ArgBehavior.Pointer, "PyFunction_WatchCallback"),
- PyType_WatchCallback(ArgBehavior.Pointer, "PyType_WatchCallback"),
- gcvisitobjects_t(ArgBehavior.Pointer, "gcvisitobjects_t"),
- SIZE_T(ArgBehavior.Int64, "size_t"),
- SIZE_T_PTR("size_t*"),
- STAT_PTR("struct stat*"),
- PY_STAT_PTR("struct _Py_stat_struct*"),
- TIME_T("time_t"),
- TIME_T_PTR("time_t*"),
- TIMESPEC_PTR("struct timespec*"),
- TIMEVAL_PTR("struct timeval*"),
- TM_PTR("struct tm*"),
- UINTPTR_T(ArgBehavior.UInt64, "uintptr_t"),
- UINT32_T(ArgBehavior.UInt32, "uint32_t"),
- UINT32_T_PTR(ArgBehavior.Pointer, "uint32_t*"),
- UINT64_T(ArgBehavior.UInt64, "uint64_t"),
- UINT64_T_PTR(ArgBehavior.Pointer, "uint64_t*"),
- UNSIGNED_CHAR_PTR(ArgBehavior.Pointer, "unsigned char*"),
- UNSIGNED_INT(ArgBehavior.UInt32, "unsigned int"),
- UNSIGNED_LONG(ArgBehavior.Long, "unsigned long"),
- UNSIGNED_LONG_LONG(ArgBehavior.Int64, "unsigned long long"),
- VA_LIST(ArgBehavior.Pointer, "va_list"),
- VA_LIST_PTR(ArgBehavior.Pointer, "va_list*"),
- VARARGS("..."),
- VOID_PTR_LIST(ArgBehavior.Pointer, "void**"),
- WCHAR_T_PTR(ArgBehavior.Pointer, "wchar_t*"),
- WCHAR_T_CONST_PTR(ArgBehavior.Pointer, "wchar_t*const*"),
- WCHAR_T_PTR_LIST(ArgBehavior.Pointer, "wchar_t**"),
- WCHAR_T_PTR_PTR_LIST(ArgBehavior.Pointer, "wchar_t***"),
- WRAPPERBASE(ArgBehavior.Pointer, "struct wrapperbase*"),
- destructor(ArgBehavior.Pointer, "destructor"),
- getattrfunc(ArgBehavior.Pointer, "getattrfunc"),
- setattrfunc(ArgBehavior.Pointer, "setattrfunc"),
- reprfunc(ArgBehavior.Pointer, "reprfunc"),
- hashfunc(ArgBehavior.Pointer, "hashfunc"),
- ternaryfunc(ArgBehavior.Pointer, "ternaryfunc"),
- getattrofunc(ArgBehavior.Pointer, "getattrofunc"),
- setattrofunc(ArgBehavior.Pointer, "setattrofunc"),
- traverseproc(ArgBehavior.Pointer, "traverseproc"),
- visitproc(ArgBehavior.Pointer, "visitproc"),
- inquiry(ArgBehavior.Pointer, "inquiry"),
- richcmpfunc(ArgBehavior.Pointer, "richcmpfunc"),
- getiterfunc(ArgBehavior.Pointer, "getiterfunc"),
- iternextfunc(ArgBehavior.Pointer, "iternextfunc"),
- descrgetfunc(ArgBehavior.Pointer, "descrgetfunc"),
- descrsetfunc(ArgBehavior.Pointer, "descrsetfunc"),
- initproc(ArgBehavior.Pointer, "initproc"),
- allocfunc(ArgBehavior.Pointer, "allocfunc"),
- newfunc(ArgBehavior.Pointer, "newfunc"),
- freefunc(ArgBehavior.Pointer, "freefunc"),
- vectorcallfunc(ArgBehavior.Pointer, "vectorcallfunc"),
- binaryfunc(ArgBehavior.Pointer, "binaryfunc"),
- unaryfunc(ArgBehavior.Pointer, "unaryfunc"),
- lenfunc(ArgBehavior.Pointer, "lenfunc"),
- ssizeargfunc(ArgBehavior.Pointer, "ssizeargfunc"),
- ssizeobjargproc(ArgBehavior.Pointer, "ssizeobjargproc"),
- objobjproc(ArgBehavior.Pointer, "objobjproc"),
- objobjargproc(ArgBehavior.Pointer, "objobjargproc"),
- getbufferproc(ArgBehavior.Pointer, "getbufferproc"),
- releasebufferproc(ArgBehavior.Pointer, "releasebufferproc"),
- getter(ArgBehavior.Pointer, "getter"),
- setter(ArgBehavior.Pointer, "setter"),
- sendfunc(ArgBehavior.Pointer, "sendfunc"),
-
- func_objint("int (*)(PyObject*value)"),
- func_voidvoidptr("void (*)(void*)"),
- func_voidvoid(ArgBehavior.Pointer, "void (*)(void)"),
- func_intvoidptr("int (*)(void*)"),
- func_objvoid("PyObject*(*)(void)"),
- func_objcharsizevoidptr("PyObject*(*)(const char*, Py_ssize_t, void*)"),
- xid_newobjectfunc(ArgBehavior.Pointer, "xid_newobjectfunc"),
- atexit_datacallbackfunc(ArgBehavior.Pointer, "atexit_datacallbackfunc"),
-
- PrimitiveResult32(ArgBehavior.Int32, "int"),
- PrimitiveResult64(ArgBehavior.Int64, "long");
-
- private final String cSignature;
- private final ArgBehavior behavior;
- private final boolean transfer;
- private final boolean release;
-
- ArgDescriptor(String cSignature) {
- this.behavior = ArgBehavior.Unknown;
- this.cSignature = cSignature;
- this.transfer = false;
- this.release = false;
- }
-
- ArgDescriptor(ArgBehavior behavior, String cSignature) {
- this.behavior = behavior;
- this.cSignature = cSignature;
- this.transfer = false;
- this.release = false;
- }
-
- ArgDescriptor(ArgBehavior behavior, String cSignature, boolean transfer, boolean release) {
- this.behavior = behavior;
- this.cSignature = cSignature;
- this.transfer = transfer;
- this.release = release;
- }
-
- public static CExtToJavaNode[] createNativeToPython(ArgDescriptor[] args) {
- CExtToJavaNode[] result = new CExtToJavaNode[args.length];
- for (int i = 0; i < args.length; i++) {
- result[i] = args[i].createNativeToPythonNode();
- }
- return result;
- }
-
- public String getCSignature() {
- return cSignature;
- }
-
- public CExtToNativeNode createPythonToNativeNode() {
- assert behavior != ArgBehavior.Unknown : "undefined behavior in " + this;
- Supplier factory = transfer ? behavior.pythonToNativeTransfer : behavior.pythonToNative;
- assert !(transfer && factory == null);
- return factory == null ? null : factory.get();
- }
-
- public CExtToJavaNode createNativeToPythonNode() {
- assert behavior != ArgBehavior.Unknown : "undefined behavior in " + this;
- Supplier factory;
- if (transfer && release) {
- factory = NativeToPythonReturnNode::create;
- } else if (transfer) {
- factory = behavior.nativeToPythonTransfer;
- } else {
- factory = behavior.nativeToPython;
- }
- assert !(transfer && factory == null);
- return factory == null ? null : factory.get();
- }
-
- public CExtToJavaNode getUncachedNativeToPythonNode() {
- assert behavior != ArgBehavior.Unknown : "undefined behavior in " + this;
- CExtToJavaNode node = transfer ? behavior.uncachedNativeToPythonTransfer : behavior.uncachedNativeToPython;
- assert !(transfer && node == null);
- return node;
- }
-
- public NativeSimpleType getNativeSimpleType() {
- return behavior.nativeSimpleType;
- }
-
- public boolean isPyObjectOrPointer() {
- return switch (behavior) {
- case PyObject, PyTypeObject, PyObjectBorrowed, Pointer, TruffleStringPointer, TruffleStringPointerStrict -> true;
- default -> false;
- };
- }
-
- public boolean isPointer() {
- return switch (behavior) {
- case Pointer, TruffleStringPointer, TruffleStringPointerStrict -> true;
- default -> false;
- };
- }
-
- public boolean isPyObject() {
- return switch (behavior) {
- case PyObject, PyObjectBorrowed, PyTypeObject -> true;
- default -> false;
- };
- }
-
- public boolean isCharPtr() {
- return this == CharPtrAsTruffleString || this == CHAR_PTR || this == ConstCharPtr || this == ConstCharPtrAsTruffleString || this == ConstCharPtrAsTruffleStringStrict;
- }
-
- public boolean isI64() {
- return behavior == ArgBehavior.Int64 || behavior == ArgBehavior.Long || behavior == ArgBehavior.UInt64;
- }
-
- public boolean isI8() {
- return behavior == ArgBehavior.Char8 || behavior == ArgBehavior.UChar8;
- }
-
- public boolean isI32() {
- return behavior == ArgBehavior.Int32 || behavior == ArgBehavior.UInt32;
- }
-
- public boolean isI16() {
- return behavior == ArgBehavior.Char16 || behavior == ArgBehavior.UInt16;
- }
-
- public boolean isFloat() {
- return behavior == ArgBehavior.Float32;
- }
-
- public boolean isDouble() {
- return behavior == ArgBehavior.Float64;
- }
-}
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/common/NativeCExtSymbol.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/common/NativeCExtSymbol.java
index 30b04b1e73..b6fa9ac010 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/common/NativeCExtSymbol.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/common/NativeCExtSymbol.java
@@ -40,8 +40,8 @@
*/
package com.oracle.graal.python.builtins.objects.cext.common;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.annotations.NativeSimpleType;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.graal.python.runtime.nativeaccess.NativeContext;
import com.oracle.graal.python.runtime.nativeaccess.NativeFunctionPointer;
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/structs/CFields.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/structs/CFields.java
index bb86f66887..b50d70e7d2 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/structs/CFields.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/objects/cext/structs/CFields.java
@@ -40,75 +40,74 @@
*/
package com.oracle.graal.python.builtins.objects.cext.structs;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CHAR_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.CharPtrAsTruffleString;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ConstCharPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Double;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT64_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.INT_LIST;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Int;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_C_FUNCTION;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PY_SSIZE_T_PTR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Pointer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyAsyncMethods;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyBufferProcs;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyGetSetDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMappingMethods;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMemberDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyMethodDef;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyModuleDefSlot;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyNumberMethods;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyObjectPtr;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PySequenceMethods;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.PyTypeObject;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_buffer;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_hash_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.Py_ssize_t;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UCHAR;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINT16_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINT64_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UINTPTR_T;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_INT;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.UNSIGNED_LONG;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.allocfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.binaryfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.descrgetfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.descrsetfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.destructor;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.freefunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.getattrfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.getattrofunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.getbufferproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.getiterfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.getter;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.hashfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.initproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.inquiry;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.iternextfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.lenfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.newfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.objobjargproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.objobjproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.releasebufferproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.reprfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.richcmpfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.sendfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.setattrfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.setattrofunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.setter;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ssizeargfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ssizeobjargproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.ternaryfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.traverseproc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.unaryfunc;
-import static com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor.vectorcallfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.CHAR_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ConstCharPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Double;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT64_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.INT_LIST;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Int;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_C_FUNCTION;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PY_SSIZE_T_PTR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Pointer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyAsyncMethods;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyBufferProcs;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyGetSetDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMappingMethods;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMemberDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyMethodDef;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyModuleDefSlot;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyNumberMethods;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyObjectPtr;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PySequenceMethods;
+import static com.oracle.graal.python.annotations.ArgDescriptor.PyTypeObject;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_buffer;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_hash_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.Py_ssize_t;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UCHAR;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINT16_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINT64_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UINTPTR_T;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_INT;
+import static com.oracle.graal.python.annotations.ArgDescriptor.UNSIGNED_LONG;
+import static com.oracle.graal.python.annotations.ArgDescriptor.allocfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.binaryfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.descrgetfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.descrsetfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.destructor;
+import static com.oracle.graal.python.annotations.ArgDescriptor.freefunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.getattrfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.getattrofunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.getbufferproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.getiterfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.getter;
+import static com.oracle.graal.python.annotations.ArgDescriptor.hashfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.initproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.inquiry;
+import static com.oracle.graal.python.annotations.ArgDescriptor.iternextfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.lenfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.newfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.objobjargproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.objobjproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.releasebufferproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.reprfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.richcmpfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.sendfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.setattrfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.setattrofunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.setter;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ssizeargfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ssizeobjargproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.ternaryfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.traverseproc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.unaryfunc;
+import static com.oracle.graal.python.annotations.ArgDescriptor.vectorcallfunc;
import static com.oracle.graal.python.runtime.nativeaccess.NativeMemory.readLongArrayElements;
+import com.oracle.graal.python.annotations.ArgDescriptor;
import com.oracle.graal.python.annotations.CApiFields;
import com.oracle.graal.python.builtins.objects.cext.capi.CApiContext;
-import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
import com.oracle.truffle.api.CompilerAsserts;
import com.oracle.truffle.api.CompilerDirectives;
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
@@ -169,7 +168,7 @@ public enum CFields {
Py_buffer__itemsize(Py_ssize_t),
Py_buffer__readonly(Int),
Py_buffer__ndim(Int),
- Py_buffer__format(CharPtrAsTruffleString),
+ Py_buffer__format(CHAR_PTR),
Py_buffer__shape(PY_SSIZE_T_PTR),
Py_buffer__strides(PY_SSIZE_T_PTR),
Py_buffer__suboffsets(PY_SSIZE_T_PTR),
@@ -352,7 +351,7 @@ public enum CFields {
PyASCIIObject__state(Int),
PyCompactUnicodeObject__utf8_length(Py_ssize_t),
- PyCompactUnicodeObject__utf8(CharPtrAsTruffleString),
+ PyCompactUnicodeObject__utf8(CHAR_PTR),
PyUnicodeObject__data(Pointer),
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupport.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupport.java
index e6651baf75..6d805acd28 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupport.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupport.java
@@ -71,19 +71,6 @@ protected static MethodHandle unsupportedDowncallHandle(MethodType methodType) {
return MethodHandles.dropArguments(methodHandle, 0, methodType.parameterList());
}
- protected static Class> asJavaType(NativeSimpleType type) {
- return switch (type) {
- case VOID -> void.class;
- case SINT8 -> byte.class;
- case SINT16 -> short.class;
- case SINT32 -> int.class;
- case SINT64 -> long.class;
- case FLOAT -> float.class;
- case DOUBLE -> double.class;
- case POINTER -> long.class;
- };
- }
-
static Object createArena() {
return INSTANCE.createArenaImpl();
}
diff --git a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupportJdk21.java b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupportJdk21.java
index bb3a5f524e..ac30162af0 100644
--- a/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupportJdk21.java
+++ b/graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/nativeaccess/NativeAccessSupportJdk21.java
@@ -78,9 +78,9 @@ private static MethodType createMethodType(boolean captureCallState, NativeSimpl
parameterTypes[1] = Object.class;
}
for (int i = 0; i < argTypes.length; i++) {
- parameterTypes[i + injectedArgumentCount] = asJavaType(argTypes[i]);
+ parameterTypes[i + injectedArgumentCount] = argTypes[i].carrier();
}
- return MethodType.methodType(asJavaType(resType), parameterTypes);
+ return MethodType.methodType(resType.carrier(), parameterTypes);
}
@Override