bpo-40428: Remove PyTuple_ClearFreeList() function (GH-19769)

Remove the following function from the C API:

* PyAsyncGen_ClearFreeLists()
* PyContext_ClearFreeList()
* PyDict_ClearFreeList()
* PyFloat_ClearFreeList()
* PyFrame_ClearFreeList()
* PyList_ClearFreeList()
* PySet_ClearFreeList()
* PyTuple_ClearFreeList()

Make these functions private, move them to the internal C API and
change their return type to void.

Call explicitly PyGC_Collect() to free all free lists.

Note: PySet_ClearFreeList() did nothing.
This commit is contained in:
Victor Stinner 2020-04-29 02:29:20 +02:00 committed by GitHub
parent cc0dc7e484
commit ae00a5a885
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 71 additions and 86 deletions

View file

@ -1998,25 +1998,22 @@ _PyFloat_Init(void)
return 1;
}
int
PyFloat_ClearFreeList(void)
void
_PyFloat_ClearFreeList(void)
{
PyFloatObject *f = free_list, *next;
int i = numfree;
while (f) {
for (; f; f = next) {
next = (PyFloatObject*) Py_TYPE(f);
PyObject_FREE(f);
f = next;
}
free_list = NULL;
numfree = 0;
return i;
}
void
_PyFloat_Fini(void)
{
(void)PyFloat_ClearFreeList();
_PyFloat_ClearFreeList();
}
/* Print summary info about the state of the optimized allocator */