mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-06-02 18:24:17 +03:00
The arena_inlines_a.h / arena_inlines_b.h split, and the parallel
jemalloc_internal_inlines_b.h file that defined arena_choose() between
them, all existed to manage one ordering constraint: arena_choose()
had to be defined before arena_choose_maybe_huge() (which calls it),
but had to be defined after the tsd/tcache inlines it depends on.
Three files, one staged include order, no real semantic boundary.
After the malloc_dispatch refactor moved the heaviest tcache-pulling
inlines (the malloc/dalloc routing) out of arena_inlines_b.h, the
arena-side inlines that remain all belong together. Merge them into
a single arena_inlines.h that:
- explicitly includes jemalloc_internal_inlines_a.h (for tsd
accessors) and tcache.h (for tcache_arena_associate /
reassociate externs) -- both were previously pulled
transitively;
- orders functions so each caller appears after its callee
(cheap accessors -> arena_choose family -> the rest), so no
forward references are needed;
- drops the load-bearing-split comment, which is no longer true.
All consumers that included any of the three old headers now include
arena_inlines.h. background_thread_inlines.h now pulls a heavier set
of transitive includes (prof.h, large.h, mutex.h, ...) than when it
only needed cheap accessors; this is acceptable because every TU that
includes background_thread_inlines.h already pulls those headers via
other paths.
|
||
|---|---|---|
| .. | ||
| analyze | ||
| include/test | ||
| integration | ||
| src | ||
| stress | ||
| unit | ||
| test.sh.in | ||