[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 */