py, unix: Trace root pointers with native emitter under unix port.

Native code has GC-heap pointers in it so it must be scanned.  But on
unix port memory for native functions is mmap'd, and so it must have
explicit code to scan it for root pointers.
This commit is contained in:
Damien George
2015-01-14 00:11:09 +00:00
parent c935d69f74
commit 2127e9a844
5 changed files with 45 additions and 4 deletions

View File

@@ -31,8 +31,6 @@
#if MICROPY_ENABLE_GC
extern char *stack_top;
#if MICROPY_GCREGS_SETJMP
#include <setjmp.h>
@@ -133,6 +131,7 @@ void gc_collect(void) {
// GC stack (and regs because we captured them)
void **regs_ptr = (void**)(void*)&regs;
gc_collect_root(regs_ptr, ((mp_uint_t)MP_STATE_VM(stack_top) - (mp_uint_t)&regs) / sizeof(mp_uint_t));
mp_unix_mark_exec();
gc_collect_end();
//printf("-----\n");