Mailing List Archive

CVS: python/dist/src/Objects object.c,2.168,2.169
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);