mirror of
https://github.com/python/cpython.git
synced 2025-11-11 11:01:39 +00:00
* gh-112532: Use separate mimalloc heaps for GC objects In `--disable-gil` builds, we now use four separate heaps in anticipation of using mimalloc to find GC objects when the GIL is disabled. To support this, we also make a few changes to mimalloc: * `mi_heap_t` and `mi_tld_t` initialization is split from allocation. This allows us to have a `mi_tld_t` per-`PyThreadState`, which is important to keep interpreter isolation, since the same OS thread may run in multiple interpreters (using different PyThreadStates.) * Heap abandoning (mi_heap_collect_ex) can now be called from a different thread than the one that created the heap. This is necessary because we may clear and delete the containing PyThreadStates from a different thread during finalization and after fork(). * Use enum instead of defines and guard mimalloc includes. * The enum typedef will be convenient for future PRs that use the type. * Guarding the mimalloc includes allows us to unconditionally include pycore_mimalloc.h from other header files that rely on things like `struct _mimalloc_thread_state`. * Only define _mimalloc_thread_state in Py_GIL_DISABLED builds |
||
|---|---|---|
| .. | ||
| prim | ||
| alloc-aligned.c | ||
| alloc-override.c | ||
| alloc-posix.c | ||
| alloc.c | ||
| arena.c | ||
| bitmap.c | ||
| bitmap.h | ||
| heap.c | ||
| init.c | ||
| options.c | ||
| os.c | ||
| page-queue.c | ||
| page.c | ||
| random.c | ||
| segment-map.c | ||
| segment.c | ||
| static.c | ||
| stats.c | ||