summaryrefslogtreecommitdiffstatshomepage
path: root/unix/gccollect.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2015-01-14 00:11:09 +0000
committerDamien George <damien.p.george@gmail.com>2015-01-14 00:11:09 +0000
commit2127e9a844ae46cb2149e7c38eb9f4345075f6e4 (patch)
tree6f2acc16b4df40c34782b262541de420a7c4115c /unix/gccollect.c
parentc935d69f743af14bc1ddedf1d4123f2c6d110f05 (diff)
downloadmicropython-2127e9a844ae46cb2149e7c38eb9f4345075f6e4.tar.gz
micropython-2127e9a844ae46cb2149e7c38eb9f4345075f6e4.zip
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.
Diffstat (limited to 'unix/gccollect.c')
-rw-r--r--unix/gccollect.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/unix/gccollect.c b/unix/gccollect.c
index 16bfc3b486..52dac01bd2 100644
--- a/unix/gccollect.c
+++ b/unix/gccollect.c
@@ -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");