aboutsummaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-12-26 01:45:43 +0100
committerGitHub <noreply@github.com>2020-12-26 01:45:43 +0100
commit41010184880151d6ae02a226dbacc796e5c90d11 (patch)
tree5d87ed2b4392de3d7063b59f03d955b04f8b0eec /Python
parentAdd convolve() to the itertools recipes (GH-23928) (diff)
downloadcpython-41010184880151d6ae02a226dbacc796e5c90d11.tar.gz
cpython-41010184880151d6ae02a226dbacc796e5c90d11.tar.bz2
cpython-41010184880151d6ae02a226dbacc796e5c90d11.zip
bpo-42745: Make the type cache per-interpreter (GH-23947)
Make the type attribute lookup cache per-interpreter. Add private _PyType_InitCache() function, called by PyInterpreterState_New(). Continue to share next_version_tag between interpreters, since static types are still shared by interpreters. Remove MCACHE macro: the cache is no longer disabled if the EXPERIMENTAL_ISOLATED_SUBINTERPRETERS macro is defined.
Diffstat (limited to 'Python')
-rw-r--r--Python/pylifecycle.c2
-rw-r--r--Python/pystate.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 8d744c7bfd..c3c1aa22e9 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1750,7 +1750,7 @@ Py_FinalizeEx(void)
_PyImport_Fini();
/* Cleanup typeobject.c's internal caches. */
- _PyType_Fini();
+ _PyType_Fini(tstate);
/* unload faulthandler module */
_PyFaulthandler_Fini();
diff --git a/Python/pystate.c b/Python/pystate.c
index 231144b082..c791b23999 100644
--- a/Python/pystate.c
+++ b/Python/pystate.c
@@ -4,6 +4,7 @@
#include "Python.h"
#include "pycore_ceval.h"
#include "pycore_initconfig.h"
+#include "pycore_object.h" // _PyType_InitCache()
#include "pycore_pyerrors.h"
#include "pycore_pylifecycle.h"
#include "pycore_pymem.h" // _PyMem_SetDefaultAllocator()
@@ -223,6 +224,7 @@ PyInterpreterState_New(void)
_PyGC_InitState(&interp->gc);
PyConfig_InitPythonConfig(&interp->config);
+ _PyType_InitCache(interp);
interp->eval_frame = _PyEval_EvalFrameDefault;
#ifdef HAVE_DLOPEN