mirror of https://github.com/python/cpython
acf3bcc886
* 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 |