Implement Phase 2: Headerless Allocator Support (Partial)
- Feature: Added HAKMEM_TINY_HEADERLESS toggle (A/B testing) - Feature: Implemented Headerless layout logic (Offset=0) - Refactor: Centralized layout definitions in tiny_layout_box.h - Refactor: Abstracted pointer arithmetic in free path via ptr_conversion_box.h - Verification: sh8bench passes in Headerless mode (No TLS_SLL_HDR_RESET) - Known Issue: Regression in Phase 1 mode due to blind pointer conversion logic
This commit is contained in:
@ -368,6 +368,7 @@ static inline bool tls_sll_push_impl(int class_idx, hak_base_ptr_t ptr, uint32_t
|
||||
// Header restoration using Header Box (C1-C6 only; C0/C7 skip)
|
||||
// Safe mode (HAKMEM_TINY_SLL_SAFEHEADER=1): never overwrite header; reject on magic mismatch.
|
||||
// Default mode: restore expected header.
|
||||
#if !HAKMEM_TINY_HEADERLESS
|
||||
if (tiny_class_preserves_header(class_idx)) {
|
||||
static int g_sll_safehdr = -1;
|
||||
static int g_sll_ring_en = -1; // optional ring trace for TLS-SLL anomalies
|
||||
@ -407,6 +408,7 @@ static inline bool tls_sll_push_impl(int class_idx, hak_base_ptr_t ptr, uint32_t
|
||||
__atomic_thread_fence(__ATOMIC_RELEASE);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
tls_sll_debug_guard(class_idx, ptr, "push");
|
||||
|
||||
@ -568,6 +570,7 @@ static inline bool tls_sll_pop_impl(int class_idx, hak_base_ptr_t* out, const ch
|
||||
tls_sll_debug_guard(class_idx, base, "pop");
|
||||
|
||||
// Header validation using Header Box (C1-C6 only; C0/C7 skip)
|
||||
#if !HAKMEM_TINY_HEADERLESS
|
||||
if (tiny_class_preserves_header(class_idx)) {
|
||||
uint8_t got, expect;
|
||||
PTR_TRACK_TLS_POP(raw_base, class_idx);
|
||||
@ -608,6 +611,7 @@ static inline bool tls_sll_pop_impl(int class_idx, hak_base_ptr_t* out, const ch
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
// Read next via Box API.
|
||||
void* raw_next;
|
||||
|
||||
Reference in New Issue
Block a user