@@ -962,18 +962,18 @@ _PyTuple_Resize(PyObject **pv, Py_ssize_t newsize)
962962}
963963
964964
965- static void maybe_freelist_clear (PyInterpreterState * , int );
965+ static void maybe_freelist_clear (_PyFreeListState * , int );
966966
967967void
968- _PyTuple_Fini (PyInterpreterState * interp )
968+ _PyTuple_Fini (_PyFreeListState * state )
969969{
970- maybe_freelist_clear (interp , 1 );
970+ maybe_freelist_clear (state , 1 );
971971}
972972
973973void
974- _PyTuple_ClearFreeList (PyInterpreterState * interp )
974+ _PyTuple_ClearFreeList (_PyFreeListState * state , int is_finalization )
975975{
976- maybe_freelist_clear (interp , 0 );
976+ maybe_freelist_clear (state , is_finalization );
977977}
978978
979979/*********************** Tuple Iterator **************************/
@@ -1125,18 +1125,14 @@ tuple_iter(PyObject *seq)
11251125 * freelists *
11261126 *************/
11271127
1128- #define STATE (interp->tuple )
1128+ #define STATE (state->tuple_state )
11291129#define FREELIST_FINALIZED (STATE.numfree[0] < 0)
11301130
11311131static inline PyTupleObject *
11321132maybe_freelist_pop (Py_ssize_t size )
11331133{
1134- #if PyTuple_NFREELISTS > 0
1135- PyInterpreterState * interp = _PyInterpreterState_GET ();
1136- #ifdef Py_DEBUG
1137- /* maybe_freelist_pop() must not be called after maybe_freelist_fini(). */
1138- assert (!FREELIST_FINALIZED );
1139- #endif
1134+ #ifdef WITH_FREELISTS
1135+ _PyFreeListState * state = _PyFreeListState_GET ();
11401136 if (size == 0 ) {
11411137 return NULL ;
11421138 }
@@ -1169,18 +1165,15 @@ maybe_freelist_pop(Py_ssize_t size)
11691165static inline int
11701166maybe_freelist_push (PyTupleObject * op )
11711167{
1172- #if PyTuple_NFREELISTS > 0
1173- PyInterpreterState * interp = _PyInterpreterState_GET ();
1174- #ifdef Py_DEBUG
1175- /* maybe_freelist_push() must not be called after maybe_freelist_fini(). */
1176- assert (!FREELIST_FINALIZED );
1177- #endif
1168+ #ifdef WITH_FREELISTS
1169+ _PyFreeListState * state = _PyFreeListState_GET ();
11781170 if (Py_SIZE (op ) == 0 ) {
11791171 return 0 ;
11801172 }
11811173 Py_ssize_t index = Py_SIZE (op ) - 1 ;
11821174 if (index < PyTuple_NFREELISTS
11831175 && STATE .numfree [index ] < PyTuple_MAXFREELIST
1176+ && STATE .numfree [index ] >= 0
11841177 && Py_IS_TYPE (op , & PyTuple_Type ))
11851178 {
11861179 /* op is the head of a linked list, with the first item
@@ -1196,9 +1189,9 @@ maybe_freelist_push(PyTupleObject *op)
11961189}
11971190
11981191static void
1199- maybe_freelist_clear (PyInterpreterState * interp , int fini )
1192+ maybe_freelist_clear (_PyFreeListState * state , int fini )
12001193{
1201- #if PyTuple_NFREELISTS > 0
1194+ #ifdef WITH_FREELISTS
12021195 for (Py_ssize_t i = 0 ; i < PyTuple_NFREELISTS ; i ++ ) {
12031196 PyTupleObject * p = STATE .free_list [i ];
12041197 STATE .free_list [i ] = NULL ;
@@ -1216,8 +1209,8 @@ maybe_freelist_clear(PyInterpreterState *interp, int fini)
12161209void
12171210_PyTuple_DebugMallocStats (FILE * out )
12181211{
1219- #if PyTuple_NFREELISTS > 0
1220- PyInterpreterState * interp = _PyInterpreterState_GET ();
1212+ #ifdef WITH_FREELISTS
1213+ _PyFreeListState * state = _PyFreeListState_GET ();
12211214 for (int i = 0 ; i < PyTuple_NFREELISTS ; i ++ ) {
12221215 int len = i + 1 ;
12231216 char buf [128 ];
0 commit comments