SF patch #875689: >100k alloc wasted on startup
(Contributed by Mike Pall.)
Make sure fill_free_list() is called only once rather than 106 times
when pre-allocating small ints.
diff --git a/Misc/ACKS b/Misc/ACKS
index 77c7980..61b07cb 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -411,6 +411,7 @@
Douglas Orr
Denis S. Otkidach
Russel Owen
+Mike Pall
Todd R. Palmer
Alexandre Parenteau
Dan Parisien
diff --git a/Objects/intobject.c b/Objects/intobject.c
index 47acbff..18624b3 100644
--- a/Objects/intobject.c
+++ b/Objects/intobject.c
@@ -1064,7 +1064,7 @@
int ival;
#if NSMALLNEGINTS + NSMALLPOSINTS > 0
for (ival = -NSMALLNEGINTS; ival < NSMALLPOSINTS; ival++) {
- if ((free_list = fill_free_list()) == NULL)
+ if (!free_list && (free_list = fill_free_list()) == NULL)
return 0;
/* PyObject_New is inlined */
v = free_list;