void gc_collect(void) { // start the GC gc_collect_start(); // get the registers and the sp mp_uint_t regs[10]; mp_uint_t sp = gc_helper_get_regs_and_sp(regs); // trace the stack, including the registers (since they live on the stack in this function) gc_collect_root((void**)sp, ((mp_uint_t)MP_STATE_THREAD(stack_top) - sp) / sizeof(uint32_t)); // trace root pointers from any threads #if MICROPY_PY_THREAD mp_thread_gc_others(); #endif // end the GC gc_collect_end(); }
void gc_collect(void) { /* Start the GC. */ gc_collect_start(); /* Get the registers and the sp */ mp_uint_t regs[10]; mp_uint_t sp = gc_helper_get_regs_and_sp(regs); /* Trace the stack, including the registers (since they live on the stack in this function). */ gc_collect_root((void**)sp, ((uint32_t)stack_top_p - sp) / sizeof(uint32_t)); /* Garbage collect other threads. */ mp_thread_gc_others(); /* End the GC. */ gc_collect_end(); }