summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-06-05 00:05:41 (GMT)
committerGitHub <noreply@github.com>2020-06-05 00:05:41 (GMT)
commit88ec9190105c9b03f49aaef601ce02b242a75273 (patch)
tree699bea45830306ef5cd9943138a8c03d846e33d3 /Python
parent052d3fc0907be253cfd64b2c737a0b0aca586011 (diff)
downloadcpython-88ec9190105c9b03f49aaef601ce02b242a75273.zip
cpython-88ec9190105c9b03f49aaef601ce02b242a75273.tar.gz
cpython-88ec9190105c9b03f49aaef601ce02b242a75273.tar.bz2
bpo-40521: Make list free list per-interpreter (GH-20642)
Each interpreter now has its own list free list: * Move list numfree and free_list into PyInterpreterState. * Add _Py_list_state structure. * Add tstate parameter to _PyList_ClearFreeList() and _PyList_Fini(). * Remove "#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS". * _PyGC_Fini() clears gcstate->garbage list which can be stored in the list free list. Call _PyGC_Fini() before _PyList_Fini() to prevent leaking this list.
Diffstat (limited to 'Python')
-rw-r--r--Python/pylifecycle.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c
index 1dbdbfd..09d4d88 100644
--- a/Python/pylifecycle.c
+++ b/Python/pylifecycle.c
@@ -1251,8 +1251,8 @@ finalize_interp_types(PyThreadState *tstate, int is_main_interp)
{
_PyFrame_Fini(tstate);
_PyTuple_Fini(tstate);
+ _PyList_Fini(tstate);
if (is_main_interp) {
- _PyList_Fini();
_PySet_Fini();
_PyBytes_Fini();
}
@@ -1296,6 +1296,8 @@ finalize_interp_clear(PyThreadState *tstate)
_PyGC_CollectNoFail();
}
+ _PyGC_Fini(tstate);
+
finalize_interp_types(tstate, is_main_interp);
if (is_main_interp) {
@@ -1309,8 +1311,6 @@ finalize_interp_clear(PyThreadState *tstate)
_PyExc_Fini();
}
-
- _PyGC_Fini(tstate);
}