jemalloc/include
Slobodan Predolac ab4c178444 Consolidate prof_* and tcache_* header splits
Each of these components had a four-way split (_types, _structs,
_externs, _inlines) that dates back to the old "include each section
multiple times from a master file" pattern. With Step 2's edata <->
prof_types decoupling, merging _types + _structs + _externs into one
header per component no longer risks recreating an include cycle.

- prof.h replaces prof_types.h + prof_structs.h + prof_externs.h.
- tcache.h replaces tcache_types.h + tcache_structs.h + tcache_externs.h.

prof_inlines.h and tcache_inlines.h are kept separate: prof_inlines.h
sits at the bottom of the dependency layering, and tcache_inlines.h's
include of arena_externs.h is the asymmetric cycle-breaker that keeps
the arena<->tcache symbol cycle from becoming an include cycle.

Two surprises required adjustments beyond a straight concatenation:

1. te_prof_sample_event_lookahead was a JEMALLOC_ALWAYS_INLINE function
   defined in prof_externs.h, but its body calls tsd_thread_allocated_*
   accessors that only exist after tsd inlines are loaded. The original
   layering hid this because prof_externs.h was only included near the
   bottom of jemalloc_internal_includes.h. After consolidation,
   tsd_internals.h's includes pull prof.h in earlier, exposing the
   ordering dependency. Moved the inline to prof_inlines.h (where
   inline definitions belong anyway) and left only the related extern
   in prof.h.

2. base.h was included from prof_externs.h and tcache_externs.h purely
   for base_t * pointer arguments on a couple of declarations. Carrying
   that include into the merged prof.h / tcache.h would pull ehooks.h
   (-> tsd.h) into tsd_internals.h before tsd_internals.h finishes
   declaring its tsd accessors. Replaced with a forward declaration of
   base_t in each merged file.

Similarly, tsd_internals.h's prior #include of prof_types.h becomes a
forward decl of prof_tdata_t (the only prof symbol it references, and
only as a pointer), and large.h needs a forward decl of prof_info_t
because large.h is loaded before prof.h in the new master ordering.

No inline / static qualifiers are dropped; only the one inline moves
files. #ifdef blocks (JEMALLOC_PROF, JEMALLOC_PROF_LIBGCC,
JEMALLOC_PROF_GCC, JEMALLOC_DEBUG) are kept intact.
2026-05-29 08:53:41 -07:00
..
jemalloc Consolidate prof_* and tcache_* header splits 2026-05-29 08:53:41 -07:00
msvc_compat Reformat the codebase with the clang-format 18. 2026-03-10 18:14:33 -07:00