summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorSjoerd Mullender <sjoerd@acm.org>1995-08-29 09:18:14 (GMT)
committerSjoerd Mullender <sjoerd@acm.org>1995-08-29 09:18:14 (GMT)
commit6ec3c653da9ffd098f522261d5592e64ff8e7889 (patch)
tree360bde69268001269a7dbd061551622b42c867e3 /Python
parentb0a2ce515b0342b96ab1bc89c588af471c0c2b0f (diff)
downloadcpython-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.c34
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