Phase v10: Remove legacy v3/v4/v5 implementations

Removal strategy: Deprecate routes by disabling ENV-based routing
- v3/v4/v5 enum types kept for binary compatibility
- small_heap_v3/v4/v5_enabled() always return 0
- small_heap_v3/v4/v5_class_enabled() always return 0
- Any v3/v4/v5 ENVs are silently ignored, routes to LEGACY

Changes:
- core/box/smallobject_hotbox_v3_env_box.h: stub functions
- core/box/smallobject_hotbox_v4_env_box.h: stub functions
- core/box/smallobject_v5_env_box.h: stub functions
- core/front/malloc_tiny_fast.h: remove alloc/free cases (20+ lines)

Benefits:
- Cleaner routing logic (v6/v7 only for SmallObject)
- 20+ lines deleted from hot path validation
- No behavioral change (routes were rarely used)

Performance: No regression expected (v3/v4/v5 already disabled by default)

Next: Set Learner v7 default ON, production testing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Moe Charm (CI)
2025-12-12 06:09:12 +09:00
parent 540230c301
commit 79674c9390
9 changed files with 367 additions and 159 deletions

View File

@ -161,10 +161,10 @@ static inline void* malloc_tiny_fast(size_t size) {
route_trusted = false;
} else if (!route_trusted &&
route != TINY_ROUTE_LEGACY && route != TINY_ROUTE_HEAP &&
route != TINY_ROUTE_HOTHEAP_V2 && route != TINY_ROUTE_SMALL_HEAP_V3 &&
route != TINY_ROUTE_SMALL_HEAP_V4 && route != TINY_ROUTE_SMALL_HEAP_V5 &&
route != TINY_ROUTE_HOTHEAP_V2 &&
route != TINY_ROUTE_SMALL_HEAP_V6 && route != TINY_ROUTE_SMALL_HEAP_V7) {
// Phase ALLOC-GATE-OPT-1: カウンタ散布 (3. route_for_class 呼び出し)
// Note: v3/v4/v5 removed in Phase v10
ALLOC_GATE_STAT_INC(route_for_class_calls);
route = tiny_route_for_class((uint8_t)class_idx);
}
@ -256,34 +256,7 @@ static inline void* malloc_tiny_fast(size_t size) {
}
__attribute__((fallthrough));
}
case TINY_ROUTE_SMALL_HEAP_V3: {
void* v3p = so_alloc((uint32_t)class_idx);
if (TINY_HOT_LIKELY(v3p != NULL)) {
return v3p;
}
so_v3_record_alloc_fallback((uint8_t)class_idx);
// fallthrough to v2/v1
__attribute__((fallthrough));
}
case TINY_ROUTE_SMALL_HEAP_V4: {
void* v4p = small_heap_alloc_fast_v4(small_heap_ctx_v4_get(), class_idx);
if (TINY_HOT_LIKELY(v4p != NULL)) {
return v4p;
}
so_v3_record_alloc_fallback((uint8_t)class_idx);
// fallthrough to v5/v2/v1
__attribute__((fallthrough));
}
case TINY_ROUTE_SMALL_HEAP_V5: {
// Phase v5-1: C6-only route stub (v1/pool fallback)
SmallHeapCtxV5* ctx = small_heap_ctx_v5();
void* v5p = small_alloc_fast_v5(size, (uint32_t)class_idx, ctx);
if (TINY_HOT_LIKELY(v5p != NULL)) {
return v5p;
}
// fallthrough to v2/v1
__attribute__((fallthrough));
}
// Phase v10: v3/v4/v5 removed - routes now handled as LEGACY
case TINY_ROUTE_HOTHEAP_V2: {
void* v2p = tiny_hotheap_v2_alloc((uint8_t)class_idx);
if (TINY_HOT_LIKELY(v2p != NULL)) {
@ -525,25 +498,7 @@ static inline int free_tiny_fast(void* ptr) {
}
break; // fallthrough to legacy
}
case TINY_ROUTE_SMALL_HEAP_V5: {
// Phase v5-2: C6-only full implementation
// Phase FREE-LEGACY-BREAKDOWN-1: v5 は研究箱なので skip
SmallHeapCtxV5* ctx = small_heap_ctx_v5();
small_free_fast_v5(base, (uint32_t)class_idx, ctx);
return 1;
}
case TINY_ROUTE_SMALL_HEAP_V4:
if (class_idx == 7 || class_idx == 6 || class_idx == 5) {
small_heap_free_fast_v4(small_heap_ctx_v4_get(), class_idx, base);
// Phase FREE-LEGACY-BREAKDOWN-1: v4 は研究箱なので skip
return 1;
}
break; // fallthrough to default
case TINY_ROUTE_SMALL_HEAP_V3:
so_free((uint32_t)class_idx, base);
// Phase FREE-LEGACY-BREAKDOWN-1: カウンタ散布 (8. v3 route)
FREE_PATH_STAT_INC(smallheap_v3_fast);
return 1;
// Phase v10: v3/v4/v5 removed - routes now handled as LEGACY
case TINY_ROUTE_HOTHEAP_V2:
tiny_hotheap_v2_free((uint8_t)class_idx, base, meta);
// Phase FREE-LEGACY-BREAKDOWN-1: カウンタ散布 (v2 は tiny_heap_v1 にカウント)
@ -570,9 +525,8 @@ static inline int free_tiny_fast(void* ptr) {
// fallback: lookup failed but TinyHeap front is ON → use generic TinyHeap free
if (route == TINY_ROUTE_HOTHEAP_V2) {
tiny_hotheap_v2_record_free_fallback((uint8_t)class_idx);
} else if (route == TINY_ROUTE_SMALL_HEAP_V3 || route == TINY_ROUTE_SMALL_HEAP_V4) {
so_v3_record_free_fallback((uint8_t)class_idx);
}
// Phase v10: v3/v4 removed - no special fallback
tiny_heap_free_class_fast(tiny_heap_ctx_for_thread(), class_idx, ptr);
return 1;
}