1.8 KiB
1.8 KiB
Plan — Phase 20.12 (AOT/VM Optimization)
ステップ
-
AOT 前処理(AotPrepBox)
- JSON 正規化(冗長キー削除・定型化)
- 安全な定数畳み込み(const/binop/ret の単一ブロックのみ)— in‑place 置換へ拡張
- リンクフラグ生成(OS別既定・
-no-pie/-Wl,--whole-archive等) - ゲート:
HAKO_AOT_PREP=1,HAKO_AOT_PREP_LANG=1(dev/quick 既定ON)。CI/integration は OFF から段階移行。
-
VM ホットパス(VMHotPathBox)
- メソッドマップの事前構築・キャッシュ
- ハンドル/Box の再利用・割付の抑制
- 成果の可視化(短文ログ、既定OFF)
- ゲート:
HAKO_VM_FAST_PATH=1
-
ベンチ & スモーク整備
- EXE: 単純ループ・関数呼び出し・配列走査(C 基準 0.6~0.8× 目標)
- subtract ベースライン(ret0 EXE)+ 固定N net 推定
- in‑process ベンチ(warm‑up→計測のみ)を代表に
- VM : 同等のマイクロベンチ(Python 基準 ±20% 目標)
- 既存スモークの緑維持(SKIPポリシーは不変)
- EXE: 単純ループ・関数呼び出し・配列走査(C 基準 0.6~0.8× 目標)
-
ドキュメント
- getting-started.md: AOT レシピの dist 形状手順を補強
- c-abi-aot.md: 最適化ゲートと観測方法(短文)
- env-variables.md:
HAKO_AOT_PREP,HAKO_AOT_PREP_LANGの既定と昇格条件を明記
運用(Box‑First)
- 最適化は箱でカプセル化(戻せる・観測できる・Fail‑Fast)
- 入口は AotBox を維持、内部実装はゲートで選択(構造の一貫性)
デフォルト化の受け入れ条件(AOT 前処理)
- dev/quick: 代表スモーク(emit-exe MIR 保存、固定N 代表ベンチ)緑、短文安定。
- integration-core: VM/LLVM parity 維持、AOT ベンチ中央値が既定レンジ内。