summaryrefslogtreecommitdiffstats
path: root/Modules/gcmodule.c
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-06-04 21:38:36 (GMT)
committerGitHub <noreply@github.com>2020-06-04 21:38:36 (GMT)
commit69ac6e58fd98de339c013fe64cd1cf763e4f9bca (patch)
tree98ab5b8f851d5512f097a73292e871a89c11f873 /Modules/gcmodule.c
parentdc24b8a2ac32114313bae519db3ccc21fe45c982 (diff)
downloadcpython-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.c3
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();