[Python-checkins] CVS: python/dist/src/Python ceval.c,2.260,2.261
Neil Schemenauer
nascheme@users.sourceforge.net
Thu, 12 Jul 2001 06:27:51 -0700
Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv1717/Python
Modified Files:
ceval.c
Log Message:
GC for generator objects.
Index: ceval.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/ceval.c,v
retrieving revision 2.260
retrieving revision 2.261
diff -C2 -r2.260 -r2.261
*** ceval.c 2001/07/03 23:39:52 2.260
--- ceval.c 2001/07/12 13:27:49 2.261
***************
*** 122,133 ****
gen->gi_frame = f;
gen->gi_running = 0;
return (PyObject *)gen;
}
static void
gen_dealloc(genobject *gen)
{
Py_DECREF(gen->gi_frame);
! PyObject_DEL(gen);
}
--- 122,141 ----
gen->gi_frame = f;
gen->gi_running = 0;
+ PyObject_GC_Init(gen);
return (PyObject *)gen;
}
+ static int
+ gen_traverse(genobject *gen, visitproc visit, void *arg)
+ {
+ return visit((PyObject *)gen->gi_frame, arg);
+ }
+
static void
gen_dealloc(genobject *gen)
{
+ PyObject_GC_Fini(gen);
Py_DECREF(gen->gi_frame);
! PyObject_Del(gen);
}
***************
*** 227,231 ****
0, /* ob_size */
"generator", /* tp_name */
! sizeof(genobject), /* tp_basicsize */
0, /* tp_itemsize */
/* methods */
--- 235,239 ----
0, /* ob_size */
"generator", /* tp_name */
! sizeof(genobject) + PyGC_HEAD_SIZE, /* tp_basicsize */
0, /* tp_itemsize */
/* methods */
***************
*** 245,251 ****
0, /* tp_setattro */
0, /* tp_as_buffer */
! Py_TPFLAGS_DEFAULT, /* tp_flags */
0, /* tp_doc */
! 0, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */
--- 253,259 ----
0, /* tp_setattro */
0, /* tp_as_buffer */
! Py_TPFLAGS_DEFAULT | Py_TPFLAGS_GC, /* tp_flags */
0, /* tp_doc */
! (traverseproc)gen_traverse, /* tp_traverse */
0, /* tp_clear */
0, /* tp_richcompare */