summaryrefslogtreecommitdiffstats
path: root/Objects
diff options
context:
space:
mode:
authorVictor Stinner <vstinner@python.org>2020-05-06 17:05:27 (GMT)
committerGitHub <noreply@github.com>2020-05-06 17:05:27 (GMT)
commitb7aa23d29fa48238dab3692d02e1f0a7e8a5af9c (patch)
tree03905056a9a121c9b4c11a3de4a73ac18dd1d96b /Objects
parentd8135e913ab7c694db247c86d0a84c450c32d86e (diff)
downloadcpython-b7aa23d29fa48238dab3692d02e1f0a7e8a5af9c.zip
cpython-b7aa23d29fa48238dab3692d02e1f0a7e8a5af9c.tar.gz
cpython-b7aa23d29fa48238dab3692d02e1f0a7e8a5af9c.tar.bz2
bpo-40521: Disable list free list in subinterpreters (GH-19959)
When Python is built with experimental isolated interpreters, disable the list free list. Temporary workaround until this cache is made per-interpreter.
Diffstat (limited to 'Objects')
-rw-r--r--Objects/listobject.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/Objects/listobject.c b/Objects/listobject.c
index 904bea3..37fadca 100644
--- a/Objects/listobject.c
+++ b/Objects/listobject.c
@@ -98,8 +98,15 @@ list_preallocate_exact(PyListObject *self, Py_ssize_t size)
/* Empty list reuse scheme to save calls to malloc and free */
#ifndef PyList_MAXFREELIST
-#define PyList_MAXFREELIST 80
+# define PyList_MAXFREELIST 80
#endif
+
+/* bpo-40521: list free lists are shared by all interpreters. */
+#ifdef EXPERIMENTAL_ISOLATED_SUBINTERPRETERS
+# undef PyList_MAXFREELIST
+# define PyList_MAXFREELIST 0
+#endif
+
static PyListObject *free_list[PyList_MAXFREELIST];
static int numfree = 0;