@@ -103,16 +103,20 @@ PyObject _Py_EllipsisObject = _PyObject_HEAD_INIT(&PyEllipsis_Type);
103
103
104
104
/* Slice object implementation */
105
105
106
-
107
- void _PySlice_Fini (PyInterpreterState * interp )
106
+ void _PySlice_ClearCache (_PyFreeListState * state )
108
107
{
109
- PySliceObject * obj = interp -> slice_cache ;
108
+ PySliceObject * obj = state -> slice_state . slice_cache ;
110
109
if (obj != NULL ) {
111
- interp -> slice_cache = NULL ;
110
+ state -> slice_state . slice_cache = NULL ;
112
111
PyObject_GC_Del (obj );
113
112
}
114
113
}
115
114
115
+ void _PySlice_Fini (_PyFreeListState * state )
116
+ {
117
+ _PySlice_ClearCache (state );
118
+ }
119
+
116
120
/* start, stop, and step are python objects with None indicating no
117
121
index is present.
118
122
*/
@@ -122,11 +126,11 @@ _PyBuildSlice_Consume2(PyObject *start, PyObject *stop, PyObject *step)
122
126
{
123
127
assert (start != NULL && stop != NULL && step != NULL );
124
128
125
- PyInterpreterState * interp = _PyInterpreterState_GET ();
129
+ _PyFreeListState * state = _PyFreeListState_GET ();
126
130
PySliceObject * obj ;
127
- if (interp -> slice_cache != NULL ) {
128
- obj = interp -> slice_cache ;
129
- interp -> slice_cache = NULL ;
131
+ if (state -> slice_state . slice_cache != NULL ) {
132
+ obj = state -> slice_state . slice_cache ;
133
+ state -> slice_state . slice_cache = NULL ;
130
134
_Py_NewReference ((PyObject * )obj );
131
135
}
132
136
else {
@@ -354,13 +358,13 @@ Create a slice object. This is used for extended slicing (e.g. a[0:10:2]).");
354
358
static void
355
359
slice_dealloc (PySliceObject * r )
356
360
{
357
- PyInterpreterState * interp = _PyInterpreterState_GET ();
361
+ _PyFreeListState * state = _PyFreeListState_GET ();
358
362
_PyObject_GC_UNTRACK (r );
359
363
Py_DECREF (r -> step );
360
364
Py_DECREF (r -> start );
361
365
Py_DECREF (r -> stop );
362
- if (interp -> slice_cache == NULL ) {
363
- interp -> slice_cache = r ;
366
+ if (state -> slice_state . slice_cache == NULL ) {
367
+ state -> slice_state . slice_cache = r ;
364
368
}
365
369
else {
366
370
PyObject_GC_Del (r );
0 commit comments