]> granicus.if.org Git - python/commitdiff
Add _Py_AS_GC macro. It will be used by the trashcan code on object.c.
authorNeil Schemenauer <nascheme@enme.ucalgary.ca>
Thu, 28 Mar 2002 21:06:16 +0000 (21:06 +0000)
committerNeil Schemenauer <nascheme@enme.ucalgary.ca>
Thu, 28 Mar 2002 21:06:16 +0000 (21:06 +0000)
Include/objimpl.h

index e27de308aebf117f0c808fb7a5b5745a1dd68fb6..50ea51c6a869d02a61c0abd7bf6b88cfc546d882 100644 (file)
@@ -235,10 +235,12 @@ typedef union _gc_head {
 
 extern PyGC_Head _PyGC_generation0;
 
+#define _Py_AS_GC(o) ((PyGC_Head *)(o)-1)
+
 /* Tell the GC to track this object.  NB: While the object is tracked the
  * collector it must be safe to call the ob_traverse method. */
 #define _PyObject_GC_TRACK(o) do { \
-       PyGC_Head *g = (PyGC_Head *)(o)-1; \
+       PyGC_Head *g = _Py_AS_GC(o); \
        if (g->gc.gc_next != NULL) \
                Py_FatalError("GC object already in linked list"); \
        g->gc.gc_next = &_PyGC_generation0; \
@@ -249,7 +251,7 @@ extern PyGC_Head _PyGC_generation0;
 
 /* Tell the GC to stop tracking this object. */
 #define _PyObject_GC_UNTRACK(o) do { \
-       PyGC_Head *g = (PyGC_Head *)(o)-1; \
+       PyGC_Head *g = _Py_AS_GC(o); \
        g->gc.gc_prev->gc.gc_next = g->gc.gc_next; \
        g->gc.gc_next->gc.gc_prev = g->gc.gc_prev; \
        g->gc.gc_next = NULL; \