summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ports/unix/alloc.c19
-rw-r--r--ports/unix/modffi.c3
-rw-r--r--ports/unix/mpconfigport.h4
3 files changed, 4 insertions, 22 deletions
diff --git a/ports/unix/alloc.c b/ports/unix/alloc.c
index e9cf52158..c508139a8 100644
--- a/ports/unix/alloc.c
+++ b/ports/unix/alloc.c
@@ -85,25 +85,6 @@ void mp_unix_mark_exec(void) {
}
}
-#if MICROPY_FORCE_PLAT_ALLOC_EXEC
-// Provide implementation of libffi ffi_closure_* functions in terms
-// of the functions above. On a normal Linux system, this save a lot
-// of code size.
-void *ffi_closure_alloc(size_t size, void **code);
-void ffi_closure_free(void *ptr);
-
-void *ffi_closure_alloc(size_t size, void **code) {
- size_t dummy;
- mp_unix_alloc_exec(size, code, &dummy);
- return *code;
-}
-
-void ffi_closure_free(void *ptr) {
- (void)ptr;
- // TODO
-}
-#endif
-
MP_REGISTER_ROOT_POINTER(void *mmap_region_head);
#endif // MICROPY_EMIT_NATIVE || (MICROPY_PY_FFI && MICROPY_FORCE_PLAT_ALLOC_EXEC)
diff --git a/ports/unix/modffi.c b/ports/unix/modffi.c
index 51beb355f..dc3ed4dc7 100644
--- a/ports/unix/modffi.c
+++ b/ports/unix/modffi.c
@@ -334,7 +334,8 @@ static mp_obj_t mod_ffi_callback(size_t n_args, const mp_obj_t *pos_args, mp_map
const char *rettype = mp_obj_str_get_str(rettype_in);
mp_int_t nparams = MP_OBJ_SMALL_INT_VALUE(mp_obj_len_maybe(paramtypes_in));
- mp_obj_fficallback_t *o = mp_obj_malloc_var(mp_obj_fficallback_t, params, ffi_type *, nparams, &fficallback_type);
+ mp_obj_fficallback_t *o = (mp_obj_fficallback_t *)m_tracked_calloc(offsetof(mp_obj_fficallback_t, params) + sizeof(ffi_type *) * nparams, sizeof(uint8_t));
+ o->base.type = &fficallback_type;
o->clo = ffi_closure_alloc(sizeof(ffi_closure), &o->func);
diff --git a/ports/unix/mpconfigport.h b/ports/unix/mpconfigport.h
index 9c9d9228e..412754711 100644
--- a/ports/unix/mpconfigport.h
+++ b/ports/unix/mpconfigport.h
@@ -117,8 +117,8 @@ typedef long mp_off_t;
#define MICROPY_HELPER_LEXER_UNIX (1)
#define MICROPY_VFS_POSIX (1)
#define MICROPY_READER_POSIX (1)
-#ifndef MICROPY_TRACKED_ALLOC
-#define MICROPY_TRACKED_ALLOC (MICROPY_BLUETOOTH_BTSTACK)
+#if MICROPY_PY_FFI || MICROPY_BLUETOOTH_BTSTACK
+#define MICROPY_TRACKED_ALLOC (1)
#endif
// VFS stat functions should return time values relative to 1970/1/1