// tiny_c7_ultra_box.h - C7 ULTRA TLS box (Phase PERF-ULTRA-ALLOC-OPT-1: Array-based TLS cache) #pragma once #include #include #include #include "tiny_c7_ultra_segment_box.h" // TLS cache capacity (optimized for C7: 128 slots) #define TINY_C7_ULTRA_CAP 128 // Hot box: per-thread TLS context (Phase PERF-ULTRA-ALLOC-OPT-1: optimized layout) // Hot fields first for L1 cache locality typedef struct tiny_c7_ultra_tls_t { uint16_t count; // Hot: alloc/free both access every time (FIRST field) uint16_t _pad; void* freelist[TINY_C7_ULTRA_CAP]; // Array of BASE pointers (hot path) // Cold fields: used only during refill/segment learning uintptr_t seg_base; // Segment base for range check uintptr_t seg_end; // Segment end for range check tiny_c7_ultra_segment_t* seg; // Owning segment void* page_base; // Current page base size_t block_size; // C7 block size uint32_t page_idx; // Segment page index tiny_c7_ultra_page_meta_t* page_meta; // Current page meta bool headers_initialized; // Carved headers valid? } tiny_c7_ultra_tls_t; // TLS accessor tiny_c7_ultra_tls_t* tiny_c7_ultra_tls_get(void); // Phase PERF-ULTRA-ALLOC-OPT-1: Optimized alloc/free entry points void* tiny_c7_ultra_alloc(size_t size); void tiny_c7_ultra_free(void* ptr); // Internal refill function (cold path) bool tiny_c7_ultra_refill(tiny_c7_ultra_tls_t* tls);