Skip to content

Commit ff325b2

Browse files
committed
Replace PythonNativePointer by NativePointer
1 parent 12d9947 commit ff325b2

File tree

18 files changed

+54
-131
lines changed

18 files changed

+54
-131
lines changed

graalpython/com.oracle.graal.python.cext/src/capi.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -896,9 +896,6 @@ PyAPI_FUNC(void) initialize_graal_capi(TruffleEnv* env, void* (*getBuiltin)(int
896896
PyTruffle_Log(PY_TRUFFLE_LOG_FINE, "initialize_builtins: %fs", ((double) (clock() - t)) / CLOCKS_PER_SEC);
897897
Py_Truffle_Options = GraalPyTruffle_Native_Options();
898898

899-
// this will set PythonContext.nativeNull and is required to be first
900-
GraalPyTruffle_Register_NULL(NULL);
901-
902899
initialize_builtin_types_and_structs();
903900
// initialize global variables like '_Py_NoneStruct', etc.
904901
initialize_globals();

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextArrayBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ static int getbuffer(PArray array, Object pyBufferPtr, int flags,
112112
@Cached CStructAccess.WriteByteNode writeByteNode,
113113
@Cached CStructAccess.AllocateNode allocateNode) {
114114
Object bufPtr = ensureNativeStorageNode.execute(inliningTarget, array).getPtr();
115-
Object nativeNull = PythonContext.get(inliningTarget).getNativeNull().getPtr();
115+
Object nativeNull = PythonContext.get(inliningTarget).getNativeNull();
116116
writePointerNode.write(pyBufferPtr, CFields.Py_buffer__buf, bufPtr);
117117
writePointerNode.write(pyBufferPtr, CFields.Py_buffer__obj, toNativeNewRefNode.execute(array));
118118
writeLongNode.write(pyBufferPtr, CFields.Py_buffer__len, array.getBytesLength());

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextBuiltins.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,6 @@
123123
import com.oracle.graal.python.builtins.objects.cext.capi.CExtNodesFactory.TransformExceptionToNativeNodeGen;
124124
import com.oracle.graal.python.builtins.objects.cext.capi.PyTruffleObjectFree;
125125
import com.oracle.graal.python.builtins.objects.cext.capi.PythonClassNativeWrapper;
126-
import com.oracle.graal.python.builtins.objects.cext.capi.PythonNativePointer;
127126
import com.oracle.graal.python.builtins.objects.cext.capi.PythonNativeWrapper;
128127
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.ArgDescriptor;
129128
import com.oracle.graal.python.builtins.objects.cext.capi.transitions.CApiTiming;
@@ -133,6 +132,7 @@
133132
import com.oracle.graal.python.builtins.objects.cext.common.CExtParseArgumentsNode.SplitFormatStringNode;
134133
import com.oracle.graal.python.builtins.objects.cext.common.CExtToJavaNode;
135134
import com.oracle.graal.python.builtins.objects.cext.common.CExtToNativeNode;
135+
import com.oracle.graal.python.builtins.objects.cext.common.NativePointer;
136136
import com.oracle.graal.python.builtins.objects.cext.structs.CConstants;
137137
import com.oracle.graal.python.builtins.objects.cext.structs.CFields;
138138
import com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess;
@@ -327,11 +327,11 @@ public abstract static class CApiBuiltinNode extends PNodeWithContext {
327327

328328
public abstract Object execute(Object[] args);
329329

330-
protected final PythonNativePointer getNativeNull() {
330+
protected final NativePointer getNativeNull() {
331331
return getContext().getNativeNull();
332332
}
333333

334-
protected static PythonNativePointer getNativeNull(Node inliningTarget) {
334+
protected static NativePointer getNativeNull(Node inliningTarget) {
335335
return PythonContext.get(inliningTarget).getNativeNull();
336336
}
337337

@@ -342,7 +342,7 @@ protected static PythonNativePointer getNativeNull(Node inliningTarget) {
342342
* that point).
343343
*/
344344
protected final Object getNULL() {
345-
return getContext().getNativeNull().getPtr();
345+
return getContext().getNativeNull();
346346
}
347347

348348
@TruffleBoundary(allowInlining = true)
@@ -806,7 +806,6 @@ Object execute(CApiBuiltinExecutable self, Object[] arguments) {
806806
if (retNode != null) {
807807
result = retNode.execute(result);
808808
}
809-
assert !(result instanceof PythonNativePointer);
810809
CApiTransitions.maybeGCALot();
811810
return result;
812811
} catch (Throwable t) {
@@ -821,7 +820,7 @@ Object execute(CApiBuiltinExecutable self, Object[] arguments) {
821820
if (cachedSelf.getRetDescriptor().isIntType()) {
822821
return -1;
823822
} else if (cachedSelf.getRetDescriptor().isPyObjectOrPointer()) {
824-
return PythonContext.get(this).getNativeNull().getPtr();
823+
return PythonContext.get(this).getNativeNull();
825824
} else if (cachedSelf.getRetDescriptor().isFloatType()) {
826825
return -1.0;
827826
} else if (cachedSelf.getRetDescriptor().isVoid()) {
@@ -1140,7 +1139,7 @@ static Object wrap(Object bufferStructPointer, Object ownerObj, long lenObj,
11401139
@Cached CStructAccess.ReadI64Node readStridesNode,
11411140
@Cached CStructAccess.ReadI64Node readSuboffsetsNode,
11421141
@Cached MemoryViewNodes.InitFlagsNode initFlagsNode,
1143-
@CachedLibrary(limit = "1") InteropLibrary lib,
1142+
@CachedLibrary(limit = "2") InteropLibrary lib,
11441143
@Cached CastToJavaIntExactNode castToIntNode,
11451144
@Cached TruffleString.CodePointLengthNode lengthNode,
11461145
@Cached TruffleString.CodePointAtIndexNode atIndexNode,
@@ -1149,7 +1148,7 @@ static Object wrap(Object bufferStructPointer, Object ownerObj, long lenObj,
11491148
int itemsize = castToIntNode.execute(inliningTarget, itemsizeObj);
11501149
int len = castToIntNode.execute(inliningTarget, lenObj);
11511150
boolean readonly = castToIntNode.execute(inliningTarget, readonlyObj) != 0;
1152-
Object owner = ownerObj instanceof PythonNativePointer ? null : ownerObj;
1151+
Object owner = PGuards.isNullOrZero(ownerObj, lib) ? null : ownerObj;
11531152
int[] shape = null;
11541153
int[] strides = null;
11551154
int[] suboffsets = null;
@@ -1180,16 +1179,6 @@ static Object wrap(Object bufferStructPointer, Object ownerObj, long lenObj,
11801179
}
11811180
}
11821181

1183-
@CApiBuiltin(ret = Void, args = {Pointer}, call = Ignored)
1184-
abstract static class PyTruffle_Register_NULL extends CApiUnaryBuiltinNode {
1185-
@Specialization
1186-
Object doIt(Object object) {
1187-
PythonNativePointer nn = getContext().getNativeNull();
1188-
nn.setPtr(object);
1189-
return PNone.NO_VALUE;
1190-
}
1191-
}
1192-
11931182
@GenerateInline
11941183
@GenerateCached(false)
11951184
@ReportPolymorphism

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextDictBuiltins.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -67,7 +67,6 @@
6767
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.CApiUnaryBuiltinNode;
6868
import com.oracle.graal.python.builtins.modules.cext.PythonCextBuiltins.PromoteBorrowedValue;
6969
import com.oracle.graal.python.builtins.objects.PNone;
70-
import com.oracle.graal.python.builtins.objects.cext.capi.PythonNativePointer;
7170
import com.oracle.graal.python.builtins.objects.common.EconomicMapStorage;
7271
import com.oracle.graal.python.builtins.objects.common.HashingCollectionNodes.SetItemNode;
7372
import com.oracle.graal.python.builtins.objects.common.HashingStorage;
@@ -227,7 +226,7 @@ static Object pop(PDict dict, Object key, Object defaultValue,
227226
}
228227

229228
@Fallback
230-
public PythonNativePointer fallback(Object dict, @SuppressWarnings("unused") Object key, @SuppressWarnings("unused") Object defaultValue) {
229+
public Object fallback(Object dict, @SuppressWarnings("unused") Object key, @SuppressWarnings("unused") Object defaultValue) {
231230
throw raiseFallback(dict, PythonBuiltinClassType.PDict);
232231
}
233232
}
@@ -258,7 +257,7 @@ static Object copy(PDict dict,
258257
}
259258

260259
@Fallback
261-
PythonNativePointer fallback(Object dict) {
260+
Object fallback(Object dict) {
262261
throw raiseFallback(dict, PythonBuiltinClassType.PDict);
263262
}
264263
}
@@ -326,7 +325,7 @@ static Object getItem(PDict dict, Object key,
326325
}
327326

328327
@Fallback
329-
PythonNativePointer fallback(Object dict, @SuppressWarnings("unused") Object key) {
328+
Object fallback(Object dict, @SuppressWarnings("unused") Object key) {
330329
throw raiseFallback(dict, PythonBuiltinClassType.PDict);
331330
}
332331
}
@@ -442,7 +441,7 @@ static Object keys(PDict dict,
442441
}
443442

444443
@Fallback
445-
public PythonNativePointer fallback(Object dict) {
444+
public Object fallback(Object dict) {
446445
throw raiseFallback(dict, PythonBuiltinClassType.PDict);
447446
}
448447
}
@@ -457,7 +456,7 @@ static Object keys(PDict dict,
457456
}
458457

459458
@Fallback
460-
PythonNativePointer fallback(Object dict) {
459+
Object fallback(Object dict) {
461460
throw raiseFallback(dict, PythonBuiltinClassType.PDict);
462461
}
463462
}
@@ -472,7 +471,7 @@ static Object values(PDict dict,
472471
}
473472

474473
@Fallback
475-
PythonNativePointer fallback(Object dict) {
474+
Object fallback(Object dict) {
476475
throw raiseFallback(dict, PythonBuiltinClassType.PDict);
477476
}
478477
}

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/cext/PythonCextErrBuiltins.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
import com.oracle.graal.python.builtins.modules.cext.PythonCextFileBuiltins.PyFile_WriteObject;
8484
import com.oracle.graal.python.builtins.objects.PNone;
8585
import com.oracle.graal.python.builtins.objects.cext.capi.PThreadState;
86-
import com.oracle.graal.python.builtins.objects.cext.capi.PythonNativePointer;
86+
import com.oracle.graal.python.builtins.objects.cext.common.NativePointer;
8787
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes.HashingStorageGetItem;
8888
import com.oracle.graal.python.builtins.objects.dict.DictBuiltins.SetItemNode;
8989
import com.oracle.graal.python.builtins.objects.dict.PDict;
@@ -465,7 +465,7 @@ Object raise(int set_sys_last_vars,
465465
@Cached ExitNode exitNode,
466466
@Cached PyTruffleErr_Fetch fetchNode,
467467
@Cached PyErr_Display errDisplayNode) {
468-
PythonNativePointer nativeNull = getNativeNull();
468+
NativePointer nativeNull = getNativeNull();
469469

470470
Object err = errOccuredNode.execute();
471471
PythonModule sys = getCore().getSysModule();

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
package com.oracle.graal.python.builtins.objects.cext.capi;
4242

4343
import com.oracle.graal.python.PythonLanguage;
44+
import com.oracle.graal.python.builtins.objects.cext.common.NativePointer;
4445

4546
public abstract class CApiGuards {
4647

@@ -53,7 +54,7 @@ public static boolean isNativeWrapper(Object object) {
5354
}
5455

5556
public static boolean isNativeNull(Object object) {
56-
return object instanceof PythonNativePointer;
57+
return object instanceof NativePointer nativePointer && nativePointer.isNull();
5758
}
5859

5960
public static boolean isSpecialSingleton(Object delegate) {

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
import com.oracle.graal.python.builtins.objects.cext.common.CExtToJavaNode;
9191
import com.oracle.graal.python.builtins.objects.cext.common.CExtToNativeNode;
9292
import com.oracle.graal.python.builtins.objects.cext.common.NativeCExtSymbol;
93+
import com.oracle.graal.python.builtins.objects.cext.common.NativePointer;
9394
import com.oracle.graal.python.builtins.objects.cext.structs.CStructAccess;
9495
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.StorageToNativeNode;
9596
import com.oracle.graal.python.builtins.objects.floats.PFloat;
@@ -2290,10 +2291,10 @@ static Object doPythonObject(PythonThreadState state, TruffleString name, @Suppr
22902291
}
22912292

22922293
@Specialization
2293-
static Object doPythonNativeNull(PythonThreadState state, TruffleString name, @SuppressWarnings("unused") PythonNativePointer result,
2294+
static Object doNativePointer(PythonThreadState state, TruffleString name, NativePointer result,
22942295
@Bind("this") Node inliningTarget,
22952296
@Shared @Cached InlinedConditionProfile errOccurredProfile) {
2296-
checkFunctionResult(inliningTarget, name, true, true, state, errOccurredProfile);
2297+
checkFunctionResult(inliningTarget, name, result.isNull(), true, state, errOccurredProfile);
22972298
return result;
22982299
}
22992300

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ public Object execute(Object[] arguments,
151151
}
152152
} catch (PException e) {
153153
transformExceptionToNativeNode.execute(inliningTarget, e);
154-
return PythonContext.get(callNode).getNativeNull().getPtr();
154+
return PythonContext.get(callNode).getNativeNull();
155155
} finally {
156156
gil.release(mustRelease);
157157
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ Object execute(Object[] arguments,
323323
}
324324
} catch (PException e) {
325325
transformExceptionToNativeNode.execute(null, inliningTarget, e);
326-
return PythonContext.get(gil).getNativeNull().getPtr();
326+
return PythonContext.get(gil).getNativeNull();
327327
} finally {
328328
CApiTiming.exit(timing);
329329
gil.release(mustRelease);
@@ -394,7 +394,7 @@ Object execute(Object[] arguments,
394394
}
395395
} catch (PException e) {
396396
transformExceptionToNativeNode.execute(null, inliningTarget, e);
397-
return PythonContext.get(gil).getNativeNull().getPtr();
397+
return PythonContext.get(gil).getNativeNull();
398398
} finally {
399399
CApiTiming.exit(timing);
400400
gil.release(mustRelease);
@@ -467,7 +467,7 @@ Object execute(Object[] arguments,
467467
}
468468
} catch (PException e) {
469469
transformExceptionToNativeNode.execute(null, inliningTarget, e);
470-
return PythonContext.get(gil).getNativeNull().getPtr();
470+
return PythonContext.get(gil).getNativeNull();
471471
} finally {
472472
CApiTiming.exit(timing);
473473
gil.release(mustRelease);
@@ -537,7 +537,7 @@ Object execute(Object[] arguments,
537537
}
538538
} catch (PException e) {
539539
transformExceptionToNativeNode.execute(null, inliningTarget, e);
540-
return PythonContext.get(gil).getNativeNull().getPtr();
540+
return PythonContext.get(gil).getNativeNull();
541541
} finally {
542542
CApiTiming.exit(timing);
543543
gil.release(mustRelease);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ Object allocate() {
165165

166166
Object docWrapper;
167167
if (doc == null) {
168-
docWrapper = PythonContext.get(null).getNativeNull().getPtr();
168+
docWrapper = PythonContext.get(null).getNativeNull();
169169
} else {
170170
try {
171171
docWrapper = new CStringWrapper(doc);

0 commit comments

Comments
 (0)