|
|
1bbfb53925
|
Implement Phantom typing for Tiny FastCache layer
Refactor FastCache and TLS cache APIs to use Phantom types (hak_base_ptr_t)
for compile-time type safety, preventing BASE/USER pointer confusion.
Changes:
1. core/hakmem_tiny_fastcache.inc.h:
- fastcache_pop() returns hak_base_ptr_t instead of void*
- fastcache_push() accepts hak_base_ptr_t instead of void*
2. core/hakmem_tiny.c:
- Updated forward declarations to match new signatures
3. core/tiny_alloc_fast.inc.h, core/hakmem_tiny_alloc.inc:
- Alloc paths now use hak_base_ptr_t for cache operations
- BASE->USER conversion via HAK_RET_ALLOC macro
4. core/hakmem_tiny_refill.inc.h, core/refill/ss_refill_fc.h:
- Refill paths properly handle BASE pointer types
- Fixed: Removed unnecessary HAK_BASE_FROM_RAW() in ss_refill_fc.h line 176
5. core/hakmem_tiny_free.inc, core/tiny_free_magazine.inc.h:
- Free paths convert USER->BASE before cache push
- USER->BASE conversion via HAK_USER_TO_BASE or ptr_user_to_base()
6. core/hakmem_tiny_legacy_slow_box.inc:
- Legacy path properly wraps pointers for cache API
Benefits:
- Type safety at compile time (in debug builds)
- Zero runtime overhead (debug builds only, release builds use typedef=void*)
- All BASE->USER conversions verified via Task analysis
- Prevents pointer type confusion bugs
Testing:
- Build: SUCCESS (all 9 files)
- Smoke test: PASS (sh8bench runs to completion)
- Conversion path verification: 3/3 paths correct
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-12-04 11:05:06 +09:00 |
|
|
|
922eaac79c
|
Refactor: Extract 3 more Box modules from hakmem_tiny.c (-70% total reduction)
Continue hakmem_tiny.c refactoring with 3 large module extractions.
## Changes
**hakmem_tiny.c**: 995 → 616 lines (-379 lines, -38% this phase)
**Total reduction**: 2081 → 616 lines (-1465 lines, -70% cumulative) 🏆
## Extracted Modules (3 new boxes)
6. **tls_state_box** (224 lines)
- TLS SLL enable flags and configuration
- TLS canaries and SLL array definitions
- Debug counters (path, ultra, allocation)
- Frontend/backend configuration
- TLS thread ID caching helpers
- Frontend hit/miss counters
- HotMag, QuickSlot, Ultra-front configuration
- Helper functions (is_hot_class, tiny_optional_push)
- Intelligence system helpers
7. **legacy_slow_box** (96 lines)
- tiny_slow_alloc_fast() function (cold/unused)
- Legacy slab-based allocation with refill
- TLS cache/fast cache refill from slabs
- Remote drain handling
- List management (move to full/free lists)
- Marked __attribute__((cold, noinline, unused))
8. **slab_lookup_box** (77 lines)
- registry_lookup() - O(1) hash-based lookup
- hak_tiny_owner_slab() - public API for slab discovery
- Linear probing search with atomic owner access
- O(N) fallback for non-registry mode
- Safety validation for membership checking
## Cumulative Progress (8 boxes total)
**Previously extracted** (Phase 1):
1. config_box (211 lines)
2. publish_box (419 lines)
3. globals_box (256 lines)
4. phase6_wrappers_box (122 lines)
5. ace_guard_box (100 lines)
**This phase** (Phase 2):
6. tls_state_box (224 lines)
7. legacy_slow_box (96 lines)
8. slab_lookup_box (77 lines)
**Total extracted**: 1,505 lines across 8 coherent modules
**Remaining core**: 616 lines (well-organized, focused)
## Benefits
- **Readability**: 2k monolith → focused 616-line core
- **Maintainability**: Each box has single responsibility
- **Organization**: TLS state, legacy code, lookup utilities separated
- **Build**: All modules compile successfully ✅
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-21 01:23:59 +09:00 |
|