diff options
| author | Damien George | 2014-08-24 16:28:17 +0100 |
|---|---|---|
| committer | Damien George | 2014-08-24 16:28:17 +0100 |
| commit | 3c658a4e755a75e495303957208486e583ddb270 (patch) | |
| tree | 6418fea9bf3dcf4aed2145db94fda4c0de1d0321 /bare-arm | |
| parent | 25fc41dd316c38df3e2a6cfe4b53322d76dc92fc (diff) | |
py: Fix bug where GC collected native/viper/asm function data.
Because (for Thumb) a function pointer has the LSB set, pointers to
dynamic functions in RAM (eg native, viper or asm functions) were not
being traced by the GC. This patch is a comprehensive fix for this.
Addresses issue #820.
Diffstat (limited to 'bare-arm')
| -rw-r--r-- | bare-arm/mpconfigport.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/bare-arm/mpconfigport.h b/bare-arm/mpconfigport.h index 6577c4022..3553d337f 100644 --- a/bare-arm/mpconfigport.h +++ b/bare-arm/mpconfigport.h @@ -35,6 +35,8 @@ #define BYTES_PER_WORD (4) +#define MICROPY_MAKE_POINTER_CALLABLE(p) ((void*)((mp_uint_t)(p) | 1)) + #define UINT_FMT "%lu" #define INT_FMT "%ld" @@ -44,7 +46,7 @@ typedef void *machine_ptr_t; // must be of pointer size typedef const void *machine_const_ptr_t; // must be of pointer size // extra built in names to add to the global namespace -extern const struct _mp_obj_fun_native_t mp_builtin_open_obj; +extern const struct _mp_obj_fun_builtin_t mp_builtin_open_obj; #define MICROPY_PORT_BUILTINS \ { MP_OBJ_NEW_QSTR(MP_QSTR_open), (mp_obj_t)&mp_builtin_open_obj }, |
