py: Put mp_sys_path, mp_sys_argv and gc_collected in mp_state_ctx_t.
Without mp_sys_path and mp_sys_argv in the root pointer section of the
state, their memory was being incorrectly collected by GC.
diff --git a/py/gc.c b/py/gc.c
index 121e50b..86db78f 100644
--- a/py/gc.c
+++ b/py/gc.c
@@ -222,13 +222,9 @@
}
}
-#if MICROPY_PY_GC_COLLECT_RETVAL
-uint gc_collected;
-#endif
-
STATIC void gc_sweep(void) {
#if MICROPY_PY_GC_COLLECT_RETVAL
- gc_collected = 0;
+ MP_STATE_MEM(gc_collected) = 0;
#endif
// free unmarked heads and their tails
int free_tail = 0;
@@ -253,7 +249,7 @@
#endif
free_tail = 1;
#if MICROPY_PY_GC_COLLECT_RETVAL
- gc_collected++;
+ MP_STATE_MEM(gc_collected)++;
#endif
// fall through to free the head