@@ -1602,8 +1602,6 @@ record_deallocation(PyThreadState *tstate)
1602
1602
}
1603
1603
}
1604
1604
1605
- static bool freeze_used ;
1606
-
1607
1605
static void
1608
1606
gc_collect_internal (PyInterpreterState * interp , struct collection_state * state , int generation )
1609
1607
{
@@ -1633,7 +1631,7 @@ gc_collect_internal(PyInterpreterState *interp, struct collection_state *state,
1633
1631
process_delayed_frees (interp , state );
1634
1632
1635
1633
#if 1
1636
- if (!freeze_used ) {
1634
+ if (!state -> gcstate -> freeze_used ) {
1637
1635
// Mark objects reachable from known roots as "alive". These will
1638
1636
// be ignored for rest of the GC pass.
1639
1637
int err = mark_root_reachable (interp , state );
@@ -2000,7 +1998,8 @@ _PyGC_Freeze(PyInterpreterState *interp)
2000
1998
{
2001
1999
struct visitor_args args ;
2002
2000
_PyEval_StopTheWorld (interp );
2003
- freeze_used = true;
2001
+ GCState * gcstate = get_gc_state ();
2002
+ gcstate -> freeze_used = 1 ;
2004
2003
gc_visit_heaps (interp , & visit_freeze , & args );
2005
2004
_PyEval_StartTheWorld (interp );
2006
2005
}
@@ -2021,8 +2020,9 @@ _PyGC_Unfreeze(PyInterpreterState *interp)
2021
2020
{
2022
2021
struct visitor_args args ;
2023
2022
_PyEval_StopTheWorld (interp );
2023
+ GCState * gcstate = get_gc_state ();
2024
+ gcstate -> freeze_used = 0 ;
2024
2025
gc_visit_heaps (interp , & visit_unfreeze , & args );
2025
- freeze_used = false;
2026
2026
_PyEval_StartTheWorld (interp );
2027
2027
}
2028
2028
0 commit comments