diff options
author | Mark Hammond <mhammond@skippinet.com.au> | 2000-06-20 08:12:48 (GMT) |
---|---|---|
committer | Mark Hammond <mhammond@skippinet.com.au> | 2000-06-20 08:12:48 (GMT) |
commit | 440d89823020b71d7659fcd357c24549ce815b4c (patch) | |
tree | 9c99e26e945d77e56cc28544ac7371269940b70f /Python | |
parent | abf17032a45c5253fd7f5211cc5b4b0409721699 (diff) | |
download | cpython-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.
Diffstat (limited to 'Python')
-rw-r--r-- | Python/sysmodule.c | 15 |
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 |