Skip to content

Commit 196dddb

Browse files
committed
Do not export GraalPy C API helpers
1 parent f0c0d69 commit 196dddb

22 files changed

Lines changed: 263 additions & 145 deletions

File tree

‎graalpython/com.oracle.graal.python.cext/src/bytesobject.c‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2820,8 +2820,8 @@ _Py_COMP_DIAG_POP
28202820
}
28212821
#endif // GraalPy change
28222822

2823-
// GraalPy change: export for downcall, rename, use C array instead of bytes
2824-
PyAPI_FUNC(PyObject *)
2823+
// GraalPy change: helper-table entry for downcall, rename, use C array instead of bytes
2824+
GraalPy_CAPI_HELPER_SYMBOL PyObject *
28252825
GraalPyPrivate_Bytes_SubtypeNew(PyTypeObject *type, int8_t* contents, Py_ssize_t n) {
28262826
// GraalPy change: different implementation
28272827
PyObject* bytes = type->tp_alloc(type, n);
@@ -3393,4 +3393,3 @@ _PyBytes_Repeat(char* dest, Py_ssize_t len_dest,
33933393
}
33943394
}
33953395
#endif // GraalPy change
3396-

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@ int mmap_getbuffer(PyObject *self, Py_buffer *view, int flags) {
283283
return PyBuffer_FillInfo(view, (PyObject*)self, data, PyObject_Size((PyObject *)self), 0, flags);
284284
}
285285

286-
PyAPI_FUNC(void) GraalPyPrivate_MMap_InitBufferProtocol(PyObject* mmap_type) {
286+
GraalPy_CAPI_HELPER_SYMBOL void GraalPyPrivate_MMap_InitBufferProtocol(PyObject* mmap_type) {
287287
GraalPyPrivate_Log(GRAALPY_LOG_FINE, "GraalPyPrivate_MMap_InitBufferProtocol");
288288
assert(PyType_Check(mmap_type));
289289

@@ -310,7 +310,7 @@ PyObject* _Py_NotImplementedStructReference;
310310
*/
311311
THREAD_LOCAL PyThreadState *tstate_current = NULL;
312312

313-
PyAPI_FUNC(PyThreadState **) GraalPyPrivate_InitThreadStateCurrent(PyThreadState *tstate) {
313+
GraalPy_CAPI_HELPER_SYMBOL PyThreadState **GraalPyPrivate_InitThreadStateCurrent(PyThreadState *tstate) {
314314
tstate_current = tstate;
315315
return &tstate_current;
316316
}
@@ -446,7 +446,7 @@ GraalPyPrivate_SUBREF(intptr_t ptr, Py_ssize_t value)
446446
}
447447

448448
/** to be used from Java code only; calls '_Py_Dealloc' */
449-
PyAPI_FUNC(Py_ssize_t)
449+
GraalPy_CAPI_HELPER_SYMBOL Py_ssize_t
450450
GraalPyPrivate_BulkDealloc(intptr_t ptrArray[], int64_t len)
451451
{
452452
for (int i = 0; i < len; i++) {
@@ -460,7 +460,7 @@ GraalPyPrivate_BulkDealloc(intptr_t ptrArray[], int64_t len)
460460
}
461461

462462
/** to be used from Java code only and only at exit; calls _Py_Dealloc */
463-
PyAPI_FUNC(Py_ssize_t)
463+
GraalPy_CAPI_HELPER_SYMBOL Py_ssize_t
464464
GraalPyPrivate_BulkDeallocOnShutdown(intptr_t ptrArray[], int64_t len)
465465
{
466466
/* some objects depends on others which might get deallocated in the
@@ -487,11 +487,11 @@ GraalPyPrivate_BulkDeallocOnShutdown(intptr_t ptrArray[], int64_t len)
487487
/* To be used from Java code only.
488488
* This function is used if a native class inherits from a managed class but uses the 'object.__new__'.
489489
* This function roughly corresponds to CPython's 'object_new'. */
490-
PyAPI_FUNC(PyObject*) GraalPyPrivate_ObjectNew(PyTypeObject* cls) {
490+
GraalPy_CAPI_HELPER_SYMBOL PyObject* GraalPyPrivate_ObjectNew(PyTypeObject* cls) {
491491
return cls->tp_alloc(cls, 0);
492492
}
493493

494-
PyAPI_FUNC(void) GraalPyPrivate_ObjectArrayRelease(PyObject** array, int32_t size) {
494+
GraalPy_CAPI_HELPER_SYMBOL void GraalPyPrivate_ObjectArrayRelease(PyObject** array, int32_t size) {
495495
for (int i = 0; i < size; i++) {
496496
/* This needs to use 'Py_XDECREF' because we use this function to
497497
deallocate storages of tuples, lists, ..., where this is done in the
@@ -509,7 +509,7 @@ PyAPI_FUNC(void) GraalPyPrivate_ObjectArrayRelease(PyObject** array, int32_t siz
509509
#include "psapi.h"
510510
#endif
511511

512-
PyAPI_FUNC(size_t) GraalPyPrivate_GetCurrentRSS() {
512+
GraalPy_CAPI_HELPER_SYMBOL size_t GraalPyPrivate_GetCurrentRSS(void) {
513513
size_t rss = 0;
514514
#if defined(__APPLE__) && defined(__MACH__)
515515
// MacOS
@@ -541,7 +541,7 @@ PyAPI_FUNC(size_t) GraalPyPrivate_GetCurrentRSS() {
541541

542542

543543
// Implements the basesisze check in typeobject.c:_PyObject_GetState
544-
PyAPI_FUNC(int) GraalPyPrivate_CheckBasicsizeForGetstate(PyTypeObject* type, int slot_num) {
544+
GraalPy_CAPI_HELPER_SYMBOL int GraalPyPrivate_CheckBasicsizeForGetstate(PyTypeObject* type, int slot_num) {
545545
Py_ssize_t basicsize = PyBaseObject_Type.tp_basicsize;
546546
if (type->tp_dictoffset)
547547
basicsize += sizeof(PyObject *);
@@ -552,17 +552,17 @@ PyAPI_FUNC(int) GraalPyPrivate_CheckBasicsizeForGetstate(PyTypeObject* type, int
552552
return type->tp_basicsize > basicsize;
553553
}
554554

555-
PyAPI_FUNC(void) GraalPyPrivate_CheckTypeReady(PyTypeObject* type) {
555+
GraalPy_CAPI_HELPER_SYMBOL void GraalPyPrivate_CheckTypeReady(PyTypeObject* type) {
556556
if (!(type->tp_flags & Py_TPFLAGS_READY)) {
557557
PyType_Ready(type);
558558
}
559559
}
560560

561-
PyAPI_FUNC(int) GraalPyPrivate_NoOpClear(PyObject* o) {
561+
GraalPy_CAPI_HELPER_SYMBOL int GraalPyPrivate_NoOpClear(PyObject* o) {
562562
return 0;
563563
}
564564

565-
PyAPI_FUNC(int) GraalPyPrivate_NoOpTraverse(PyObject *self, visitproc visit, void *arg) {
565+
GraalPy_CAPI_HELPER_SYMBOL int GraalPyPrivate_NoOpTraverse(PyObject *self, visitproc visit, void *arg) {
566566
return 0;
567567
}
568568

@@ -646,7 +646,7 @@ PyAPI_FUNC(PyThreadState **) initialize_graal_capi(void **builtin_closures, GCSt
646646
* This function is called from Java during C API initialization to get the
647647
* pointer `_graalpy_finalizing`.
648648
*/
649-
PyAPI_FUNC(int8_t *) GraalPyPrivate_GetFinalizeCApiPointer() {
649+
GraalPy_CAPI_HELPER_SYMBOL void *GraalPyPrivate_GetFinalizeCApiPointer(void) {
650650
assert(!_graalpy_finalizing);
651651
// We actually leak this memory on purpose. On the Java side, this is
652652
// written to in a VM shutdown hook. Once such a hook is registered it

‎graalpython/com.oracle.graal.python.cext/src/capi.h‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,8 @@ typedef struct {
153153

154154
typedef struct gc_generation GCGeneration;
155155

156+
#define GraalPy_CAPI_HELPER_SYMBOL Py_LOCAL_SYMBOL
157+
156158
// {{start CAPI_BUILTINS}}
157159
#include "capi.gen.h"
158160

@@ -262,8 +264,6 @@ GraalPyPrivate_Log(int level, const char *format, ...)
262264

263265
Py_LOCAL_SYMBOL int is_builtin_type(PyTypeObject *tp);
264266

265-
PyAPI_FUNC(void) GraalPyPrivate_Object_GC_Del(void *op);
266-
267267
// export the SizeT arg parse functions, because we use them in contrast to cpython on windows for core modules that we link dynamically
268268
PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, const char *, ...);
269269
PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, const char *, ...);

‎graalpython/com.oracle.graal.python.cext/src/capsule.c‎

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ PyAPI_FUNC(PyTypeObject*) getPyCapsuleTypeReference() {
1414
return &PyCapsule_Type;
1515
}
1616

17-
PyAPI_FUNC(void) GraalPyPrivate_Capsule_CallDestructor(PyObject* capsule, PyCapsule_Destructor destructor) {
17+
GraalPy_CAPI_HELPER_SYMBOL void GraalPyPrivate_Capsule_CallDestructor(PyObject* capsule, PyCapsule_Destructor destructor) {
1818
destructor(capsule);
1919
}
20-

‎graalpython/com.oracle.graal.python.cext/src/complexobject.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ PyComplex_FromCComplex(Py_complex cval)
239239
return PyComplex_FromDoubles(cval.real, cval.imag);
240240
}
241241

242-
PyAPI_FUNC(PyObject *) // GraalPy change: expose the function for downcalls, rename
242+
GraalPy_CAPI_HELPER_SYMBOL PyObject * // GraalPy change: helper-table entry for downcalls, rename
243243
GraalPyPrivate_Complex_SubtypeFromDoubles(PyTypeObject *type, double real, double imag)
244244
{
245245
Py_complex c;

‎graalpython/com.oracle.graal.python.cext/src/datetime.c‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7286,8 +7286,8 @@ GraalPyPrivate_PyDateTime_GET_LONG_FIELD(PyObject* o, const char* field_name)
72867286
}
72877287

72887288
/** to be used from Java code only; returns the type ID for a PyDateTime_CAPI */
7289-
PyAPI_FUNC(void)
7290-
GraalPyPrivate_InitNativeDateTime()
7289+
GraalPy_CAPI_HELPER_SYMBOL void
7290+
GraalPyPrivate_InitNativeDateTime(void)
72917291
{
72927292
/* safe native get/set descriptors */
72937293
PyGetSetDef* getsets_date = PyDateTime_DateType.tp_getset;
@@ -7313,7 +7313,7 @@ GraalPyPrivate_InitNativeDateTime()
73137313
}
73147314

73157315
// Used from Java to initialize native subtypes
7316-
PyAPI_FUNC(PyObject*)
7316+
GraalPy_CAPI_HELPER_SYMBOL PyObject*
73177317
GraalPyPrivate_Time_SubtypeNew(PyTypeObject* type, int hour, int minute, int second, int usecond, PyObject* tzinfo, int fold) {
73187318
char aware = tzinfo != NULL;
73197319
PyDateTime_Time *self = (PyDateTime_Time *) (type->tp_alloc(type, aware));
@@ -7332,7 +7332,7 @@ GraalPyPrivate_Time_SubtypeNew(PyTypeObject* type, int hour, int minute, int sec
73327332
return (PyObject *)self;
73337333
}
73347334

7335-
PyAPI_FUNC(PyObject*)
7335+
GraalPy_CAPI_HELPER_SYMBOL PyObject*
73367336
GraalPyPrivate_Date_SubtypeNew(PyTypeObject* type, int year, int month, int day) {
73377337
PyDateTime_Date *self = (PyDateTime_Date *)(type->tp_alloc(type, 0));
73387338
if (self) {
@@ -7344,7 +7344,7 @@ GraalPyPrivate_Date_SubtypeNew(PyTypeObject* type, int year, int month, int day)
73447344
return (PyObject *)self;
73457345
}
73467346

7347-
PyAPI_FUNC(PyObject*)
7347+
GraalPy_CAPI_HELPER_SYMBOL PyObject*
73487348
GraalPyPrivate_DateTime_SubtypeNew(PyTypeObject* type, int year, int month, int day, int hour, int minute, int second, int usecond, PyObject* tzinfo, int fold) {
73497349
char aware = tzinfo != NULL;
73507350
PyDateTime_DateTime *self = (PyDateTime_DateTime *) (type->tp_alloc(type, aware));
@@ -7368,7 +7368,7 @@ GraalPyPrivate_DateTime_SubtypeNew(PyTypeObject* type, int year, int month, int
73687368
return (PyObject *)self;
73697369
}
73707370

7371-
PyAPI_FUNC(PyObject*)
7371+
GraalPy_CAPI_HELPER_SYMBOL PyObject*
73727372
GraalPyPrivate_TimeDelta_SubtypeNew(PyTypeObject* type, int days, int seconds, int microseconds) {
73737373
PyDateTime_Delta *self = (PyDateTime_Delta *) (type->tp_alloc(type, 0));
73747374
if (self != NULL) {

‎graalpython/com.oracle.graal.python.cext/src/exceptions.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void initialize_exceptions() {
5252
#undef EXCEPTION
5353
}
5454

55-
PyAPI_FUNC(PyObject *)
55+
GraalPy_CAPI_HELPER_SYMBOL PyObject *
5656
GraalPyPrivate_Exception_SubtypeNew(PyTypeObject *type, PyObject *args) {
5757
PyBaseExceptionObject *self;
5858

‎graalpython/com.oracle.graal.python.cext/src/floatobject.c‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2684,7 +2684,7 @@ double GraalPyFloat_AS_DOUBLE(PyObject *op) {
26842684

26852685
// not quite as in CPython, this assumes that x is already a double. The rest of
26862686
// the implementation is in the Float constructor in Java
2687-
PyAPI_FUNC(PyObject*)
2687+
GraalPy_CAPI_HELPER_SYMBOL PyObject*
26882688
GraalPyPrivate_Float_SubtypeNew(PyTypeObject *type, double x)
26892689
{
26902690
PyObject* newobj = type->tp_alloc(type, 0);

‎graalpython/com.oracle.graal.python.cext/src/gcmodule.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2940,7 +2940,7 @@ PyUnstable_GC_VisitObjects(gcvisitobjects_t callback, void *arg)
29402940
}
29412941

29422942

2943-
void
2943+
GraalPy_CAPI_HELPER_SYMBOL void
29442944
GraalPyPrivate_Object_GC_Del(void *op)
29452945
{
29462946
if (is_managed(op)) {
@@ -2951,7 +2951,7 @@ GraalPyPrivate_Object_GC_Del(void *op)
29512951
}
29522952

29532953
/* Exposes 'gc_collect_impl' such that we can call it from Java. */
2954-
PyAPI_FUNC(Py_ssize_t)
2954+
GraalPy_CAPI_HELPER_SYMBOL Py_ssize_t
29552955
GraalPyPrivate_GC_Collect(int generation)
29562956
{
29572957
return gc_collect_impl(NULL, generation);

‎graalpython/com.oracle.graal.python.cext/src/memoryobject.c‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3408,7 +3408,7 @@ PyTypeObject PyMemoryView_Type = {
34083408

34093409
// GraalPy additions
34103410

3411-
PyAPI_FUNC(PyObject *)
3411+
GraalPy_CAPI_HELPER_SYMBOL PyObject *
34123412
GraalPyPrivate_MemoryViewFromObject(PyObject *v, int flags)
34133413
{
34143414
if (PyObject_CheckBuffer(v)) {
@@ -3459,7 +3459,7 @@ GraalPyPrivate_MemoryViewFromObject(PyObject *v, int flags)
34593459
}
34603460

34613461
/* Release buffer struct allocated in GraalPyPrivate_MemoryViewFromObject */
3462-
PyAPI_FUNC(void)
3462+
GraalPy_CAPI_HELPER_SYMBOL void
34633463
GraalPyPrivate_ReleaseBuffer(Py_buffer* buffer)
34643464
{
34653465
if (buffer->obj != NULL) {

0 commit comments

Comments
 (0)