@@ -1176,8 +1176,9 @@ handle_resurrected_objects(PyGC_Head *unreachable, PyGC_Head* still_unreachable,
1176
1176
/* This is the main function. Read this to understand how the
1177
1177
* collection process works. */
1178
1178
static Py_ssize_t
1179
- collect (PyThreadState * tstate , int generation ,
1180
- Py_ssize_t * n_collected , Py_ssize_t * n_uncollectable , int nofail )
1179
+ gc_collect_main (PyThreadState * tstate , int generation ,
1180
+ Py_ssize_t * n_collected , Py_ssize_t * n_uncollectable ,
1181
+ int nofail )
1181
1182
{
1182
1183
int i ;
1183
1184
Py_ssize_t m = 0 ; /* # objects collected */
@@ -1395,19 +1396,19 @@ invoke_gc_callback(PyThreadState *tstate, const char *phase,
1395
1396
* progress callbacks.
1396
1397
*/
1397
1398
static Py_ssize_t
1398
- collect_with_callback (PyThreadState * tstate , int generation )
1399
+ gc_collect_with_callback (PyThreadState * tstate , int generation )
1399
1400
{
1400
1401
assert (!_PyErr_Occurred (tstate ));
1401
1402
Py_ssize_t result , collected , uncollectable ;
1402
1403
invoke_gc_callback (tstate , "start" , generation , 0 , 0 );
1403
- result = collect (tstate , generation , & collected , & uncollectable , 0 );
1404
+ result = gc_collect_main (tstate , generation , & collected , & uncollectable , 0 );
1404
1405
invoke_gc_callback (tstate , "stop" , generation , collected , uncollectable );
1405
1406
assert (!_PyErr_Occurred (tstate ));
1406
1407
return result ;
1407
1408
}
1408
1409
1409
1410
static Py_ssize_t
1410
- collect_generations (PyThreadState * tstate )
1411
+ gc_collect_generations (PyThreadState * tstate )
1411
1412
{
1412
1413
GCState * gcstate = & tstate -> interp -> gc ;
1413
1414
/* Find the oldest generation (highest numbered) where the count
@@ -1455,7 +1456,7 @@ collect_generations(PyThreadState *tstate)
1455
1456
if (i == NUM_GENERATIONS - 1
1456
1457
&& gcstate -> long_lived_pending < gcstate -> long_lived_total / 4 )
1457
1458
continue ;
1458
- n = collect_with_callback (tstate , i );
1459
+ n = gc_collect_with_callback (tstate , i );
1459
1460
break ;
1460
1461
}
1461
1462
}
@@ -1541,7 +1542,7 @@ gc_collect_impl(PyObject *module, int generation)
1541
1542
}
1542
1543
else {
1543
1544
gcstate -> collecting = 1 ;
1544
- n = collect_with_callback (tstate , generation );
1545
+ n = gc_collect_with_callback (tstate , generation );
1545
1546
gcstate -> collecting = 0 ;
1546
1547
}
1547
1548
return n ;
@@ -2041,7 +2042,7 @@ PyInit_gc(void)
2041
2042
return m ;
2042
2043
}
2043
2044
2044
- /* API to invoke gc.collect() from C */
2045
+ /* Public API to invoke gc.collect() from C */
2045
2046
Py_ssize_t
2046
2047
PyGC_Collect (void )
2047
2048
{
@@ -2061,7 +2062,7 @@ PyGC_Collect(void)
2061
2062
PyObject * exc , * value , * tb ;
2062
2063
gcstate -> collecting = 1 ;
2063
2064
_PyErr_Fetch (tstate , & exc , & value , & tb );
2064
- n = collect_with_callback (tstate , NUM_GENERATIONS - 1 );
2065
+ n = gc_collect_with_callback (tstate , NUM_GENERATIONS - 1 );
2065
2066
_PyErr_Restore (tstate , exc , value , tb );
2066
2067
gcstate -> collecting = 0 ;
2067
2068
}
@@ -2070,19 +2071,11 @@ PyGC_Collect(void)
2070
2071
}
2071
2072
2072
2073
Py_ssize_t
2073
- _PyGC_CollectIfEnabled ( void )
2074
+ _PyGC_CollectNoFail ( PyThreadState * tstate )
2074
2075
{
2075
- return PyGC_Collect ();
2076
- }
2077
-
2078
- Py_ssize_t
2079
- _PyGC_CollectNoFail (void )
2080
- {
2081
- PyThreadState * tstate = _PyThreadState_GET ();
2082
2076
assert (!_PyErr_Occurred (tstate ));
2083
2077
2084
2078
GCState * gcstate = & tstate -> interp -> gc ;
2085
- Py_ssize_t n ;
2086
2079
2087
2080
/* Ideally, this function is only called on interpreter shutdown,
2088
2081
and therefore not recursively. Unfortunately, when there are daemon
@@ -2091,13 +2084,13 @@ _PyGC_CollectNoFail(void)
2091
2084
See http://bugs.python.org/issue8713#msg195178 for an example.
2092
2085
*/
2093
2086
if (gcstate -> collecting ) {
2094
- n = 0 ;
2095
- }
2096
- else {
2097
- gcstate -> collecting = 1 ;
2098
- n = collect (tstate , NUM_GENERATIONS - 1 , NULL , NULL , 1 );
2099
- gcstate -> collecting = 0 ;
2087
+ return 0 ;
2100
2088
}
2089
+
2090
+ Py_ssize_t n ;
2091
+ gcstate -> collecting = 1 ;
2092
+ n = gc_collect_main (tstate , NUM_GENERATIONS - 1 , NULL , NULL , 1 );
2093
+ gcstate -> collecting = 0 ;
2101
2094
return n ;
2102
2095
}
2103
2096
@@ -2240,7 +2233,7 @@ _PyObject_GC_Alloc(int use_calloc, size_t basicsize)
2240
2233
!_PyErr_Occurred (tstate ))
2241
2234
{
2242
2235
gcstate -> collecting = 1 ;
2243
- collect_generations (tstate );
2236
+ gc_collect_generations (tstate );
2244
2237
gcstate -> collecting = 0 ;
2245
2238
}
2246
2239
PyObject * op = FROM_GC (g );
0 commit comments