Phase FREE-FRONT-V3-1: Free route snapshot infrastructure + build fix
Summary: ======== Implemented Phase FREE-FRONT-V3 infrastructure to optimize free hotpath by: 1. Creating snapshot-based route decision table (consolidating route logic) 2. Removing redundant ENV checks from hot path 3. Preparing for future integration into hak_free_at() Key Changes: ============ 1. NEW FILES: - core/box/free_front_v3_env_box.h: Route snapshot definition & API - core/box/free_front_v3_env_box.c: Snapshot initialization & caching 2. Infrastructure Details: - FreeRouteSnapshotV3: Maps class_idx → free_route_kind for all 8 classes - Routes defined: LEGACY, TINY_V3, CORE_V6_C6, POOL_V1 - ENV-gated initialization (HAKMEM_TINY_FREE_FRONT_V3_ENABLED, default OFF) - Per-thread TLS caching to avoid repeated ENV reads 3. Design Goals: - Consolidate tiny_route_for_class() results into snapshot table - Remove C7 ULTRA / v4 / v5 / v6 ENV checks from hot path - Limit lookup (ss_fast_lookup/slab_index_for) to paths that truly need it - Clear ownership boundary: front v3 handles routing, downstream handles free 4. Phase Plan: - v3-1 ✅ COMPLETE: Infrastructure (snapshot table, ENV initialization, TLS cache) - v3-2 (INFRASTRUCTURE ONLY): Placeholder integration in hak_free_api.inc.h - v3-3 (FUTURE): Full integration + benchmark A/B to measure hotpath improvement 5. BUILD FIX: - Added missing core/box/c7_meta_used_counter_box.o to OBJS_BASE in Makefile - This symbol was referenced but not linked, causing undefined reference errors - Benchmark targets now build cleanly without LTO Status: ======= - Build: ✅ PASS (bench_allocators_hakmem builds without errors) - Integration: Currently DISABLED (default OFF, ready for v3-2 phase) - No performance impact: Infrastructure-only, hotpath unchanged Future Work: ============ - Phase v3-2: Integrate snapshot routing into hak_free_at() main path - Phase v3-3: Measure free hotpath performance improvement (target: 1-2% less branch mispredict) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
18
hakmem.d
18
hakmem.d
@ -105,14 +105,21 @@ hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \
|
||||
core/box/../front/../box/smallobject_hotbox_v3_env_box.h \
|
||||
core/box/../front/../box/smallobject_hotbox_v4_box.h \
|
||||
core/box/../front/../box/smallobject_hotbox_v5_box.h \
|
||||
core/box/../front/../box/smallobject_core_v6_box.h \
|
||||
core/box/../front/../box/tiny_c7_ultra_box.h \
|
||||
core/box/../front/../box/tiny_c7_ultra_segment_box.h \
|
||||
core/box/../front/../box/tiny_c6_ultra_free_box.h \
|
||||
core/box/../front/../box/tiny_c6_ultra_free_env_box.h \
|
||||
core/box/../front/../box/tiny_ultra_classes_box.h \
|
||||
core/box/../front/../box/tiny_legacy_fallback_box.h \
|
||||
core/box/../front/../box/tiny_front_v3_env_box.h \
|
||||
core/box/../front/../box/free_path_stats_box.h \
|
||||
core/box/../front/../box/tiny_front_hot_box.h \
|
||||
core/box/../front/../box/tiny_ptr_convert_box.h \
|
||||
core/box/../front/../box/tiny_route_env_box.h \
|
||||
core/box/../front/../box/smallobject_hotbox_v4_env_box.h \
|
||||
core/box/../front/../box/smallobject_v5_env_box.h \
|
||||
core/box/../front/../box/tiny_front_stats_box.h \
|
||||
core/box/../front/../box/free_path_stats_box.h \
|
||||
core/box/tiny_alloc_gate_box.h core/box/tiny_route_box.h \
|
||||
core/box/tiny_front_config_box.h core/box/wrapper_env_box.h \
|
||||
core/box/../hakmem_internal.h
|
||||
@ -295,14 +302,21 @@ core/box/../front/../box/../superslab/superslab_inline.h:
|
||||
core/box/../front/../box/smallobject_hotbox_v3_env_box.h:
|
||||
core/box/../front/../box/smallobject_hotbox_v4_box.h:
|
||||
core/box/../front/../box/smallobject_hotbox_v5_box.h:
|
||||
core/box/../front/../box/smallobject_core_v6_box.h:
|
||||
core/box/../front/../box/tiny_c7_ultra_box.h:
|
||||
core/box/../front/../box/tiny_c7_ultra_segment_box.h:
|
||||
core/box/../front/../box/tiny_c6_ultra_free_box.h:
|
||||
core/box/../front/../box/tiny_c6_ultra_free_env_box.h:
|
||||
core/box/../front/../box/tiny_ultra_classes_box.h:
|
||||
core/box/../front/../box/tiny_legacy_fallback_box.h:
|
||||
core/box/../front/../box/tiny_front_v3_env_box.h:
|
||||
core/box/../front/../box/free_path_stats_box.h:
|
||||
core/box/../front/../box/tiny_front_hot_box.h:
|
||||
core/box/../front/../box/tiny_ptr_convert_box.h:
|
||||
core/box/../front/../box/tiny_route_env_box.h:
|
||||
core/box/../front/../box/smallobject_hotbox_v4_env_box.h:
|
||||
core/box/../front/../box/smallobject_v5_env_box.h:
|
||||
core/box/../front/../box/tiny_front_stats_box.h:
|
||||
core/box/../front/../box/free_path_stats_box.h:
|
||||
core/box/tiny_alloc_gate_box.h:
|
||||
core/box/tiny_route_box.h:
|
||||
core/box/tiny_front_config_box.h:
|
||||
|
||||
Reference in New Issue
Block a user