Skip to content

Commit b4adc5a

Browse files
committed
Avoid unnecessary upcalls for PyObject_GC_Un-/Track
1 parent 4b490d5 commit b4adc5a

File tree

6 files changed

+217
-211
lines changed

6 files changed

+217
-211
lines changed

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

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2207,14 +2207,6 @@ PyAPI_FUNC(int) PyObject_GC_IsFinalized(PyObject* a) {
22072207
PyAPI_FUNC(int) PyObject_GC_IsTracked(PyObject* a) {
22082208
FUNC_NOT_IMPLEMENTED
22092209
}
2210-
#undef PyObject_GC_Track
2211-
PyAPI_FUNC(void) PyObject_GC_Track(void* a) {
2212-
GraalPyObject_GC_Track(a);
2213-
}
2214-
#undef PyObject_GC_UnTrack
2215-
PyAPI_FUNC(void) PyObject_GC_UnTrack(void* a) {
2216-
GraalPyObject_GC_UnTrack(a);
2217-
}
22182210
#undef PyObject_GET_WEAKREFS_LISTPTR
22192211
PyAPI_FUNC(PyObject**) PyObject_GET_WEAKREFS_LISTPTR(PyObject* a) {
22202212
FUNC_NOT_IMPLEMENTED

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -234,8 +234,6 @@ typedef struct {
234234
BUILTIN(PyObject_DelItem, int, PyObject*, PyObject*) \
235235
BUILTIN(PyObject_Dir, PyObject*, PyObject*) \
236236
BUILTIN(PyObject_Format, PyObject*, PyObject*, PyObject*) \
237-
BUILTIN(PyObject_GC_Track, void, void*) \
238-
BUILTIN(PyObject_GC_UnTrack, void, void*) \
239237
BUILTIN(PyObject_GetDoc, const char*, PyObject*) \
240238
BUILTIN(PyObject_GetItem, PyObject*, PyObject*, PyObject*) \
241239
BUILTIN(PyObject_GetIter, PyObject*, PyObject*) \
@@ -330,6 +328,8 @@ typedef struct {
330328
BUILTIN(PyTruffleNumber_UnaryOp, PyObject*, PyObject*, int) \
331329
BUILTIN(PyTruffleObject_CallFunctionObjArgs, PyObject*, PyObject*, va_list*) \
332330
BUILTIN(PyTruffleObject_CallMethodObjArgs, PyObject*, PyObject*, PyObject*, va_list*) \
331+
BUILTIN(PyTruffleObject_GC_Track, void, void*) \
332+
BUILTIN(PyTruffleObject_GC_UnTrack, void, void*) \
333333
BUILTIN(PyTruffleObject_GenericGetAttr, PyObject*, PyObject*, PyObject*) \
334334
BUILTIN(PyTruffleObject_GenericSetAttr, int, PyObject*, PyObject*, PyObject*) \
335335
BUILTIN(PyTruffleObject_GetItemString, PyObject*, PyObject*, const char*) \

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

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -987,5 +987,17 @@ PyVarObject* _PyObject_GC_NewVar(PyTypeObject *tp, Py_ssize_t nitems) {
987987
}
988988

989989
void PyObject_GC_Del(void *tp) {
990-
PyObject_Free(tp);
990+
PyObject_Free(tp);
991+
}
992+
993+
void PyObject_GC_Track(void* a) {
994+
if (PyTruffle_Trace_Memory()) {
995+
GraalPyTruffleObject_GC_Track(a);
996+
}
997+
}
998+
999+
void PyObject_GC_UnTrack(void* a) {
1000+
if (PyTruffle_Trace_Memory()) {
1001+
GraalPyTruffleObject_GC_UnTrack(a);
1002+
}
9911003
}

0 commit comments

Comments
 (0)