diff options
author | Sjoerd Mullender <sjoerd@acm.org> | 1995-08-29 09:18:14 (GMT) |
---|---|---|
committer | Sjoerd Mullender <sjoerd@acm.org> | 1995-08-29 09:18:14 (GMT) |
commit | 6ec3c653da9ffd098f522261d5592e64ff8e7889 (patch) | |
tree | 360bde69268001269a7dbd061551622b42c867e3 /Python | |
parent | b0a2ce515b0342b96ab1bc89c588af471c0c2b0f (diff) | |
download | cpython-6ec3c653da9ffd098f522261d5592e64ff8e7889.zip cpython-6ec3c653da9ffd098f522261d5592e64ff8e7889.tar.gz cpython-6ec3c653da9ffd098f522261d5592e64ff8e7889.tar.bz2 |
Implemented two new functions in sys:
getcounts() returns a list of counts of allocations and
deallocations for all different object types.
getobjects(n [, type ]) returns a list of recently allocated
and not-yet-freed objects of the given type (all
objects if no type given). Only the n most recent
(all if n==0) objects are returned.
getcounts is only available if compiled with -DCOUNT_ALLOCS,
getobjects is only available if compiled with -DTRACE_REFS. Note that
everything must be compiled with these options!
Diffstat (limited to 'Python')
-rw-r--r-- | Python/sysmodule.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 6e153e4..5fc098d 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -154,8 +154,42 @@ sys_mdebug(self, args) } #endif /* USE_MALLOPT */ +static object * +sys_getrefcount(self, args) + object *self; + object *args; +{ + object *arg; + if (!getargs(args, "O", &arg)) + return NULL; + return newintobject((long) arg->ob_refcnt); +} + +#ifdef COUNT_ALLOCS +static PyObject * +sys_getcounts(self, args) + PyObject *self, *args; +{ + extern PyObject *get_counts Py_PROTO((void)); + + if (!PyArg_Parse(args, "")) + return NULL; + return get_counts(); +} +#endif + +#ifdef TRACE_REFS +extern PyObject *getobjects Py_PROTO((PyObject *, PyObject *)); +#endif static struct methodlist sys_methods[] = { {"exit", sys_exit, 0}, + {"getrefcount", sys_getrefcount, 0}, +#ifdef COUNT_ALLOCS + {"getcounts", sys_getcounts, 0}, +#endif +#ifdef TRACE_REFS + {"getobjects", getobjects, 1}, +#endif #ifdef USE_MALLOPT {"mdebug", sys_mdebug, 0}, #endif |