|
|
@ -231,7 +231,14 @@ STATIC void gc_deal_with_stack_overflow(void) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
#if MICROPY_PY_GC_COLLECT_RETVAL |
|
|
|
uint gc_collected; |
|
|
|
#endif |
|
|
|
|
|
|
|
STATIC void gc_sweep(void) { |
|
|
|
#if MICROPY_PY_GC_COLLECT_RETVAL |
|
|
|
gc_collected = 0; |
|
|
|
#endif |
|
|
|
// free unmarked heads and their tails
|
|
|
|
int free_tail = 0; |
|
|
|
for (machine_uint_t block = 0; block < gc_alloc_table_byte_len * BLOCKS_PER_ATB; block++) { |
|
|
@ -254,6 +261,9 @@ STATIC void gc_sweep(void) { |
|
|
|
} |
|
|
|
#endif |
|
|
|
free_tail = 1; |
|
|
|
#if MICROPY_PY_GC_COLLECT_RETVAL |
|
|
|
gc_collected++; |
|
|
|
#endif |
|
|
|
// fall through to free the head
|
|
|
|
|
|
|
|
case AT_TAIL: |
|
|
|