mirror of
https://github.com/python/cpython.git
synced 2025-07-19 01:05:26 +00:00
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!
This commit is contained in:
parent
b0a2ce515b
commit
6ec3c653da
2 changed files with 92 additions and 0 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue