summaryrefslogtreecommitdiffstats
path: root/Objects/object.c
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2002-07-11 06:23:50 (GMT)
committerTim Peters <tim.peters@gmail.com>2002-07-11 06:23:50 (GMT)
commit3459251d5a2b9589e03e818effc357e5e60ee4a9 (patch)
treedd1a63fc9f5904fb0032b87adbfb5dfd684ce823 /Objects/object.c
parentdc1e70987f49aa23bf1d07f32c476edeba0cec30 (diff)
downloadcpython-3459251d5a2b9589e03e818effc357e5e60ee4a9.zip
cpython-3459251d5a2b9589e03e818effc357e5e60ee4a9.tar.gz
cpython-3459251d5a2b9589e03e818effc357e5e60ee4a9.tar.bz2
object.h special-build macro minefield: renamed all the new lexical
helper macros to something saner, and used them appropriately in other files too, to reduce #ifdef blocks. classobject.c, instance_dealloc(): One of my worst Python Memories is trying to fix this routine a few years ago when COUNT_ALLOCS was defined but Py_TRACE_REFS wasn't. The special-build code here is way too complicated. Now it's much simpler. Difference: in a Py_TRACE_REFS build, the instance is no longer in the doubly-linked list of live objects while its __del__ method is executing, and that may be visible via sys.getobjects() called from a __del__ method. Tough -- the object is presumed dead while its __del__ is executing anyway, and not calling _Py_NewReference() at the start allows enormous code simplification. typeobject.c, call_finalizer(): The special-build instance_dealloc() pain apparently spread to here too via cut-'n-paste, and this is much simpler now too. In addition, I didn't understand why this routine was calling _PyObject_GC_TRACK() after a resurrection, since there's no plausible way _PyObject_GC_UNTRACK() could have been called on the object by this point. I suspect it was left over from pasting the instance_delloc() code. Instead asserted that the object is still tracked. Caution: I suspect we don't have a test that actually exercises the subtype_dealloc() __del__-resurrected-me code.
Diffstat (limited to 'Objects/object.c')
-rw-r--r--Objects/object.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Objects/object.c b/Objects/object.c
index 4987ff3..19f9a7a 100644
--- a/Objects/object.c
+++ b/Objects/object.c
@@ -7,7 +7,7 @@
#include "macglue.h"
#endif
-#if defined( Py_TRACE_REFS ) || defined( Py_REF_DEBUG )
+#ifdef Py_REF_DEBUG
DL_IMPORT(long) _Py_RefTotal;
#endif
@@ -1876,13 +1876,13 @@ _Py_ResetReferences(void)
void
_Py_NewReference(PyObject *op)
{
- _Py_RefTotal++;
+ _Py_INC_REFTOTAL;
op->ob_refcnt = 1;
op->_ob_next = refchain._ob_next;
op->_ob_prev = &refchain;
refchain._ob_next->_ob_prev = op;
refchain._ob_next = op;
- _PyMAYBE_BUMP_COUNT(op);
+ _Py_INC_TPALLOCS(op);
}
void
@@ -1907,7 +1907,7 @@ _Py_ForgetReference(register PyObject *op)
op->_ob_next->_ob_prev = op->_ob_prev;
op->_ob_prev->_ob_next = op->_ob_next;
op->_ob_next = op->_ob_prev = NULL;
- _PyMAYBE_BUMP_FREECOUNT(op);
+ _Py_INC_TPFREES(op);
}
void