From 6ec3c653da9ffd098f522261d5592e64ff8e7889 Mon Sep 17 00:00:00 2001 From: Sjoerd Mullender Date: Tue, 29 Aug 1995 09:18:14 +0000 Subject: 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! --- Python/sysmodule.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'Python/sysmodule.c') diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 6e153e4594..5fc098d527 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 -- cgit v1.2.1