zephyr/main: Collect registers during a MicroPython GC scan.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
parent
7009c75f23
commit
fc630e70c4
|
@ -54,6 +54,7 @@ list(TRANSFORM MICROPY_SOURCE_PORT PREPEND ${MICROPY_PORT_DIR}/)
|
|||
set(MICROPY_SOURCE_SHARED
|
||||
libc/printf.c
|
||||
readline/readline.c
|
||||
runtime/gchelper_generic.c
|
||||
runtime/interrupt_char.c
|
||||
runtime/mpirq.c
|
||||
runtime/pyexec.c
|
||||
|
|
|
@ -48,6 +48,7 @@
|
|||
#include "py/gc.h"
|
||||
#include "py/mphal.h"
|
||||
#include "py/stackctrl.h"
|
||||
#include "shared/runtime/gchelper.h"
|
||||
#include "shared/runtime/pyexec.h"
|
||||
#include "shared/readline/readline.h"
|
||||
#include "extmod/modbluetooth.h"
|
||||
|
@ -180,11 +181,8 @@ soft_reset:
|
|||
}
|
||||
|
||||
void gc_collect(void) {
|
||||
// WARNING: This gc_collect implementation doesn't try to get root
|
||||
// pointers from CPU registers, and thus may function incorrectly.
|
||||
void *dummy;
|
||||
gc_collect_start();
|
||||
gc_collect_root(&dummy, ((mp_uint_t)MP_STATE_THREAD(stack_top) - (mp_uint_t)&dummy) / sizeof(mp_uint_t));
|
||||
gc_helper_collect_regs_and_stack();
|
||||
#if MICROPY_PY_THREAD
|
||||
mp_thread_gc_others();
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue