35 lines
1.8 KiB
Markdown
35 lines
1.8 KiB
Markdown
## Plan — Phase 20.12 (AOT/VM Optimization)
|
||
|
||
ステップ
|
||
1) 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 から段階移行。
|
||
|
||
2) VM ホットパス(VMHotPathBox)
|
||
- メソッドマップの事前構築・キャッシュ
|
||
- ハンドル/Box の再利用・割付の抑制
|
||
- 成果の可視化(短文ログ、既定OFF)
|
||
- ゲート: `HAKO_VM_FAST_PATH=1`
|
||
|
||
3) ベンチ & スモーク整備
|
||
- EXE: 単純ループ・関数呼び出し・配列走査(C 基準 0.6~0.8× 目標)
|
||
- subtract ベースライン(ret0 EXE)+ 固定N net 推定
|
||
- in‑process ベンチ(warm‑up→計測のみ)を代表に
|
||
- VM : 同等のマイクロベンチ(Python 基準 ±20% 目標)
|
||
- 既存スモークの緑維持(SKIPポリシーは不変)
|
||
|
||
4) ドキュメント
|
||
- 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 ベンチ中央値が既定レンジ内。
|