Phase 12: 統一TypeBox ABI実装開始 - ChatGPT5による極小コアABI基盤構築

- TypeBox ABI雛形: メソッドスロット管理システム追加
- Type Registry: Array/Map/StringBoxの基本メソッド定義
- Host API: C ABI逆呼び出しシステム実装
- Phase 12ドキュメント整理: 設計文書統合・アーカイブ化
- MIR Builder: クリーンアップと分離実装完了

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Moe Charm
2025-09-03 05:04:56 +09:00
parent e2e25f6615
commit 53d88157aa
84 changed files with 4739 additions and 2750 deletions

View File

@ -0,0 +1,44 @@
# Phase 11.8 MIR Cleanup Plan (Core13)
目的
- MIR を「最小の接着剤」に純化し、BoxCall へ集約。
- 最適化は VM/JIT の boxcall 経路に集中脱仮想化・境界消去・Barrier
スコープ
- BoxCall 集約: ArrayGet/Set, RefGet/Set → BoxCallget/set/getField/setField
- 維持: BinOp/Compare は MIR に残す(定数畳み込み/分岐簡約を最大化)。
- 効果: EffectMask の正確化、WriteBarrier の確実化。
段階導入トグルenv
- `NYASH_MIR_ARRAY_BOXCALL=1` … ArrayGet/Set → BoxCall を有効化
- `NYASH_MIR_REF_BOXCALL=1` … RefGet/Set → BoxCall を有効化
- `NYASH_MIR_CORE13=1` … Core13 セットの一括有効(将来拡張)
実装ステップ
1) Optimizer パス(デフォルト OFF
- ArrayGet/Set → BoxCall に変換
- RefGet/Set → BoxCall に変換
- 変換後の Effect/Barrier を整合
2) VM: execute_boxcall の fastpath
- (type_id, method_id) で Array/Field を高速化
- WriteBarrier の確実化
3) JIT: lower_boxcall の fastpath
- Array: GEP+Load/StoreBounds/Barrier含む
- Field: 内部表現に応じた inlining失敗時 plugin_invoke
4) Smokes/Bench
- array_access_sequential / array_access_random / field_access / arithmetic_loop
- 基準: 速度 ±5%, メモリ ±10%, MIR サイズ -20% 目標
5) 検証
- SSA 保持Phi 導入後の整合)
- 意味保存before/after 等価)
非スコープ(当面)
- 算術/比較の BoxCall 化(最適化効率低下を避け据え置き)
完了基準
- トグル ON でスモークとベンチが基準を満たす
- VM/JIT ともに fastpath が発火し、BoxCall 経路での最適化が確認できる
関連
- TECHNICAL_SPEC.md詳細仕様
- docs/development/runtime/ENV_VARS.md環境変数索引

View File

@ -152,6 +152,17 @@ weak.get() → BoxCall(weak, "get", [])
## 📋 実装ロードマップ
### ステータス(進捗メモ)
- 実装済みトグルONで有効化
- Optimizer: ArrayGet/Set・RefGet/Set → BoxCall 変換(`NYASH_MIR_ARRAY_BOXCALL`, `NYASH_MIR_REF_BOXCALL`, `NYASH_MIR_CORE13`
- VM: BoxCall(setField)のWriteBarrier、Array/Instanceの軽量fast-pathby-name/slot併用
- 管理棟: 主要なMIR/GC/Optimizerフラグを `config::env` に集約
- 未了/次段
- JIT: BoxCall fast-path の inliningbounds/Barrier含む
- ベンチ追加とCIゲートarray/field/arithmetic_loop
- フィールドfast-pathのslot化name→slot化の検討
- 直env参照の残りの段階移行ログ用途は後段
### Phase 11.8.1: 準備と分析1週間
- [ ] 現在のMIR使用状況の詳細分析
@ -221,4 +232,4 @@ weak.get() → BoxCall(weak, "get", [])
---
*「少ないほど豊かである」- MIRは最小の接着剤、Boxが無限の世界を創る*
*「少ないほど豊かである」- MIRは最小の接着剤、Boxが無限の世界を創る*