From 3c658a4e755a75e495303957208486e583ddb270 Mon Sep 17 00:00:00 2001 From: Damien George Date: Sun, 24 Aug 2014 16:28:17 +0100 Subject: 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. --- qemu-arm/mpconfigport.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'qemu-arm') diff --git a/qemu-arm/mpconfigport.h b/qemu-arm/mpconfigport.h index 3fde1aa20..e3c0969a5 100644 --- a/qemu-arm/mpconfigport.h +++ b/qemu-arm/mpconfigport.h @@ -20,6 +20,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" @@ -29,7 +31,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 }, -- cgit v1.2.3