unix/alloc: Don't trace executable memory for GC pointers.

This tracing was originally needed for three reasons:

1. To trace object/raw-code pointers embedded in native code, eg from
   @micropython.native functions.

2. To trace pointers to BSS/rodata from relocated viper code.

3. For libffi tracing.

The tracing in point 1 was made unnecessary long ago in commit
7d4b6cc868ebf0e1cc5dfe5276b22e1b857c411b (see also commit
bbccb0f630dc9b2769a891c2c28fbbe810284225 which removed scanning of native
code on the esp8266 port).

Since the previous commit, point 2 is no longer needed.

For point 3, this was made unnecessary in the recent commit
97966254577167f4c50200af1af89109a275da1c.

Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
Damien George 2024-09-25 14:07:24 +10:00
parent 5b22bde044
commit 36fe9bbf00
3 changed files with 0 additions and 11 deletions

View File

@ -31,7 +31,6 @@
#include <sys/mman.h>
#include "py/mpstate.h"
#include "py/gc.h"
#if MICROPY_EMIT_NATIVE || (MICROPY_PY_FFI && MICROPY_FORCE_PLAT_ALLOC_EXEC)
@ -79,12 +78,6 @@ void mp_unix_free_exec(void *ptr, size_t size) {
}
}
void mp_unix_mark_exec(void) {
for (mmap_region_t *rg = MP_STATE_VM(mmap_region_head); rg != NULL; rg = rg->next) {
gc_collect_root(rg->ptr, rg->len / sizeof(mp_uint_t));
}
}
MP_REGISTER_ROOT_POINTER(void *mmap_region_head);
#endif // MICROPY_EMIT_NATIVE || (MICROPY_PY_FFI && MICROPY_FORCE_PLAT_ALLOC_EXEC)

View File

@ -39,9 +39,6 @@ void gc_collect(void) {
#if MICROPY_PY_THREAD
mp_thread_gc_others();
#endif
#if MICROPY_EMIT_NATIVE
mp_unix_mark_exec();
#endif
gc_collect_end();
}

View File

@ -168,7 +168,6 @@ extern const struct _mp_print_t mp_stderr_print;
// For the native emitter configure how to mark a region as executable.
void mp_unix_alloc_exec(size_t min_size, void **ptr, size_t *size);
void mp_unix_free_exec(void *ptr, size_t size);
void mp_unix_mark_exec(void);
#define MP_PLAT_ALLOC_EXEC(min_size, ptr, size) mp_unix_alloc_exec(min_size, ptr, size)
#define MP_PLAT_FREE_EXEC(ptr, size) mp_unix_free_exec(ptr, size)
#ifndef MICROPY_FORCE_PLAT_ALLOC_EXEC