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>
325 lines
14 KiB
Makefile
325 lines
14 KiB
Makefile
hakmem.o: core/hakmem.c core/hakmem.h core/hakmem_build_flags.h \
|
|
core/hakmem_config.h core/hakmem_features.h core/hakmem_internal.h \
|
|
core/hakmem_sys.h core/hakmem_whale.h core/box/ptr_type_box.h \
|
|
core/hakmem_bigcache.h core/hakmem_pool.h \
|
|
core/box/hak_lane_classify.inc.h core/hakmem_l25_pool.h \
|
|
core/hakmem_policy.h core/hakmem_learner.h core/hakmem_size_hist.h \
|
|
core/hakmem_ace.h core/hakmem_site_rules.h core/hakmem_tiny.h \
|
|
core/hakmem_trace.h core/hakmem_tiny_mini_mag.h \
|
|
core/hakmem_tiny_superslab.h core/superslab/superslab_types.h \
|
|
core/hakmem_tiny_superslab_constants.h core/superslab/superslab_inline.h \
|
|
core/superslab/superslab_types.h core/superslab/../tiny_box_geometry.h \
|
|
core/superslab/../hakmem_tiny_superslab_constants.h \
|
|
core/superslab/../hakmem_tiny_config.h \
|
|
core/superslab/../hakmem_super_registry.h \
|
|
core/superslab/../hakmem_tiny_superslab.h \
|
|
core/superslab/../box/ss_addr_map_box.h \
|
|
core/superslab/../box/../hakmem_build_flags.h \
|
|
core/superslab/../box/super_reg_box.h core/tiny_debug_ring.h \
|
|
core/tiny_remote.h core/hakmem_tiny_superslab_constants.h \
|
|
core/tiny_fastcache.h core/hakmem_env_cache.h \
|
|
core/box/tiny_next_ptr_box.h core/hakmem_tiny_config.h \
|
|
core/tiny_nextptr.h core/tiny_region_id.h core/tiny_box_geometry.h \
|
|
core/ptr_track.h core/tiny_debug_api.h core/box/tiny_layout_box.h \
|
|
core/box/../hakmem_tiny_config.h core/box/tiny_header_box.h \
|
|
core/box/../hakmem_build_flags.h core/box/tiny_layout_box.h \
|
|
core/box/../tiny_region_id.h core/hakmem_elo.h core/hakmem_ace_stats.h \
|
|
core/hakmem_batch.h core/hakmem_evo.h core/hakmem_debug.h \
|
|
core/hakmem_prof.h core/hakmem_syscall.h core/hakmem_ace_controller.h \
|
|
core/hakmem_ace_metrics.h core/hakmem_ace_ucb1.h \
|
|
core/box/bench_fast_box.h core/ptr_trace.h core/hakmem_trace_master.h \
|
|
core/hakmem_stats_master.h core/box/hak_kpi_util.inc.h \
|
|
core/box/hak_core_init.inc.h core/hakmem_phase7_config.h \
|
|
core/box/libm_reloc_guard_box.h core/box/init_bench_preset_box.h \
|
|
core/box/init_diag_box.h core/box/init_env_box.h \
|
|
core/box/../tiny_destructors.h core/box/../hakmem_tiny.h \
|
|
core/box/ss_hot_prewarm_box.h core/box/hak_alloc_api.inc.h \
|
|
core/box/../hakmem_tiny.h core/box/../hakmem_pool.h \
|
|
core/box/../hakmem_smallmid.h core/box/tiny_heap_env_box.h \
|
|
core/box/c7_hotpath_env_box.h core/box/tiny_heap_box.h \
|
|
core/box/../hakmem_tiny_superslab.h \
|
|
core/box/../superslab/superslab_inline.h core/box/../tiny_tls.h \
|
|
core/box/../hakmem_tiny_superslab.h core/box/../tiny_box_geometry.h \
|
|
core/box/tiny_stats_box.h core/box/tiny_c7_hotbox.h \
|
|
core/box/mid_large_config_box.h core/box/../hakmem_config.h \
|
|
core/box/../hakmem_features.h core/box/hak_free_api.inc.h \
|
|
core/hakmem_tiny_superslab.h core/box/../hakmem_trace_master.h \
|
|
core/box/front_gate_v2.h core/box/external_guard_box.h \
|
|
core/box/../hakmem_stats_master.h core/box/ss_slab_meta_box.h \
|
|
core/box/../superslab/superslab_types.h core/box/slab_freelist_atomic.h \
|
|
core/box/fg_tiny_gate_box.h core/box/tiny_free_gate_box.h \
|
|
core/box/ptr_type_box.h core/box/ptr_conversion_box.h \
|
|
core/box/tiny_ptr_bridge_box.h \
|
|
core/box/../hakmem_tiny_superslab_internal.h \
|
|
core/box/../hakmem_build_flags.h core/box/../box/ss_hot_cold_box.h \
|
|
core/box/../box/../superslab/superslab_types.h \
|
|
core/box/../box/ss_allocation_box.h core/box/../hakmem_debug_master.h \
|
|
core/box/../hakmem_tiny_config.h core/box/../hakmem_shared_pool.h \
|
|
core/box/../superslab/superslab_types.h core/box/../hakmem_internal.h \
|
|
core/box/../tiny_region_id.h core/box/../hakmem_tiny_integrity.h \
|
|
core/box/../box/slab_freelist_atomic.h \
|
|
core/box/../tiny_free_fast_v2.inc.h core/box/../box/tls_sll_box.h \
|
|
core/box/../box/../hakmem_internal.h \
|
|
core/box/../box/../hakmem_tiny_config.h \
|
|
core/box/../box/../hakmem_build_flags.h \
|
|
core/box/../box/../hakmem_debug_master.h \
|
|
core/box/../box/../tiny_remote.h core/box/../box/../tiny_region_id.h \
|
|
core/box/../box/../hakmem_tiny_integrity.h \
|
|
core/box/../box/../ptr_track.h core/box/../box/../tiny_debug_ring.h \
|
|
core/box/../box/ss_addr_map_box.h \
|
|
core/box/../box/../superslab/superslab_inline.h \
|
|
core/box/../box/tiny_ptr_bridge_box.h core/box/../box/tiny_header_box.h \
|
|
core/box/../box/tls_sll_drain_box.h core/box/../box/tls_sll_box.h \
|
|
core/box/../box/slab_recycling_box.h \
|
|
core/box/../box/../hakmem_tiny_superslab.h \
|
|
core/box/../box/ss_hot_cold_box.h core/box/../box/ss_release_guard_box.h \
|
|
core/box/../box/../hakmem_tiny_superslab_internal.h \
|
|
core/box/../box/free_local_box.h core/box/../box/ptr_type_box.h \
|
|
core/box/../box/free_publish_box.h core/hakmem_tiny.h \
|
|
core/tiny_region_id.h core/box/../hakmem_env_cache.h \
|
|
core/box/../superslab/superslab_inline.h \
|
|
core/box/../box/ss_slab_meta_box.h core/box/../box/free_remote_box.h \
|
|
core/hakmem_tiny_integrity.h core/box/../box/ptr_conversion_box.h \
|
|
core/box/hak_wrappers.inc.h core/box/front_gate_classifier.h \
|
|
core/box/../front/malloc_tiny_fast.h \
|
|
core/box/../front/../hakmem_build_flags.h \
|
|
core/box/../front/../hakmem_tiny_config.h \
|
|
core/box/../front/../superslab/superslab_inline.h \
|
|
core/box/../front/../box/ss_slab_meta_box.h \
|
|
core/box/../front/tiny_unified_cache.h \
|
|
core/box/../front/../box/ptr_type_box.h \
|
|
core/box/../front/../box/tiny_front_config_box.h \
|
|
core/box/../front/../box/../hakmem_build_flags.h \
|
|
core/box/../front/../tiny_region_id.h core/box/../front/../hakmem_tiny.h \
|
|
core/box/../front/../box/tiny_front_hot_box.h \
|
|
core/box/../front/../box/../hakmem_tiny_config.h \
|
|
core/box/../front/../box/../tiny_region_id.h \
|
|
core/box/../front/../box/../front/tiny_unified_cache.h \
|
|
core/box/../front/../box/tiny_layout_box.h \
|
|
core/box/../front/../box/tiny_front_cold_box.h \
|
|
core/box/../front/../box/tiny_hotheap_v2_box.h \
|
|
core/box/../front/../box/smallobject_hotbox_v3_box.h \
|
|
core/box/../front/../box/tiny_geometry_box.h \
|
|
core/box/../front/../box/../hakmem_tiny_superslab_internal.h \
|
|
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/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
|
|
core/hakmem.h:
|
|
core/hakmem_build_flags.h:
|
|
core/hakmem_config.h:
|
|
core/hakmem_features.h:
|
|
core/hakmem_internal.h:
|
|
core/hakmem_sys.h:
|
|
core/hakmem_whale.h:
|
|
core/box/ptr_type_box.h:
|
|
core/hakmem_bigcache.h:
|
|
core/hakmem_pool.h:
|
|
core/box/hak_lane_classify.inc.h:
|
|
core/hakmem_l25_pool.h:
|
|
core/hakmem_policy.h:
|
|
core/hakmem_learner.h:
|
|
core/hakmem_size_hist.h:
|
|
core/hakmem_ace.h:
|
|
core/hakmem_site_rules.h:
|
|
core/hakmem_tiny.h:
|
|
core/hakmem_trace.h:
|
|
core/hakmem_tiny_mini_mag.h:
|
|
core/hakmem_tiny_superslab.h:
|
|
core/superslab/superslab_types.h:
|
|
core/hakmem_tiny_superslab_constants.h:
|
|
core/superslab/superslab_inline.h:
|
|
core/superslab/superslab_types.h:
|
|
core/superslab/../tiny_box_geometry.h:
|
|
core/superslab/../hakmem_tiny_superslab_constants.h:
|
|
core/superslab/../hakmem_tiny_config.h:
|
|
core/superslab/../hakmem_super_registry.h:
|
|
core/superslab/../hakmem_tiny_superslab.h:
|
|
core/superslab/../box/ss_addr_map_box.h:
|
|
core/superslab/../box/../hakmem_build_flags.h:
|
|
core/superslab/../box/super_reg_box.h:
|
|
core/tiny_debug_ring.h:
|
|
core/tiny_remote.h:
|
|
core/hakmem_tiny_superslab_constants.h:
|
|
core/tiny_fastcache.h:
|
|
core/hakmem_env_cache.h:
|
|
core/box/tiny_next_ptr_box.h:
|
|
core/hakmem_tiny_config.h:
|
|
core/tiny_nextptr.h:
|
|
core/tiny_region_id.h:
|
|
core/tiny_box_geometry.h:
|
|
core/ptr_track.h:
|
|
core/tiny_debug_api.h:
|
|
core/box/tiny_layout_box.h:
|
|
core/box/../hakmem_tiny_config.h:
|
|
core/box/tiny_header_box.h:
|
|
core/box/../hakmem_build_flags.h:
|
|
core/box/tiny_layout_box.h:
|
|
core/box/../tiny_region_id.h:
|
|
core/hakmem_elo.h:
|
|
core/hakmem_ace_stats.h:
|
|
core/hakmem_batch.h:
|
|
core/hakmem_evo.h:
|
|
core/hakmem_debug.h:
|
|
core/hakmem_prof.h:
|
|
core/hakmem_syscall.h:
|
|
core/hakmem_ace_controller.h:
|
|
core/hakmem_ace_metrics.h:
|
|
core/hakmem_ace_ucb1.h:
|
|
core/box/bench_fast_box.h:
|
|
core/ptr_trace.h:
|
|
core/hakmem_trace_master.h:
|
|
core/hakmem_stats_master.h:
|
|
core/box/hak_kpi_util.inc.h:
|
|
core/box/hak_core_init.inc.h:
|
|
core/hakmem_phase7_config.h:
|
|
core/box/libm_reloc_guard_box.h:
|
|
core/box/init_bench_preset_box.h:
|
|
core/box/init_diag_box.h:
|
|
core/box/init_env_box.h:
|
|
core/box/../tiny_destructors.h:
|
|
core/box/../hakmem_tiny.h:
|
|
core/box/ss_hot_prewarm_box.h:
|
|
core/box/hak_alloc_api.inc.h:
|
|
core/box/../hakmem_tiny.h:
|
|
core/box/../hakmem_pool.h:
|
|
core/box/../hakmem_smallmid.h:
|
|
core/box/tiny_heap_env_box.h:
|
|
core/box/c7_hotpath_env_box.h:
|
|
core/box/tiny_heap_box.h:
|
|
core/box/../hakmem_tiny_superslab.h:
|
|
core/box/../superslab/superslab_inline.h:
|
|
core/box/../tiny_tls.h:
|
|
core/box/../hakmem_tiny_superslab.h:
|
|
core/box/../tiny_box_geometry.h:
|
|
core/box/tiny_stats_box.h:
|
|
core/box/tiny_c7_hotbox.h:
|
|
core/box/mid_large_config_box.h:
|
|
core/box/../hakmem_config.h:
|
|
core/box/../hakmem_features.h:
|
|
core/box/hak_free_api.inc.h:
|
|
core/hakmem_tiny_superslab.h:
|
|
core/box/../hakmem_trace_master.h:
|
|
core/box/front_gate_v2.h:
|
|
core/box/external_guard_box.h:
|
|
core/box/../hakmem_stats_master.h:
|
|
core/box/ss_slab_meta_box.h:
|
|
core/box/../superslab/superslab_types.h:
|
|
core/box/slab_freelist_atomic.h:
|
|
core/box/fg_tiny_gate_box.h:
|
|
core/box/tiny_free_gate_box.h:
|
|
core/box/ptr_type_box.h:
|
|
core/box/ptr_conversion_box.h:
|
|
core/box/tiny_ptr_bridge_box.h:
|
|
core/box/../hakmem_tiny_superslab_internal.h:
|
|
core/box/../hakmem_build_flags.h:
|
|
core/box/../box/ss_hot_cold_box.h:
|
|
core/box/../box/../superslab/superslab_types.h:
|
|
core/box/../box/ss_allocation_box.h:
|
|
core/box/../hakmem_debug_master.h:
|
|
core/box/../hakmem_tiny_config.h:
|
|
core/box/../hakmem_shared_pool.h:
|
|
core/box/../superslab/superslab_types.h:
|
|
core/box/../hakmem_internal.h:
|
|
core/box/../tiny_region_id.h:
|
|
core/box/../hakmem_tiny_integrity.h:
|
|
core/box/../box/slab_freelist_atomic.h:
|
|
core/box/../tiny_free_fast_v2.inc.h:
|
|
core/box/../box/tls_sll_box.h:
|
|
core/box/../box/../hakmem_internal.h:
|
|
core/box/../box/../hakmem_tiny_config.h:
|
|
core/box/../box/../hakmem_build_flags.h:
|
|
core/box/../box/../hakmem_debug_master.h:
|
|
core/box/../box/../tiny_remote.h:
|
|
core/box/../box/../tiny_region_id.h:
|
|
core/box/../box/../hakmem_tiny_integrity.h:
|
|
core/box/../box/../ptr_track.h:
|
|
core/box/../box/../tiny_debug_ring.h:
|
|
core/box/../box/ss_addr_map_box.h:
|
|
core/box/../box/../superslab/superslab_inline.h:
|
|
core/box/../box/tiny_ptr_bridge_box.h:
|
|
core/box/../box/tiny_header_box.h:
|
|
core/box/../box/tls_sll_drain_box.h:
|
|
core/box/../box/tls_sll_box.h:
|
|
core/box/../box/slab_recycling_box.h:
|
|
core/box/../box/../hakmem_tiny_superslab.h:
|
|
core/box/../box/ss_hot_cold_box.h:
|
|
core/box/../box/ss_release_guard_box.h:
|
|
core/box/../box/../hakmem_tiny_superslab_internal.h:
|
|
core/box/../box/free_local_box.h:
|
|
core/box/../box/ptr_type_box.h:
|
|
core/box/../box/free_publish_box.h:
|
|
core/hakmem_tiny.h:
|
|
core/tiny_region_id.h:
|
|
core/box/../hakmem_env_cache.h:
|
|
core/box/../superslab/superslab_inline.h:
|
|
core/box/../box/ss_slab_meta_box.h:
|
|
core/box/../box/free_remote_box.h:
|
|
core/hakmem_tiny_integrity.h:
|
|
core/box/../box/ptr_conversion_box.h:
|
|
core/box/hak_wrappers.inc.h:
|
|
core/box/front_gate_classifier.h:
|
|
core/box/../front/malloc_tiny_fast.h:
|
|
core/box/../front/../hakmem_build_flags.h:
|
|
core/box/../front/../hakmem_tiny_config.h:
|
|
core/box/../front/../superslab/superslab_inline.h:
|
|
core/box/../front/../box/ss_slab_meta_box.h:
|
|
core/box/../front/tiny_unified_cache.h:
|
|
core/box/../front/../box/ptr_type_box.h:
|
|
core/box/../front/../box/tiny_front_config_box.h:
|
|
core/box/../front/../box/../hakmem_build_flags.h:
|
|
core/box/../front/../tiny_region_id.h:
|
|
core/box/../front/../hakmem_tiny.h:
|
|
core/box/../front/../box/tiny_front_hot_box.h:
|
|
core/box/../front/../box/../hakmem_tiny_config.h:
|
|
core/box/../front/../box/../tiny_region_id.h:
|
|
core/box/../front/../box/../front/tiny_unified_cache.h:
|
|
core/box/../front/../box/tiny_layout_box.h:
|
|
core/box/../front/../box/tiny_front_cold_box.h:
|
|
core/box/../front/../box/tiny_hotheap_v2_box.h:
|
|
core/box/../front/../box/smallobject_hotbox_v3_box.h:
|
|
core/box/../front/../box/tiny_geometry_box.h:
|
|
core/box/../front/../box/../hakmem_tiny_superslab_internal.h:
|
|
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/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:
|