Files
hakorune/docs/archive/development/current/PHI_NORMALIZATION_PLAN.md
nyash-codex 7c55baa818 refactor(joinir): Phase 190 convert.rs modularization
- Created joinir_function_converter.rs (~133 lines): Function-level conversion
- Created joinir_block_converter.rs (~691 lines): Block-level conversion
- Reduced convert.rs from 943 → 120 lines (87% reduction)
- Total: 944 lines (original 943 lines, minimal overhead)
- Separation of concerns: Function vs Block responsibilities
- All handlers moved to block_converter for better organization
- Maintained backward compatibility with existing API
- Build successful, simple tests passing
2025-12-05 14:41:24 +09:00

2.1 KiB
Raw Blame History

Phi 正規化プラン9.78h スキャフォールド)

Status: Archived plan実装済み / 設計メモ)
Note: Step 3 まで実装済みで、MIR ビルダーは既定で PHI-on。以降は docs/development/roadmap/ / docs/private/roadmap/ 側の設計を正とし、このファイルは当時の段階プランの記録として残しています。

目的: ループ/分岐における Phi 選択を正道に戻し、借用衝突を避けつつ段階導入する。

段階プラン80/20

  • Step 1: 実行系での選択復帰(完了)
    • previous_block に基づき inputs[(bb==prev)] を選択。見つからない場合は先頭をフォールバック。
    • デバッグ: NYASH_VM_DEBUG_PHI=1 で選択ログ。
  • Step 2: LoopExecutor 連携
    • VM::loop_execute_phiLoopExecutor::execute_phi に委譲(安全な借用構成に整理)。
    • record_transition(from,to) をもとにヘッダ検出・イテレーション情報を活用。
  • Step 3: 正規 SSA への復帰
    • Builder 側で phi 挿入・seal・predecessor 更新を正道で実装。
    • Verifier に phi 一貫性(定義支配/マージ使用)チェックを追加・厳格化。
  • Step 4: ログ削減とテスト
    • 代表ケースloop/if-merge/whileをスナップショット化。
    • 既定で静音、NYASH_VM_DEBUG_PHI のみで詳細。

実装状況2025-08-26

  • Step 1 完了: VM::loop_execute_phiprevious_block による選択に対応。
  • Step 2 スケルトン導入: LoopExecutor へphi実行を委譲し、control_flow::record_transition(from,to)previous_block と遷移を記録。VM本体の分岐時に呼び出し済み。
  • 既知の課題: LoopExecutor のヘッダ検出/イテレーション管理の強化(いまは簡易)。

次アクション

  • LoopExecutor のヘッダ判定とイテレーション可視化を拡充(is_loop_header の実装、NYASH_VM_DEBUG_PHI 出力拡張)。
  • Builder 側の phi 正規化 TODO を CURRENT_TASK に追記seal/pred更新・Phi先頭挿入の確認用ユニットテスト追加