Phase v5-2: SmallObject v5 C6-only 本実装 (WIP - header fix)

本実装修正:
- tiny_region_id_write_header() を追加: USER pointer を正しく返す
- TLS slot からの segment 探索 (page_meta_of)
- Page-level allocation で segment 再利用
- 2MiB alignment 保証 (4MiB 確保 + alignment)
- free パスの route 修正 (v4 から v5 への fallthrough 削除)

動作確認:
- SEGV 消失: alloc/free 基本動作 OK
- 性能: ~18-20M ops/s (baseline 43-47M の約 40-45%)
- 回帰原因: TLS slot 線形探索 O(n)、find_page O(n)

残タスク:
- O(1) segment lookup 最適化 (hash または array 直接参照)
- find_page 除去 (segment lookup 成功時)
- partial_count/list 管理の最適化

ENV デフォルト OFF なので本線影響なし。

🤖 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-11 03:47:24 +09:00
parent 9c24bebf08
commit e0fb7d550a
8 changed files with 742 additions and 63 deletions

View File

@ -70,4 +70,8 @@ SmallSegmentV5* small_segment_v5_acquire(void);
void small_segment_v5_release(SmallSegmentV5* seg);
SmallPageMetaV5* small_segment_v5_page_meta_of(void* ptr);
// Page-level allocation (v5-2 fix for segment reuse)
SmallPageMetaV5* small_segment_v5_alloc_page(void);
void small_segment_v5_free_page(SmallPageMetaV5* page);
#endif // HAKMEM_SMALLSEGMENT_V5_BOX_H