summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Hammond <mhammond@skippinet.com.au>2000-06-20 08:12:48 (GMT)
committerMark Hammond <mhammond@skippinet.com.au>2000-06-20 08:12:48 (GMT)
commit440d89823020b71d7659fcd357c24549ce815b4c (patch)
tree9c99e26e945d77e56cc28544ac7371269940b70f
parentabf17032a45c5253fd7f5211cc5b4b0409721699 (diff)
downloadcpython-440d89823020b71d7659fcd357c24549ce815b4c.zip
cpython-440d89823020b71d7659fcd357c24549ce815b4c.tar.gz
cpython-440d89823020b71d7659fcd357c24549ce815b4c.tar.bz2
Added a new debug method sys.gettotalrefcount(), which returns the total number of references on all Python objects. This is only enabled when Py_TRACE_REFS is defined (which includes default debug builds under Windows).
Also removed a redundant cast from sys.getrefcount(), as discussed on the patches list.
-rw-r--r--Python/sysmodule.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index ea838eb..6219454 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -265,9 +265,21 @@ sys_getrefcount(self, args)
PyObject *arg;
if (!PyArg_ParseTuple(args, "O:getrefcount", &arg))
return NULL;
- return PyInt_FromLong((long) arg->ob_refcnt);
+ return PyInt_FromLong(arg->ob_refcnt);
}
+#ifdef Py_TRACE_REFS
+static PyObject *
+sys_gettotalrefcount(PyObject *self, PyObject *args)
+{
+ extern long _Py_RefTotal;
+ if (!PyArg_ParseTuple(args, ":gettotalrefcount"))
+ return NULL;
+ return PyInt_FromLong(_Py_RefTotal);
+}
+
+#endif /* Py_TRACE_REFS */
+
static char getrefcount_doc[] =
"getrefcount(object) -> integer\n\
\n\
@@ -310,6 +322,7 @@ static PyMethodDef sys_methods[] = {
#endif
#ifdef Py_TRACE_REFS
{"getobjects", _Py_GetObjects, 1},
+ {"gettotalrefcount", sys_gettotalrefcount, 1},
#endif
{"getrefcount", sys_getrefcount, 1, getrefcount_doc},
#ifdef USE_MALLOPT