mirror of
https://github.com/python/cpython.git
synced 2025-07-28 21:55:21 +00:00
- Issue #2862: Make int and float freelist management consistent with other
freelists. Changes their CompactFreeList apis into ClearFreeList apis and calls them via gc.collect().
This commit is contained in:
parent
17f2e4acb9
commit
2fe77060eb
11 changed files with 62 additions and 107 deletions
|
@ -829,32 +829,12 @@ PyDoc_STRVAR(sys_clear_type_cache__doc__,
|
|||
Clear the internal type lookup cache.");
|
||||
|
||||
|
||||
static PyObject *
|
||||
sys_compact_freelists(PyObject* self, PyObject* args)
|
||||
{
|
||||
size_t isum, ibc, ibf;
|
||||
size_t fsum, fbc, fbf;
|
||||
|
||||
PyInt_CompactFreeList(&ibc, &ibf, &isum);
|
||||
PyFloat_CompactFreeList(&fbc, &fbf, &fsum);
|
||||
|
||||
return Py_BuildValue("(kkk)(kkk)", isum, ibc, ibf,
|
||||
fsum, fbc, fbf);
|
||||
|
||||
}
|
||||
|
||||
PyDoc_STRVAR(sys_compact_freelists__doc__,
|
||||
"_compact_freelists() -> ((remaing_objects, total_blocks, freed_blocks), ...)\n\
|
||||
Compact the free lists of ints and floats.");
|
||||
|
||||
static PyMethodDef sys_methods[] = {
|
||||
/* Might as well keep this in alphabetic order */
|
||||
{"callstats", (PyCFunction)PyEval_GetCallStats, METH_NOARGS,
|
||||
callstats_doc},
|
||||
{"_clear_type_cache", sys_clear_type_cache, METH_NOARGS,
|
||||
sys_clear_type_cache__doc__},
|
||||
{"_compact_freelists", sys_compact_freelists, METH_NOARGS,
|
||||
sys_compact_freelists__doc__},
|
||||
{"_current_frames", sys_current_frames, METH_NOARGS,
|
||||
current_frames_doc},
|
||||
{"displayhook", sys_displayhook, METH_O, displayhook_doc},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue