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:
@ -104,7 +104,7 @@ static inline int external_guard_try_free(void* ptr) {
|
||||
}
|
||||
|
||||
// Debug: Check if this looks like a HAKMEM allocation
|
||||
extern SuperSlab* hak_super_lookup(void*);
|
||||
// Note: hak_super_lookup() is defined in hakmem_super_registry.h (included transitively)
|
||||
SuperSlab* ss = hak_super_lookup(ptr);
|
||||
fprintf(stderr, "[ExternalGuard] hak_super_lookup(ptr) = %p\n", (void*)ss);
|
||||
if (ss) {
|
||||
|
||||
Reference in New Issue
Block a user