Skip to content

Commit d4d5bae

Browse files
authored
gh-111968: Refactor _PyXXX_Fini to integrate with _PyObject_ClearFreeLists (gh-114899)
1 parent 5643856 commit d4d5bae

20 files changed

+38
-107
lines changed

Include/internal/pycore_context.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ extern PyTypeObject _PyContextTokenMissing_Type;
1414
/* runtime lifecycle */
1515

1616
PyStatus _PyContext_Init(PyInterpreterState *);
17-
void _PyContext_Fini(_PyFreeListState *);
1817

1918

2019
/* other API */

Include/internal/pycore_floatobject.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ extern "C" {
1515

1616
extern void _PyFloat_InitState(PyInterpreterState *);
1717
extern PyStatus _PyFloat_InitTypes(PyInterpreterState *);
18-
extern void _PyFloat_Fini(_PyFreeListState *);
1918
extern void _PyFloat_FiniType(PyInterpreterState *);
2019

2120

Include/internal/pycore_freelist.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,16 @@ typedef struct _Py_freelist_state {
125125
struct _Py_object_stack_state object_stacks;
126126
} _PyFreeListState;
127127

128+
extern void _PyObject_ClearFreeLists(_PyFreeListState *state, int is_finalization);
129+
extern void _PyTuple_ClearFreeList(_PyFreeListState *state, int is_finalization);
130+
extern void _PyFloat_ClearFreeList(_PyFreeListState *state, int is_finalization);
131+
extern void _PyList_ClearFreeList(_PyFreeListState *state, int is_finalization);
132+
extern void _PySlice_ClearFreeList(_PyFreeListState *state, int is_finalization);
133+
extern void _PyDict_ClearFreeList(_PyFreeListState *state, int is_finalization);
134+
extern void _PyAsyncGen_ClearFreeLists(_PyFreeListState *state, int is_finalization);
135+
extern void _PyContext_ClearFreeList(_PyFreeListState *state, int is_finalization);
136+
extern void _PyObjectStackChunk_ClearFreeList(_PyFreeListState *state, int is_finalization);
137+
128138
#ifdef __cplusplus
129139
}
130140
#endif

Include/internal/pycore_gc.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -279,14 +279,6 @@ extern PyObject *_PyGC_GetReferrers(PyInterpreterState *interp, PyObject *objs);
279279

280280
// Functions to clear types free lists
281281
extern void _PyGC_ClearAllFreeLists(PyInterpreterState *interp);
282-
extern void _Py_ClearFreeLists(_PyFreeListState *state, int is_finalization);
283-
extern void _PyTuple_ClearFreeList(_PyFreeListState *state, int is_finalization);
284-
extern void _PyFloat_ClearFreeList(_PyFreeListState *state, int is_finalization);
285-
extern void _PyList_ClearFreeList(_PyFreeListState *state, int is_finalization);
286-
extern void _PySlice_ClearCache(_PyFreeListState *state);
287-
extern void _PyDict_ClearFreeList(_PyFreeListState *state, int is_finalization);
288-
extern void _PyAsyncGen_ClearFreeLists(_PyFreeListState *state, int is_finalization);
289-
extern void _PyContext_ClearFreeList(_PyFreeListState *state, int is_finalization);
290282
extern void _Py_ScheduleGC(PyInterpreterState *interp);
291283
extern void _Py_RunGC(PyThreadState *tstate);
292284

Include/internal/pycore_genobject.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,6 @@ extern PyTypeObject _PyCoroWrapper_Type;
2626
extern PyTypeObject _PyAsyncGenWrappedValue_Type;
2727
extern PyTypeObject _PyAsyncGenAThrow_Type;
2828

29-
/* runtime lifecycle */
30-
31-
extern void _PyAsyncGen_Fini(_PyFreeListState *);
32-
3329
#ifdef __cplusplus
3430
}
3531
#endif

Include/internal/pycore_list.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,6 @@ extern "C" {
1313
extern PyObject* _PyList_Extend(PyListObject *, PyObject *);
1414
extern void _PyList_DebugMallocStats(FILE *out);
1515

16-
17-
/* runtime lifecycle */
18-
19-
extern void _PyList_Fini(_PyFreeListState *);
20-
21-
2216
#define _PyList_ITEMS(op) _Py_RVALUE(_PyList_CAST(op)->ob_item)
2317

2418
extern int

Include/internal/pycore_object_stack.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,6 @@ _PyObjectStackChunk_New(void);
3434
extern void
3535
_PyObjectStackChunk_Free(_PyObjectStackChunk *);
3636

37-
extern void
38-
_PyObjectStackChunk_ClearFreeList(_PyFreeListState *state, int is_finalization);
39-
4037
// Push an item onto the stack. Return -1 on allocation failure, 0 on success.
4138
static inline int
4239
_PyObjectStack_Push(_PyObjectStack *stack, PyObject *obj)

Include/internal/pycore_sliceobject.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,6 @@ extern "C" {
1111

1212
/* runtime lifecycle */
1313

14-
extern void _PySlice_Fini(_PyFreeListState *);
15-
1614
extern PyObject *
1715
_PyBuildSlice_ConsumeRefs(PyObject *start, PyObject *stop);
1816

Include/internal/pycore_tuple.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ extern void _PyTuple_DebugMallocStats(FILE *out);
1414
/* runtime lifecycle */
1515

1616
extern PyStatus _PyTuple_InitGlobalObjects(PyInterpreterState *);
17-
extern void _PyTuple_Fini(_PyFreeListState *);
1817

1918

2019
/* other API */

Objects/floatobject.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2010,16 +2010,6 @@ _PyFloat_ClearFreeList(_PyFreeListState *freelist_state, int is_finalization)
20102010
#endif
20112011
}
20122012

2013-
void
2014-
_PyFloat_Fini(_PyFreeListState *state)
2015-
{
2016-
// With Py_GIL_DISABLED:
2017-
// the freelists for the current thread state have already been cleared.
2018-
#ifndef Py_GIL_DISABLED
2019-
_PyFloat_ClearFreeList(state, 1);
2020-
#endif
2021-
}
2022-
20232013
void
20242014
_PyFloat_FiniType(PyInterpreterState *interp)
20252015
{

0 commit comments

Comments
 (0)