diff options
author | Victor Stinner <vstinner@python.org> | 2020-06-04 21:38:36 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-04 21:38:36 (GMT) |
commit | 69ac6e58fd98de339c013fe64cd1cf763e4f9bca (patch) | |
tree | 98ab5b8f851d5512f097a73292e871a89c11f873 /Modules/gcmodule.c | |
parent | dc24b8a2ac32114313bae519db3ccc21fe45c982 (diff) | |
download | cpython-69ac6e58fd98de339c013fe64cd1cf763e4f9bca.zip cpython-69ac6e58fd98de339c013fe64cd1cf763e4f9bca.tar.gz cpython-69ac6e58fd98de339c013fe64cd1cf763e4f9bca.tar.bz2 |
bpo-40521: Make tuple free list per-interpreter (GH-20247)
Each interpreter now has its own tuple free lists:
* Move tuple numfree and free_list arrays into PyInterpreterState.
* Define PyTuple_MAXSAVESIZE and PyTuple_MAXFREELIST macros in
pycore_interp.h.
* Add _Py_tuple_state structure. Pass it explicitly to tuple_alloc().
* Add tstate parameter to _PyTuple_ClearFreeList()
* Each interpreter now has its own empty tuple singleton.
Diffstat (limited to 'Modules/gcmodule.c')
-rw-r--r-- | Modules/gcmodule.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c index a44752b..1f5aa93 100644 --- a/Modules/gcmodule.c +++ b/Modules/gcmodule.c @@ -1025,8 +1025,9 @@ delete_garbage(PyThreadState *tstate, GCState *gcstate, static void clear_freelists(void) { + PyThreadState *tstate = _PyThreadState_GET(); _PyFrame_ClearFreeList(); - _PyTuple_ClearFreeList(); + _PyTuple_ClearFreeList(tstate); _PyFloat_ClearFreeList(); _PyList_ClearFreeList(); _PyDict_ClearFreeList(); |