Skip to content
Merged
Show file tree
Hide file tree
Changes from 14 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);
18 changes: 2 additions & 16 deletions Modules/_bz2module.c
Original file line number Diff line number Diff line change
Expand Up @@ -391,13 +391,6 @@ BZ2Compressor_dealloc(PyObject *op)
Py_DECREF(tp);
}

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

static PyMethodDef BZ2Compressor_methods[] = {
_BZ2_BZ2COMPRESSOR_COMPRESS_METHODDEF
_BZ2_BZ2COMPRESSOR_FLUSH_METHODDEF
Expand All @@ -409,7 +402,7 @@ static PyType_Slot bz2_compressor_type_slots[] = {
{Py_tp_methods, BZ2Compressor_methods},
{Py_tp_new, _bz2_BZ2Compressor},
{Py_tp_doc, (char *)_bz2_BZ2Compressor__doc__},
{Py_tp_traverse, BZ2Compressor_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, 0}
};

Expand Down Expand Up @@ -703,13 +696,6 @@ BZ2Decompressor_dealloc(PyObject *op)
Py_DECREF(tp);
}

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

static PyMethodDef BZ2Decompressor_methods[] = {
_BZ2_BZ2DECOMPRESSOR_DECOMPRESS_METHODDEF
{NULL}
Expand Down Expand Up @@ -740,7 +726,7 @@ static PyType_Slot bz2_decompressor_type_slots[] = {
{Py_tp_doc, (char *)_bz2_BZ2Decompressor__doc__},
{Py_tp_members, BZ2Decompressor_members},
{Py_tp_new, _bz2_BZ2Decompressor},
{Py_tp_traverse, BZ2Decompressor_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, 0}
};

Expand Down
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
8 changes: 1 addition & 7 deletions Modules/_gdbmmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +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 +708,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
18 changes: 2 additions & 16 deletions Modules/_lzmamodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -882,13 +882,6 @@ static PyMethodDef Compressor_methods[] = {
{NULL}
};

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

PyDoc_STRVAR(Compressor_doc,
"LZMACompressor(format=FORMAT_XZ, check=-1, preset=None, filters=None)\n"
"\n"
Expand Down Expand Up @@ -922,7 +915,7 @@ static PyType_Slot lzma_compressor_type_slots[] = {
{Py_tp_methods, Compressor_methods},
{Py_tp_new, Compressor_new},
{Py_tp_doc, (char *)Compressor_doc},
{Py_tp_traverse, Compressor_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{0, 0}
};

Expand Down Expand Up @@ -1328,13 +1321,6 @@ Decompressor_dealloc(PyObject *op)
Py_DECREF(tp);
}

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

static PyMethodDef Decompressor_methods[] = {
_LZMA_LZMADECOMPRESSOR_DECOMPRESS_METHODDEF
{NULL}
Expand Down Expand Up @@ -1369,7 +1355,7 @@ static PyType_Slot lzma_decompressor_type_slots[] = {
{Py_tp_methods, Decompressor_methods},
{Py_tp_new, _lzma_LZMADecompressor},
{Py_tp_doc, (char *)_lzma_LZMADecompressor__doc__},
{Py_tp_traverse, Decompressor_traverse},
{Py_tp_traverse, _PyObject_VisitType},
{Py_tp_members, Decompressor_members},
{0, 0}
};
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
Loading
Loading