@ -1176,8 +1176,9 @@ handle_resurrected_objects(PyGC_Head *unreachable, PyGC_Head* still_unreachable,
/* This is the main function. Read this to understand how the
* collection process works . */
static Py_ssize_t
collect ( PyThreadState * tstate , int generation ,
Py_ssize_t * n_collected , Py_ssize_t * n_uncollectable , int nofail )
gc_collect_main ( PyThreadState * tstate , int generation ,
Py_ssize_t * n_collected , Py_ssize_t * n_uncollectable ,
int nofail )
{
int i ;
Py_ssize_t m = 0 ; /* # objects collected */
@ -1395,19 +1396,19 @@ invoke_gc_callback(PyThreadState *tstate, const char *phase,
* progress callbacks .
*/
static Py_ssize_t
collect_with_callback ( PyThreadState * tstate , int generation )
gc_ collect_with_callback( PyThreadState * tstate , int generation )
{
assert ( ! _PyErr_Occurred ( tstate ) ) ;
Py_ssize_t result , collected , uncollectable ;
invoke_gc_callback ( tstate , " start " , generation , 0 , 0 ) ;
result = collect ( tstate , generation , & collected , & uncollectable , 0 ) ;
result = gc_ collect_main ( tstate , generation , & collected , & uncollectable , 0 ) ;
invoke_gc_callback ( tstate , " stop " , generation , collected , uncollectable ) ;
assert ( ! _PyErr_Occurred ( tstate ) ) ;
return result ;
}
static Py_ssize_t
collect_generations ( PyThreadState * tstate )
gc_ collect_generations( PyThreadState * tstate )
{
GCState * gcstate = & tstate - > interp - > gc ;
/* Find the oldest generation (highest numbered) where the count
@ -1455,7 +1456,7 @@ collect_generations(PyThreadState *tstate)
if ( i = = NUM_GENERATIONS - 1
& & gcstate - > long_lived_pending < gcstate - > long_lived_total / 4 )
continue ;
n = collect_with_callback ( tstate , i ) ;
n = gc_ collect_with_callback( tstate , i ) ;
break ;
}
}
@ -1541,7 +1542,7 @@ gc_collect_impl(PyObject *module, int generation)
}
else {
gcstate - > collecting = 1 ;
n = collect_with_callback ( tstate , generation ) ;
n = gc_ collect_with_callback( tstate , generation ) ;
gcstate - > collecting = 0 ;
}
return n ;
@ -2041,7 +2042,7 @@ PyInit_gc(void)
return m ;
}
/* API to invoke gc.collect() from C */
/* Public API to invoke gc.collect() from C */
Py_ssize_t
PyGC_Collect ( void )
{
@ -2061,7 +2062,7 @@ PyGC_Collect(void)
PyObject * exc , * value , * tb ;
gcstate - > collecting = 1 ;
_PyErr_Fetch ( tstate , & exc , & value , & tb ) ;
n = collect_with_callback ( tstate , NUM_GENERATIONS - 1 ) ;
n = gc_ collect_with_callback( tstate , NUM_GENERATIONS - 1 ) ;
_PyErr_Restore ( tstate , exc , value , tb ) ;
gcstate - > collecting = 0 ;
}
@ -2070,19 +2071,11 @@ PyGC_Collect(void)
}
Py_ssize_t
_PyGC_CollectIfEnabled ( void )
_PyGC_CollectNoFail ( PyThreadState * tstate )
{
return PyGC_Collect ( ) ;
}
Py_ssize_t
_PyGC_CollectNoFail ( void )
{
PyThreadState * tstate = _PyThreadState_GET ( ) ;
assert ( ! _PyErr_Occurred ( tstate ) ) ;
GCState * gcstate = & tstate - > interp - > gc ;
Py_ssize_t n ;
/* Ideally, this function is only called on interpreter shutdown,
and therefore not recursively . Unfortunately , when there are daemon
@ -2091,13 +2084,13 @@ _PyGC_CollectNoFail(void)
See http : / / bugs . python . org / issue8713 # msg195178 for an example .
*/
if ( gcstate - > collecting ) {
n = 0 ;
}
else {
gcstate - > collecting = 1 ;
n = collect ( tstate , NUM_GENERATIONS - 1 , NULL , NULL , 1 ) ;
gcstate - > collecting = 0 ;
return 0 ;
}
Py_ssize_t n ;
gcstate - > collecting = 1 ;
n = gc_collect_main ( tstate , NUM_GENERATIONS - 1 , NULL , NULL , 1 ) ;
gcstate - > collecting = 0 ;
return n ;
}
@ -2240,7 +2233,7 @@ _PyObject_GC_Alloc(int use_calloc, size_t basicsize)
! _PyErr_Occurred ( tstate ) )
{
gcstate - > collecting = 1 ;
collect_generations ( tstate ) ;
gc_ collect_generations( tstate ) ;
gcstate - > collecting = 0 ;
}
PyObject * op = FROM_GC ( g ) ;