diff options
author | Victor Stinner <vstinner@python.org> | 2020-06-05 00:05:41 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-05 00:05:41 (GMT) |
commit | 88ec9190105c9b03f49aaef601ce02b242a75273 (patch) | |
tree | 699bea45830306ef5cd9943138a8c03d846e33d3 /Python | |
parent | 052d3fc0907be253cfd64b2c737a0b0aca586011 (diff) | |
download | cpython-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.c | 6 |
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); } |