[Python-checkins] CVS: python/dist/src/Objects object.c,2.168,2.169

Neil Schemenauer nascheme@users.sourceforge.net
Thu, 28 Mar 2002 19:05:57 -0800


Update of /cvsroot/python/python/dist/src/Objects
In directory usw-pr-cvs1:/tmp/cvs-serv17993/Objects

Modified Files:
	object.c 
Log Message:
If the GC is enabled then don't use the ob_type pointer to create a list
of trash objects.  Use the gc_prev pointer instead.


Index: object.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/object.c,v
retrieving revision 2.168
retrieving revision 2.169
diff -C2 -d -r2.168 -r2.169
*** object.c	23 Mar 2002 00:20:15 -0000	2.168
--- object.c	29 Mar 2002 03:05:54 -0000	2.169
***************
*** 2038,2041 ****
--- 2038,2042 ----
  _PyTrash_deposit_object(PyObject *op)
  {
+ #ifndef WITH_CYCLE_GC
  	int typecode;
  
***************
*** 2055,2060 ****
  	}
  	op->ob_refcnt = typecode;
- 
  	op->ob_type = (PyTypeObject*)_PyTrash_delete_later;
  	_PyTrash_delete_later = op;
  }
--- 2056,2064 ----
  	}
  	op->ob_refcnt = typecode;
  	op->ob_type = (PyTypeObject*)_PyTrash_delete_later;
+ #else
+ 	assert (_Py_AS_GC(op)->gc.gc_next == NULL);
+ 	_Py_AS_GC(op)->gc.gc_prev = (PyGC_Head *)_PyTrash_delete_later;
+ #endif
  	_PyTrash_delete_later = op;
  }
***************
*** 2065,2068 ****
--- 2069,2074 ----
  	while (_PyTrash_delete_later) {
  		PyObject *shredder = _PyTrash_delete_later;
+ 
+ #ifndef WITH_CYCLE_GC
  		_PyTrash_delete_later = (PyObject*) shredder->ob_type;
  
***************
*** 2084,2087 ****
--- 2090,2098 ----
  			break;
  		}
+ #else
+ 		_PyTrash_delete_later =
+ 			(PyObject*) _Py_AS_GC(shredder)->gc.gc_prev;
+ #endif
+ 
  		_Py_NewReference(shredder);