Phase 13 v1 + E5-2 retest: Both NEUTRAL, freeze as research boxes
Phase 13 v1: Header Write Elimination (C7 preserve header)
- Verdict: NEUTRAL (+0.78%)
- Implementation: HAKMEM_TINY_C7_PRESERVE_HEADER ENV gate (default OFF)
- Makes C7 nextptr offset conditional (0→1 when enabled)
- 4-point matrix A/B test results:
* Case A (baseline): 51.49M ops/s
* Case B (WRITE_ONCE=1): 52.07M ops/s (+1.13%)
* Case C (C7_PRESERVE=1): 51.36M ops/s (-0.26%)
* Case D (both): 51.89M ops/s (+0.78% NEUTRAL)
- Action: Freeze as research box (default OFF, manual opt-in)
Phase 5 E5-2: Header Write-Once retest (promotion test)
- Verdict: NEUTRAL (+0.54%)
- Motivation: Phase 13 Case B showed +1.13%, re-tested with dedicated 20-run
- Results (20-run):
* Case A (baseline): 51.10M ops/s
* Case B (WRITE_ONCE=1): 51.37M ops/s (+0.54%)
- Previous test: +0.45% (consistent with NEUTRAL)
- Action: Keep as research box (default OFF, manual opt-in)
Key findings:
- Header write tax optimization shows consistent NEUTRAL results
- Neither Phase 13 v1 nor E5-2 reaches GO threshold (+1.0%)
- Both implemented as reversible ENV gates for future research
Files changed:
- New: core/box/tiny_c7_preserve_header_env_box.{c,h}
- Modified: core/box/tiny_layout_box.h (C7 offset conditional)
- Modified: core/tiny_nextptr.h, core/box/tiny_header_box.h (comments)
- Modified: core/bench_profile.h (refresh sync)
- Modified: Makefile (add new .o files)
- Modified: scripts/run_mixed_10_cleanenv.sh (add C7_PRESERVE ENV)
- Docs: PHASE13_*, PHASE5_E5_2_HEADER_WRITE_ONCE_* (design/results)
Next: Phase 14 (Pointer-chase reduction, tcache-style intrusive LIFO)
🤖 Generated with Claude Code
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -41,13 +41,14 @@
|
||||
//
|
||||
// Returns:
|
||||
// true - C1-C6: Header preserved at offset 0, next at offset 1
|
||||
// false - C0, C7: Header overwritten by next pointer at offset 0
|
||||
// false - C0: Header overwritten by next pointer at offset 0
|
||||
// Phase 13 v1: C7 returns false (default) or true (HAKMEM_TINY_C7_PRESERVE_HEADER=1)
|
||||
|
||||
static inline bool tiny_class_preserves_header(int class_idx) {
|
||||
#if HAKMEM_TINY_HEADER_CLASSIDX
|
||||
// Delegate to tiny_layout_box.h specification (Single Source of Truth)
|
||||
// next_off=0 → header overwritten (C0, C7)
|
||||
// next_off=1 → header preserved (C1-C6)
|
||||
// next_off=0 → header overwritten (C0, C7 default)
|
||||
// next_off=1 → header preserved (C1-C6, C7 with HAKMEM_TINY_C7_PRESERVE_HEADER=1)
|
||||
return tiny_nextptr_offset(class_idx) != 0;
|
||||
#else
|
||||
// Headers disabled globally
|
||||
@ -87,7 +88,8 @@ static inline void tiny_header_write_if_preserved(void* base, int class_idx) {
|
||||
// ============================================================================
|
||||
//
|
||||
// Validates header ONLY if this class preserves headers.
|
||||
// For C0/C7, validation is impossible (next pointer is stored at offset 0).
|
||||
// For C0, validation is impossible (next pointer is stored at offset 0).
|
||||
// Phase 13 v1: C7 validation depends on HAKMEM_TINY_C7_PRESERVE_HEADER.
|
||||
//
|
||||
// Arguments:
|
||||
// base - BASE pointer (not user pointer)
|
||||
|
||||
Reference in New Issue
Block a user