Refactor: Phase 2 Box化 - SuperSlab Lookup Box with multiple contract levels
Purpose: Formalize SuperSlab lookup responsibilities with clear safety guarantees Evolution: - Phase 12: UNSAFE mask+dereference (5-10 cycles) → 12% crash rate - Phase 1b: SAFE registry lookup (50-100 cycles) → 0% crash rate - Phase 2: Box化 - multiple contracts (UNSAFE/SAFE/GUARDED) Box Pattern Benefits: 1. Clear Contracts: Each API documents preconditions and guarantees 2. Multiple Levels: Choose speed vs safety based on context 3. Future-Proof: Enables optimizations without breaking existing code API Design: - ss_lookup_unsafe(): 5-10 cycles, requires validated pointer (internal use only) - ss_lookup_safe(): 50-100 cycles, works with arbitrary pointers (recommended) - ss_lookup_guarded(): 100-200 cycles, adds integrity checks (debug only) - ss_fast_lookup(): Backward compatible (→ ss_lookup_safe) Implementation: - Created core/box/superslab_lookup_box.h with full contract documentation - Integrated into core/superslab/superslab_inline.h - ss_lookup_safe() implemented as macro to avoid circular dependency - ss_lookup_guarded() only available in debug builds - Removed conflicting extern declarations from 3 locations Testing: - Build: Success (all warnings resolved) - Crash rate: 0% (50/50 iterations passed) - Backward compatibility: Maintained via ss_fast_lookup() macro Future Optimization Opportunities (documented in Box): - Phase 2.1: Hybrid lookup (try UNSAFE first, fallback to SAFE) - Phase 2.2: Per-thread cache (1-2 cycles hit rate) - Phase 2.3: Hardware-assisted validation (PAC/CPUID) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -29,7 +29,7 @@ extern void hak_tiny_free_with_slab(void* ptr, TinySlab* slab);
|
||||
// hak_free_at signature: (void* ptr, size_t hint_sz, hak_callsite_t site)
|
||||
// where hak_callsite_t is const void*
|
||||
extern void hak_free_at(void* ptr, size_t hint_sz, const void* site);
|
||||
extern SuperSlab* hak_super_lookup(void* ptr);
|
||||
// Note: hak_super_lookup() is defined in hakmem_super_registry.h (included transitively)
|
||||
extern TinySlab* hak_tiny_owner_slab(void* ptr);
|
||||
extern int g_use_superslab;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user