summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorChristian Heimes <christian@cheimes.de>2008-01-27 23:34:59 (GMT)
committerChristian Heimes <christian@cheimes.de>2008-01-27 23:34:59 (GMT)
commit908caac52e8e62baa1ee54e4e650e1cd3ac37907 (patch)
tree291efd46f16d74de6e49bba69f785883c6cdfcc1 /Python
parent3ea7b41b5805c60a05e697211d0bfc14a62a19fb (diff)
downloadcpython-908caac52e8e62baa1ee54e4e650e1cd3ac37907.zip
cpython-908caac52e8e62baa1ee54e4e650e1cd3ac37907.tar.gz
cpython-908caac52e8e62baa1ee54e4e650e1cd3ac37907.tar.bz2
Added clear cache methods to clear the internal type lookup cache for ref leak test runs.
Diffstat (limited to 'Python')
-rw-r--r--Python/pythonrun.c3
-rw-r--r--Python/sysmodule.c13
2 files changed, 16 insertions, 0 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 4939f54..f5465c5 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -377,6 +377,9 @@ Py_Finalize(void)
Py_XDECREF(warnings_module);
warnings_module = NULL;
+ /* Clear type lookup cache */
+ PyType_ClearCache();
+
/* Collect garbage. This may call finalizers; it's nice to call these
* before all modules are destroyed.
* XXX If a __del__ or weakref callback is triggered here, and tries to
diff --git a/Python/sysmodule.c b/Python/sysmodule.c
index 12ad828..f9fb815 100644
--- a/Python/sysmodule.c
+++ b/Python/sysmodule.c
@@ -754,6 +754,17 @@ a 11-tuple where the entries in the tuple are counts of:\n\
10. Number of stack pops performed by call_function()"
);
+static PyObject *
+sys_cleartypecache(PyObject* self, PyObject* args)
+{
+ PyType_ClearCache();
+ Py_RETURN_NONE;
+}
+
+PyDoc_STRVAR(cleartypecache_doc,
+"_cleartypecache() -> None\n\
+Clear the internal type lookup cache.");
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -776,6 +787,8 @@ static PyMethodDef sys_methods[] = {
/* Might as well keep this in alphabetic order */
{"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS,
callstats_doc},
+ {"_cleartypecache", sys_cleartypecache, METH_NOARGS,
+ cleartypecache_doc},
{"_current_frames", sys_current_frames, METH_NOARGS,
current_frames_doc},
{"displayhook", sys_displayhook, METH_O, displayhook_doc},