Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Include/cpython/object.h
Original file line number Diff line number Diff line change
Expand Up @@ -491,3 +491,7 @@ PyAPI_FUNC(int) PyUnstable_TryIncRef(PyObject *);
PyAPI_FUNC(void) PyUnstable_EnableTryIncRef(PyObject *);

PyAPI_FUNC(int) PyUnstable_Object_IsUniquelyReferenced(PyObject *);

/* Utility for the tp_traverse slot of mutable heap types that have no other
* references. */
PyAPI_FUNC(int) _PyObject_VisitType(PyObject *op, visitproc visit, void *arg);
8 changes: 1 addition & 7 deletions Modules/_dbmmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -96,12 +96,6 @@ newdbmobject(_dbm_state *state, const char *file, int flags, int mode)
}

/* Methods */
static int
dbm_traverse(PyObject *dp, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(dp));
return 0;
}

static void
dbm_dealloc(PyObject *self)
Expand Down Expand Up @@ -540,7 +534,7 @@ static PyMethodDef dbm_methods[] = {

static PyType_Slot dbmtype_spec_slots[] = {
{Py_tp_dealloc, dbm_dealloc},
{Py_tp_traverse, dbm_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_methods, dbm_methods},
{Py_sq_contains, dbm_contains},
{Py_mp_length, dbm_length},
Expand Down
18 changes: 2 additions & 16 deletions Modules/_decimal/_decimal.c
Original file line number Diff line number Diff line change
Expand Up @@ -746,13 +746,6 @@ signaldict_setitem(PyObject *self, PyObject *key, PyObject *value)
return 0;
}

static int
signaldict_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static void
signaldict_dealloc(PyObject *self)
{
Expand Down Expand Up @@ -845,7 +838,7 @@ static PyMethodDef signaldict_methods[] = {

static PyType_Slot signaldict_slots[] = {
{Py_tp_dealloc, signaldict_dealloc},
{Py_tp_traverse, signaldict_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_repr, signaldict_repr},
{Py_tp_hash, PyObject_HashNotImplemented},
{Py_tp_getattro, PyObject_GenericGetAttr},
Expand Down Expand Up @@ -2194,13 +2187,6 @@ PyDecType_New(decimal_state *state, PyTypeObject *type)
}
#define dec_alloc(st) PyDecType_New(st, (st)->PyDec_Type)

static int
dec_traverse(PyObject *dec, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(dec));
return 0;
}

static void
dec_dealloc(PyObject *dec)
{
Expand Down Expand Up @@ -6032,7 +6018,7 @@ static PyType_Slot dec_slots[] = {
{Py_tp_token, Py_TP_USE_SPEC},
{Py_tp_dealloc, dec_dealloc},
{Py_tp_getattro, PyObject_GenericGetAttr},
{Py_tp_traverse, dec_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_repr, dec_repr},
{Py_tp_hash, dec_hash},
{Py_tp_str, dec_str},
Expand Down
9 changes: 1 addition & 8 deletions Modules/_functoolsmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -108,20 +108,13 @@ placeholder_new(PyTypeObject *type, PyObject *args, PyObject *kwargs)
return placeholder;
}

static int
placeholder_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static PyType_Slot placeholder_type_slots[] = {
{Py_tp_dealloc, placeholder_dealloc},
{Py_tp_repr, placeholder_repr},
{Py_tp_doc, (void *)placeholder_doc},
{Py_tp_methods, placeholder_methods},
{Py_tp_new, placeholder_new},
{Py_tp_traverse, placeholder_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, 0}
};

Expand Down
9 changes: 1 addition & 8 deletions Modules/_gdbmmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,13 +122,6 @@ newgdbmobject(_gdbm_state *state, const char *file, int flags, int mode)
}

/* Methods */
static int
gdbm_traverse(PyObject *op, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(op));
return 0;
}

static void
gdbm_dealloc(PyObject *op)
{
Expand Down Expand Up @@ -714,7 +707,7 @@ static PyMethodDef gdbm_methods[] = {

static PyType_Slot gdbmtype_spec_slots[] = {
{Py_tp_dealloc, gdbm_dealloc},
{Py_tp_traverse, gdbm_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_methods, gdbm_methods},
{Py_sq_contains, gdbm_contains},
{Py_mp_length, gdbm_length},
Expand Down
9 changes: 1 addition & 8 deletions Modules/_multiprocessing/semaphore.c
Original file line number Diff line number Diff line change
Expand Up @@ -720,13 +720,6 @@ _multiprocessing_SemLock___exit___impl(SemLockObject *self,
return _multiprocessing_SemLock_release_impl(self);
}

static int
semlock_traverse(PyObject *s, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(s));
return 0;
}

/*
* Semaphore methods
*/
Expand Down Expand Up @@ -773,7 +766,7 @@ static PyType_Slot _PyMp_SemLockType_slots[] = {
{Py_tp_members, semlock_members},
{Py_tp_alloc, PyType_GenericAlloc},
{Py_tp_new, _multiprocessing_SemLock},
{Py_tp_traverse, semlock_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_free, PyObject_GC_Del},
{Py_tp_doc, (void *)PyDoc_STR("Semaphore/Mutex type")},
{0, 0},
Expand Down
9 changes: 1 addition & 8 deletions Modules/_pickle.c
Original file line number Diff line number Diff line change
Expand Up @@ -413,13 +413,6 @@ typedef struct {

#define Pdata_CAST(op) ((Pdata *)(op))

static int
Pdata_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static void
Pdata_dealloc(PyObject *op)
{
Expand All @@ -437,7 +430,7 @@ Pdata_dealloc(PyObject *op)

static PyType_Slot pdata_slots[] = {
{Py_tp_dealloc, Pdata_dealloc},
{Py_tp_traverse, Pdata_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, NULL},
};

Expand Down
9 changes: 1 addition & 8 deletions Modules/_sqlite/prepare_protocol.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,13 +29,6 @@ pysqlite_prepare_protocol_init(PyObject *self, PyObject *args, PyObject *kwargs)
return 0;
}

static int
pysqlite_prepare_protocol_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static void
pysqlite_prepare_protocol_dealloc(PyObject *self)
{
Expand All @@ -50,7 +43,7 @@ PyDoc_STRVAR(doc, "PEP 246 style object adaption protocol type.");
static PyType_Slot type_slots[] = {
{Py_tp_dealloc, pysqlite_prepare_protocol_dealloc},
{Py_tp_init, pysqlite_prepare_protocol_init},
{Py_tp_traverse, pysqlite_prepare_protocol_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_doc, (void *)doc},
{0, NULL},
};
Expand Down
9 changes: 1 addition & 8 deletions Modules/_sqlite/statement.c
Original file line number Diff line number Diff line change
Expand Up @@ -116,13 +116,6 @@ stmt_dealloc(PyObject *op)
Py_DECREF(tp);
}

static int
stmt_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

/*
* Strip leading whitespace and comments from incoming SQL (null terminated C
* string) and return a pointer to the first non-whitespace, non-comment
Expand Down Expand Up @@ -183,7 +176,7 @@ lstrip_sql(const char *sql)

static PyType_Slot stmt_slots[] = {
{Py_tp_dealloc, stmt_dealloc},
{Py_tp_traverse, stmt_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, NULL},
};

Expand Down
9 changes: 1 addition & 8 deletions Modules/_ssl.c
Original file line number Diff line number Diff line change
Expand Up @@ -5692,13 +5692,6 @@ _ssl_MemoryBIO_impl(PyTypeObject *type)
return (PyObject *) self;
}

static int
memory_bio_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static void
memory_bio_dealloc(PyObject *op)
{
Expand Down Expand Up @@ -5869,7 +5862,7 @@ static PyType_Slot PySSLMemoryBIO_slots[] = {
{Py_tp_getset, memory_bio_getsetlist},
{Py_tp_new, _ssl_MemoryBIO},
{Py_tp_dealloc, memory_bio_dealloc},
{Py_tp_traverse, memory_bio_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, 0},
};

Expand Down
27 changes: 3 additions & 24 deletions Modules/_threadmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -655,13 +655,6 @@ PyThreadHandleObject_tp_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
return (PyObject *)PyThreadHandleObject_new(type);
}

static int
PyThreadHandleObject_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static void
PyThreadHandleObject_dealloc(PyObject *op)
{
Expand Down Expand Up @@ -751,7 +744,7 @@ static PyType_Slot ThreadHandle_Type_slots[] = {
{Py_tp_dealloc, PyThreadHandleObject_dealloc},
{Py_tp_repr, PyThreadHandleObject_repr},
{Py_tp_getset, ThreadHandle_getsetlist},
{Py_tp_traverse, PyThreadHandleObject_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_methods, ThreadHandle_methods},
{Py_tp_new, PyThreadHandleObject_tp_new},
{0, 0}
Expand All @@ -767,13 +760,6 @@ static PyType_Spec ThreadHandle_Type_spec = {

/* Lock objects */

static int
lock_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static void
lock_dealloc(PyObject *self)
{
Expand Down Expand Up @@ -1045,7 +1031,7 @@ static PyType_Slot lock_type_slots[] = {
{Py_tp_repr, lock_repr},
{Py_tp_doc, (void *)lock_doc},
{Py_tp_methods, lock_methods},
{Py_tp_traverse, lock_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_new, lock_new},
{0, 0}
};
Expand All @@ -1060,13 +1046,6 @@ static PyType_Spec lock_type_spec = {

/* Recursive lock objects */

static int
rlock_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static int
rlock_locked_impl(rlockobject *self)
{
Expand Down Expand Up @@ -1359,7 +1338,7 @@ static PyType_Slot rlock_type_slots[] = {
{Py_tp_methods, rlock_methods},
{Py_tp_alloc, PyType_GenericAlloc},
{Py_tp_new, rlock_new},
{Py_tp_traverse, rlock_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, 0},
};

Expand Down
10 changes: 1 addition & 9 deletions Modules/arraymodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -714,14 +714,6 @@ ins1(arrayobject *self, Py_ssize_t where, PyObject *v)
}

/* Methods */

static int
array_tp_traverse(PyObject *op, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(op));
return 0;
}

static void
array_dealloc(PyObject *op)
{
Expand Down Expand Up @@ -2968,7 +2960,7 @@ static PyType_Slot array_slots[] = {
{Py_tp_getset, array_getsets},
{Py_tp_alloc, PyType_GenericAlloc},
{Py_tp_new, array_new},
{Py_tp_traverse, array_tp_traverse},
{Py_tp_traverse, _PyObject_VisitType},

/* as sequence */
{Py_sq_length, array_length},
Expand Down
11 changes: 2 additions & 9 deletions Modules/blake2module.c
Original file line number Diff line number Diff line change
Expand Up @@ -1008,17 +1008,10 @@ py_blake2_dealloc(PyObject *self)
Py_DECREF(type);
}

static int
py_blake2_traverse(PyObject *self, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(self));
return 0;
}

static PyType_Slot blake2b_type_slots[] = {
{Py_tp_clear, py_blake2_clear},
{Py_tp_dealloc, py_blake2_dealloc},
{Py_tp_traverse, py_blake2_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_doc, (char *)py_blake2b_new__doc__},
{Py_tp_methods, py_blake2b_methods},
{Py_tp_getset, py_blake2b_getsetters},
Expand All @@ -1029,7 +1022,7 @@ static PyType_Slot blake2b_type_slots[] = {
static PyType_Slot blake2s_type_slots[] = {
{Py_tp_clear, py_blake2_clear},
{Py_tp_dealloc, py_blake2_dealloc},
{Py_tp_traverse, py_blake2_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_doc, (char *)py_blake2s_new__doc__},
{Py_tp_methods, py_blake2b_methods},
{Py_tp_getset, py_blake2b_getsetters},
Expand Down
9 changes: 1 addition & 8 deletions Modules/hmacmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1032,13 +1032,6 @@ HMACObject_dealloc(PyObject *op)
Py_DECREF(type);
}

static int
HMACObject_traverse(PyObject *op, visitproc visit, void *arg)
{
Py_VISIT(Py_TYPE(op));
return 0;
}

static PyMethodDef HMACObject_methods[] = {
_HMAC_HMAC_COPY_METHODDEF
_HMAC_HMAC_UPDATE_METHODDEF
Expand All @@ -1060,7 +1053,7 @@ static PyType_Slot HMACObject_Type_slots[] = {
{Py_tp_getset, HMACObject_getsets},
{Py_tp_clear, HMACObject_clear},
{Py_tp_dealloc, HMACObject_dealloc},
{Py_tp_traverse, HMACObject_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, NULL} /* sentinel */
};

Expand Down
Loading
Loading