diff options
author | Damien George <damien.p.george@gmail.com> | 2015-01-14 00:11:09 +0000 |
---|---|---|
committer | Damien George <damien.p.george@gmail.com> | 2015-01-14 00:11:09 +0000 |
commit | 2127e9a844ae46cb2149e7c38eb9f4345075f6e4 (patch) | |
tree | 6f2acc16b4df40c34782b262541de420a7c4115c /unix/gccollect.c | |
parent | c935d69f743af14bc1ddedf1d4123f2c6d110f05 (diff) | |
download | micropython-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.c | 3 |
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*)®s; gc_collect_root(regs_ptr, ((mp_uint_t)MP_STATE_VM(stack_top) - (mp_uint_t)®s) / sizeof(mp_uint_t)); + mp_unix_mark_exec(); gc_collect_end(); //printf("-----\n"); |