mirror of
https://github.com/python/cpython.git
synced 2025-10-17 12:18:23 +00:00
Round 1 of Neil Schemenauer's GC patches:
This patch adds the type methods traverse and clear necessary for GC implementation.
This commit is contained in:
parent
a392dcb211
commit
8caad49c30
6 changed files with 218 additions and 3 deletions
|
@ -1418,6 +1418,30 @@ listremove(self, args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static int
|
||||
list_traverse(PyListObject *o, visitproc visit, void *arg)
|
||||
{
|
||||
int i, err;
|
||||
PyObject *x;
|
||||
|
||||
for (i = o->ob_size; --i >= 0; ) {
|
||||
x = o->ob_item[i];
|
||||
if (x != NULL) {
|
||||
err = visit(x, arg);
|
||||
if (err)
|
||||
return err;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
list_clear(PyListObject *lp)
|
||||
{
|
||||
(void) PyList_SetSlice((PyObject *)lp, 0, lp->ob_size, 0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char append_doc[] =
|
||||
"L.append(object) -- append object to end";
|
||||
static char extend_doc[] =
|
||||
|
@ -1491,6 +1515,9 @@ PyTypeObject PyList_Type = {
|
|||
0, /*tp_setattro*/
|
||||
0, /*tp_as_buffer*/
|
||||
Py_TPFLAGS_DEFAULT, /*tp_flags*/
|
||||
0, /* tp_doc */
|
||||
(traverseproc)list_traverse, /* tp_traverse */
|
||||
(inquiry)list_clear, /* tp_clear */
|
||||
};
|
||||
|
||||
|
||||
|
@ -1567,5 +1594,7 @@ static PyTypeObject immutable_list_type = {
|
|||
0, /*tp_setattro*/
|
||||
0, /*tp_as_buffer*/
|
||||
Py_TPFLAGS_DEFAULT, /*tp_flags*/
|
||||
0, /* tp_doc */
|
||||
(traverseproc)list_traverse, /* tp_traverse */
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue