From 69ac6e58fd98de339c013fe64cd1cf763e4f9bca Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Thu, 4 Jun 2020 23:38:36 +0200 Subject: 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. --- Python/pylifecycle.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Python/pylifecycle.c') diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index da66a82ada..9da3fb09c3 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -1252,7 +1252,9 @@ finalize_interp_types(PyThreadState *tstate, int is_main_interp) if (is_main_interp) { /* Sundry finalizers */ _PyFrame_Fini(); - _PyTuple_Fini(); + } + _PyTuple_Fini(tstate); + if (is_main_interp) { _PyList_Fini(); _PySet_Fini(); _PyBytes_Fini(); -- cgit v1.2.1