Infrastructure and build updates
- Update build configuration and flags - Add missing header files and dependencies - Update TLS list implementation with proper scoping - Fix various compilation warnings and issues - Update debug ring and tiny allocation infrastructure - Update benchmark results documentation Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
This commit is contained in:
@ -72,7 +72,7 @@ static inline int superslab_trace_enabled(void) {
|
||||
// (UltraFront/Quick/Frontend/HotMag/SS-try/BumpShadow), leaving:
|
||||
// SLL → TLS Magazine → SuperSlab → (remaining slow path)
|
||||
#ifndef HAKMEM_TINY_MINIMAL_FRONT
|
||||
#define HAKMEM_TINY_MINIMAL_FRONT 0
|
||||
#define HAKMEM_TINY_MINIMAL_FRONT 1
|
||||
#endif
|
||||
// Strict front: compile-out optional front tiers but keep baseline structure intact
|
||||
#ifndef HAKMEM_TINY_STRICT_FRONT
|
||||
@ -362,9 +362,10 @@ static int g_tiny_refill_max_hot = 192; // HAKMEM_TINY_REFILL_MAX_HOT for clas
|
||||
|
||||
// hakmem_tiny_tls_list.h already included at top
|
||||
static __thread TinyTLSList g_tls_lists[TINY_NUM_CLASSES];
|
||||
static int g_tls_list_enable = 1; // Default ON (scope bug fixed 2025-11-11); disable via HAKMEM_TINY_TLS_LIST=0
|
||||
static int g_tls_list_enable = 0; // Default OFF for bench; override via HAKMEM_TINY_TLS_LIST=1
|
||||
static inline int tls_refill_from_tls_slab(int class_idx, TinyTLSList* tls, uint32_t want);
|
||||
static int g_fast_enable = 1;
|
||||
static int g_fastcache_enable = 1; // Default ON (array stack for C0-C3); override via HAKMEM_TINY_FASTCACHE=0
|
||||
static uint16_t g_fast_cap[TINY_NUM_CLASSES];
|
||||
static int g_ultra_bump_shadow = 0; // HAKMEM_TINY_BUMP_SHADOW=1
|
||||
static uint8_t g_fast_cap_locked[TINY_NUM_CLASSES];
|
||||
@ -979,6 +980,8 @@ static inline void tiny_tls_refresh_params(int class_idx, TinyTLSList* tls) {
|
||||
// Forward declarations for functions defined in hakmem_tiny_fastcache.inc.h
|
||||
static inline void* tiny_fast_pop(int class_idx);
|
||||
static inline int tiny_fast_push(int class_idx, void* ptr);
|
||||
static inline void* fastcache_pop(int class_idx);
|
||||
static inline int fastcache_push(int class_idx, void* ptr);
|
||||
|
||||
// ============================================================================
|
||||
// EXTRACTED TO hakmem_tiny_hot_pop.inc.h (Phase 2D-1)
|
||||
@ -1046,7 +1049,13 @@ static __attribute__((cold, noinline, unused)) void* tiny_slow_alloc_fast(int cl
|
||||
hak_tiny_set_used(slab, extra_idx);
|
||||
slab->free_count--;
|
||||
void* extra = (void*)(base + ((size_t)extra_idx * block_size));
|
||||
if (!tiny_fast_push(class_idx, extra)) {
|
||||
int pushed = 0;
|
||||
if (__builtin_expect(g_fastcache_enable && class_idx <= 3, 1)) {
|
||||
pushed = fastcache_push(class_idx, extra);
|
||||
} else {
|
||||
pushed = tiny_fast_push(class_idx, extra);
|
||||
}
|
||||
if (!pushed) {
|
||||
if (tls_enabled) {
|
||||
tiny_tls_list_guard_push(class_idx, tls, extra);
|
||||
tls_list_push(tls, extra, class_idx);
|
||||
@ -1147,7 +1156,6 @@ typedef struct __attribute__((aligned(64))) {
|
||||
int top;
|
||||
int _pad[15];
|
||||
} TinyFastCache;
|
||||
static int g_fastcache_enable = 0; // HAKMEM_TINY_FASTCACHE=1
|
||||
static __thread TinyFastCache g_fast_cache[TINY_NUM_CLASSES];
|
||||
static int g_frontend_enable = 0; // HAKMEM_TINY_FRONTEND=1 (experimental ultra-fast frontend)
|
||||
// SLL capacity multiplier for hot tiny classes (env: HAKMEM_SLL_MULTIPLIER)
|
||||
@ -1170,6 +1178,10 @@ static inline __attribute__((always_inline)) uint32_t tiny_self_u32(void) {
|
||||
// Cached pthread_t as-is for APIs that require pthread_t comparison
|
||||
static __thread pthread_t g_tls_pt_self;
|
||||
static __thread int g_tls_pt_inited;
|
||||
|
||||
// Frontend FastCache hit/miss counters (Small diagnostics)
|
||||
unsigned long long g_front_fc_hit[TINY_NUM_CLASSES] = {0};
|
||||
unsigned long long g_front_fc_miss[TINY_NUM_CLASSES] = {0};
|
||||
// Phase 6-1.7: Export for box refactor (Box 6 needs access from hakmem.c)
|
||||
#ifdef HAKMEM_TINY_PHASE6_BOX_REFACTOR
|
||||
inline __attribute__((always_inline)) pthread_t tiny_self_pt(void) {
|
||||
|
||||
Reference in New Issue
Block a user