From 47edb4b09ce4694e5585497581a1a0e7e047e393 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 13 Jun 2004 08:20:46 +0000 Subject: Remove unnecessary GC support. Sets cannot have cycles. --- Objects/setobject.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/Objects/setobject.c b/Objects/setobject.c index 47415e6..3dc11d4 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -114,21 +114,12 @@ frozenset_dict_wrapper(PyObject *d) static void set_dealloc(PySetObject *so) { - PyObject_GC_UnTrack(so); if (so->weakreflist != NULL) PyObject_ClearWeakRefs((PyObject *) so); Py_XDECREF(so->data); so->ob_type->tp_free(so); } -static int -set_traverse(PySetObject *so, visitproc visit, void *arg) -{ - if (so->data) - return visit(so->data, arg); - return 0; -} - static PyObject * set_iter(PySetObject *so) { @@ -1017,11 +1008,11 @@ PyTypeObject PySet_Type = { PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ set_doc, /* tp_doc */ - (traverseproc)set_traverse, /* tp_traverse */ - (inquiry)set_tp_clear, /* tp_clear */ + 0, /* tp_traverse */ + 0, /* tp_clear */ (richcmpfunc)set_richcompare, /* tp_richcompare */ offsetof(PySetObject, weakreflist), /* tp_weaklistoffset */ (getiterfunc)set_iter, /* tp_iter */ @@ -1037,7 +1028,7 @@ PyTypeObject PySet_Type = { (initproc)set_init, /* tp_init */ PyType_GenericAlloc, /* tp_alloc */ set_new, /* tp_new */ - PyObject_GC_Del, /* tp_free */ + PyObject_Del, /* tp_free */ }; /* frozenset object ********************************************************/ @@ -1112,10 +1103,10 @@ PyTypeObject PyFrozenSet_Type = { PyObject_GenericGetAttr, /* tp_getattro */ 0, /* tp_setattro */ 0, /* tp_as_buffer */ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_CHECKTYPES | + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES | Py_TPFLAGS_BASETYPE | Py_TPFLAGS_HAVE_WEAKREFS, /* tp_flags */ frozenset_doc, /* tp_doc */ - (traverseproc)set_traverse, /* tp_traverse */ + 0, /* tp_traverse */ 0, /* tp_clear */ (richcmpfunc)set_richcompare, /* tp_richcompare */ offsetof(PySetObject, weakreflist), /* tp_weaklistoffset */ @@ -1132,5 +1123,5 @@ PyTypeObject PyFrozenSet_Type = { 0, /* tp_init */ PyType_GenericAlloc, /* tp_alloc */ frozenset_new, /* tp_new */ - PyObject_GC_Del, /* tp_free */ + PyObject_Del, /* tp_free */ }; -- cgit v0.12