fix(aot): Phase 25 MVP - numeric_core transformation完全動作

2つの重大バグを修正してBoxCall→Call変換を実現:

1. nyash.toml: numeric_coreモジュールマッピング追加
   - selfhost.llvm.ir.aot_prep.passes.numeric_core パスが解決できなかった
   - 224行目に追加してusing解決を修正

2. numeric_core.hako: JSONパース処理の根本修正
   - 問題: text.indexOf("{") が全JSONのルート{を検出
   - 結果: 全体が1命令として扱われ型検出が完全に破綻
   - 修正: op-marker-first パターンに変更
     - "op":"..." を先に検出
     - lastIndexOf("{") で命令開始を特定
     - 各命令を個別に正しく処理

成果:
- 型テーブルサイズ: 1 → 3 (MatI64インスタンス完全検出)
- 変換: BoxCall(MatI64, "mul_naive") → Call("NyNumericMatI64.mul_naive")
- 検証: 全テストパス(単体・E2E・変換・残骸確認)

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-11-15 00:02:13 +09:00
parent e23b906512
commit a85045df26
4 changed files with 217 additions and 10 deletions

View File

@ -221,6 +221,7 @@ path = "lang/src/shared/common/string_helpers.hako"
"selfhost.llvm.ir.aot_prep.passes.const_dedup" = "lang/src/llvm_ir/boxes/aot_prep/passes/const_dedup.hako"
"selfhost.llvm.ir.aot_prep.passes.binop_cse" = "lang/src/llvm_ir/boxes/aot_prep/passes/binop_cse.hako"
"selfhost.llvm.ir.aot_prep.passes.collections_hot" = "lang/src/llvm_ir/boxes/aot_prep/passes/collections_hot.hako"
"selfhost.llvm.ir.aot_prep.passes.numeric_core" = "lang/src/llvm_ir/boxes/aot_prep/passes/numeric_core.hako"
"selfhost.llvm.ir.aot_prep.passes.fold_const_ret" = "lang/src/llvm_ir/boxes/aot_prep/passes/fold_const_ret.hako"
"selfhost.shared.json.core.json_canonical" = "lang/src/shared/json/json_canonical_box.hako"
"selfhost.shared.common.common_imports" = "lang/src/shared/common/common_imports.hako"