Issue #6695: Full garbage collection runs now clear the freelist of set objects.
Initial patch by Matthias Troffaes.
This commit is contained in:
parent
c144a93e98
commit
093ce9cd8c
|
@ -157,3 +157,10 @@ subtypes but not for instances of :class:`frozenset` or its subtypes.
|
|||
.. c:function:: int PySet_Clear(PyObject *set)
|
||||
|
||||
Empty an existing set of all elements.
|
||||
|
||||
|
||||
.. c:function:: int PySet_ClearFreeList()
|
||||
|
||||
Clear the free list. Return the total number of freed items.
|
||||
|
||||
.. versionadded:: 3.3
|
||||
|
|
|
@ -99,6 +99,8 @@ PyAPI_FUNC(int) _PySet_NextEntry(PyObject *set, Py_ssize_t *pos, PyObject **key,
|
|||
PyAPI_FUNC(PyObject *) PySet_Pop(PyObject *set);
|
||||
#ifndef Py_LIMITED_API
|
||||
PyAPI_FUNC(int) _PySet_Update(PyObject *set, PyObject *iterable);
|
||||
|
||||
PyAPI_FUNC(int) PySet_ClearFreeList(void);
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
|
|
@ -10,6 +10,9 @@ What's New in Python 3.3 Alpha 1?
|
|||
Core and Builtins
|
||||
-----------------
|
||||
|
||||
- Issue #6695: Full garbage collection runs now clear the freelist of set
|
||||
objects. Initial patch by Matthias Troffaes.
|
||||
|
||||
- Fix OSError.__init__ and OSError.__new__ so that each of them can be
|
||||
overriden and take additional arguments (followup to issue #12555).
|
||||
|
||||
|
|
|
@ -764,6 +764,7 @@ clear_freelists(void)
|
|||
(void)PyFloat_ClearFreeList();
|
||||
(void)PyList_ClearFreeList();
|
||||
(void)PyDict_ClearFreeList();
|
||||
(void)PySet_ClearFreeList();
|
||||
}
|
||||
|
||||
static double
|
||||
|
|
|
@ -1068,9 +1068,10 @@ frozenset_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|||
return emptyfrozenset;
|
||||
}
|
||||
|
||||
void
|
||||
PySet_Fini(void)
|
||||
int
|
||||
PySet_ClearFreeList(void)
|
||||
{
|
||||
int freelist_size = numfree;
|
||||
PySetObject *so;
|
||||
|
||||
while (numfree) {
|
||||
|
@ -1078,6 +1079,13 @@ PySet_Fini(void)
|
|||
so = free_list[numfree];
|
||||
PyObject_GC_Del(so);
|
||||
}
|
||||
return freelist_size;
|
||||
}
|
||||
|
||||
void
|
||||
PySet_Fini(void)
|
||||
{
|
||||
PySet_ClearFreeList();
|
||||
Py_CLEAR(dummy);
|
||||
Py_CLEAR(emptyfrozenset);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue