Commit Graph

2 Commits

Author SHA1 Message Date
ce372cfc7e Phase V6-HDR-4: Headerless 最適化 (P0 + P1)
## P0: Double validation 排除
- region_id_lookup_v6() で TLS segment 登録済み + 範囲内なら
  small_page_meta_v6_of() を呼ばずに直接 page_meta を計算
- 削除された重複チェック:
  - slot->in_use (TLS登録で保証)
  - small_ptr_in_segment_v6() (addr範囲で既にチェック済み)
  - 関数呼び出しオーバーヘッド
- 推定効果: +1-2% (6-8 instructions 削減)

## P1: TLS cache に page_meta キャッシュ追加
- RegionIdTlsCache に追加:
  - last_page_base / last_page_end (ページ範囲)
  - last_page (SmallPageMetaV6* 直接ポインタ)
- region_id_lookup_cached_v6() で same-page hit 時は
  page_meta lookup を完全スキップ
- 推定効果: +1.5-2.5% (10-12 instructions 削減)

## ベンチマーク結果 (揺れあり)
- V6-HDR-3 (P0/P1 前): -3.5% ~ -8.3% 回帰
- V6-HDR-4 (P0+P1 後): +2.7% ~ +12% 改善 (一部の run で)

設計原則:
- RegionIdBox は薄く保つ (分類のみ)
- キャッシュは TLS 側に寄せる
- same-page 判定で last_page_base/end を使用

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 00:16:32 +09:00
df216b6901 Phase V6-HDR-3: SmallSegmentV6 実割り当て & RegionIdBox Registration
実装内容:
1. SmallSegmentV6のmmap割り当ては既に v6-0で実装済み
2. small_heap_ctx_v6() で segment 取得時に region_id_register_v6_segment() 呼び出し
3. region_id_v6.c に TLS スコープのセグメント登録ロジック実装:
   - 4つの static __thread 変数でセグメント情報をキャッシュ
   - region_id_register_v6_segment(): セグメント base/end を TLS に記録
   - region_id_lookup_v6(): TLS segment の range check を最初に実行
   - TLS cache 更新で O(1) lookup 実現
4. region_id_v6_box.h に SmallSegmentV6 type include & function 宣言追加
5. small_v6_region_observe_validate() に region_id_observe_lookup() 呼び出し追加

効果:
- HeaderlessデザインでRegionIdBoxが正式にSMALL_V6分類を返せるように
- TLS-scopedな簡潔な登録メカニズム (マルチスレッド対応)
- Fast path: TLS segment range check -> page_meta lookup
- Fall back path: 従来の small_page_meta_v6_of() による動的検出
- Latency: O(1) TLS cache hit rate がv6 alloc/free の大部分をカバー

🤖 Generated with Claude Code

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-11 23:51:48 +09:00