bpo-45522: Allow to disable freelists on build time (GH-29056)

Freelists for object structs can now be disabled. A new ``configure``
option ``--without-freelists`` can be used to disable all freelists
except empty tuple singleton. Internal Py*_MAXFREELIST macros can now
be defined as 0 without causing compiler warnings and segfaults.

Signed-off-by: Christian Heimes <christian@python.org>
This commit is contained in:
Christian Heimes 2021-10-21 16:12:20 +03:00 committed by GitHub
parent 5a14f71fe8
commit 9942f42a93
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 218 additions and 35 deletions

26
configure vendored
View file

@ -846,6 +846,7 @@ with_dbmliborder
enable_ipv6
with_doc_strings
with_pymalloc
with_freelists
with_c_locale_coercion
with_valgrind
with_dtrace
@ -1588,6 +1589,7 @@ Optional Packages:
names `ndbm', `gdbm' and `bdb'.
--with-doc-strings enable documentation strings (default is yes)
--with-pymalloc enable specialized mallocs (default is yes)
--with-freelists enable object freelists (default is yes)
--with-c-locale-coercion
enable C locale coercion to a UTF-8 based locale
(default is yes)
@ -11728,6 +11730,30 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_pymalloc" >&5
$as_echo "$with_pymalloc" >&6; }
# Check whether objects such as float, tuple and dict are using
# freelists to optimization memory allocation.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-freelists" >&5
$as_echo_n "checking for --with-freelists... " >&6; }
# Check whether --with-freelists was given.
if test "${with_freelists+set}" = set; then :
withval=$with_freelists;
fi
if test -z "$with_freelists"
then
with_freelists="yes"
fi
if test "$with_freelists" != "no"
then
$as_echo "#define WITH_FREELISTS 1" >>confdefs.h
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_freelists" >&5
$as_echo "$with_freelists" >&6; }
# Check for --with-c-locale-coercion
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-c-locale-coercion" >&5
$as_echo_n "checking for --with-c-locale-coercion... " >&6; }