mirror of
https://github.com/micropython/micropython.git
synced 2025-09-04 17:00:30 +02:00
zephyr/main: Collect registers during a MicroPython GC scan.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user