chore: Phase 25.1 完了 - LoopForm v2/Stage1 CLI/環境変数削減 + Phase 26-D からの変更
Phase 25.1 完了成果: - ✅ LoopForm v2 テスト・ドキュメント・コメント完備 - 4ケース(A/B/C/D)完全テストカバレッジ - 最小再現ケース作成(SSAバグ調査用) - SSOT文書作成(loopform_ssot.md) - 全ソースに [LoopForm] コメントタグ追加 - ✅ Stage-1 CLI デバッグ環境構築 - stage1_cli.hako 実装 - stage1_bridge.rs ブリッジ実装 - デバッグツール作成(stage1_debug.sh/stage1_minimal.sh) - アーキテクチャ改善提案文書 - ✅ 環境変数削減計画策定 - 25変数の完全調査・分類 - 6段階削減ロードマップ(25→5、80%削減) - 即時削除可能変数特定(NYASH_CONFIG/NYASH_DEBUG) Phase 26-D からの累積変更: - PHI実装改善(ExitPhiBuilder/HeaderPhiBuilder等) - MIRビルダーリファクタリング - 型伝播・最適化パス改善 - その他約300ファイルの累積変更 🎯 技術的成果: - SSAバグ根本原因特定(条件分岐内loop変数変更) - Region+next_iパターン適用完了(UsingCollectorBox等) - LoopFormパターン文書化・テスト化完了 - セルフホスティング基盤強化 Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: ChatGPT <noreply@openai.com> Co-Authored-By: Task Assistant <task@anthropic.com>
This commit is contained in:
@ -6,8 +6,8 @@
|
||||
//! - emit_global_call/emit_method_call/emit_constructor_call: 便利ラッパー
|
||||
|
||||
use super::super::{EffectMask, MirBuilder, MirInstruction, ValueId};
|
||||
use crate::mir::definitions::call_unified::Callee;
|
||||
use super::CallTarget;
|
||||
use crate::mir::definitions::call_unified::Callee;
|
||||
|
||||
impl MirBuilder {
|
||||
/// Unified call emission - delegates to UnifiedCallEmitterBox
|
||||
@ -21,7 +21,6 @@ impl MirBuilder {
|
||||
super::unified_emitter::UnifiedCallEmitterBox::emit_unified_call(self, dst, target, args)
|
||||
}
|
||||
|
||||
|
||||
/// Legacy call fallback - preserves existing behavior
|
||||
pub fn emit_legacy_call(
|
||||
&mut self,
|
||||
@ -30,7 +29,11 @@ impl MirBuilder {
|
||||
args: Vec<ValueId>,
|
||||
) -> Result<(), String> {
|
||||
match target {
|
||||
CallTarget::Method { receiver, method, box_type: _ } => {
|
||||
CallTarget::Method {
|
||||
receiver,
|
||||
method,
|
||||
box_type: _,
|
||||
} => {
|
||||
// LEGACY PATH (after unified migration):
|
||||
// Instance→Function rewrite is centralized in unified call path.
|
||||
// Legacy path no longer functionizes; always use Box/Plugin call here.
|
||||
@ -38,10 +41,11 @@ impl MirBuilder {
|
||||
// Set flag to prevent emit_box_or_plugin_call from calling emit_unified_call
|
||||
let prev_flag = self.in_unified_boxcall_fallback;
|
||||
self.in_unified_boxcall_fallback = true;
|
||||
let result = self.emit_box_or_plugin_call(dst, receiver, method, None, args, EffectMask::IO);
|
||||
let result =
|
||||
self.emit_box_or_plugin_call(dst, receiver, method, None, args, EffectMask::IO);
|
||||
self.in_unified_boxcall_fallback = prev_flag;
|
||||
result
|
||||
},
|
||||
}
|
||||
CallTarget::Constructor(box_type) => {
|
||||
// Use existing NewBox
|
||||
let dst = dst.ok_or("Constructor must have destination")?;
|
||||
@ -50,7 +54,7 @@ impl MirBuilder {
|
||||
box_type,
|
||||
args,
|
||||
})
|
||||
},
|
||||
}
|
||||
CallTarget::Extern(name) => {
|
||||
// Use existing ExternCall
|
||||
let mut args = args;
|
||||
@ -69,14 +73,22 @@ impl MirBuilder {
|
||||
args,
|
||||
effects: EffectMask::IO,
|
||||
})
|
||||
},
|
||||
}
|
||||
CallTarget::Global(name) => {
|
||||
super::unified_emitter::UnifiedCallEmitterBox::emit_global_unified(self, dst, name, args)
|
||||
},
|
||||
super::unified_emitter::UnifiedCallEmitterBox::emit_global_unified(
|
||||
self, dst, name, args,
|
||||
)
|
||||
}
|
||||
CallTarget::Value(func_val) => {
|
||||
super::unified_emitter::UnifiedCallEmitterBox::emit_value_unified(self, dst, func_val, args)
|
||||
},
|
||||
CallTarget::Closure { params, captures, me_capture } => {
|
||||
super::unified_emitter::UnifiedCallEmitterBox::emit_value_unified(
|
||||
self, dst, func_val, args,
|
||||
)
|
||||
}
|
||||
CallTarget::Closure {
|
||||
params,
|
||||
captures,
|
||||
me_capture,
|
||||
} => {
|
||||
let dst = dst.ok_or("Closure creation must have destination")?;
|
||||
self.emit_instruction(MirInstruction::NewClosure {
|
||||
dst,
|
||||
@ -85,7 +97,7 @@ impl MirBuilder {
|
||||
captures,
|
||||
me: me_capture,
|
||||
})
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -127,11 +139,7 @@ impl MirBuilder {
|
||||
box_type: String,
|
||||
args: Vec<ValueId>,
|
||||
) -> Result<(), String> {
|
||||
self.emit_unified_call(
|
||||
Some(dst),
|
||||
CallTarget::Constructor(box_type),
|
||||
args,
|
||||
)
|
||||
self.emit_unified_call(Some(dst), CallTarget::Constructor(box_type), args)
|
||||
}
|
||||
|
||||
// ========================================
|
||||
@ -146,7 +154,9 @@ impl MirBuilder {
|
||||
name: &str,
|
||||
args: &[ValueId],
|
||||
) -> Result<Option<()>, String> {
|
||||
super::materializer::CallMaterializerBox::try_global_fallback_handlers(self, dst, name, args)
|
||||
super::materializer::CallMaterializerBox::try_global_fallback_handlers(
|
||||
self, dst, name, args,
|
||||
)
|
||||
}
|
||||
|
||||
/// Ensure receiver is materialized in Callee::Method (delegates to CallMaterializerBox)
|
||||
|
||||
Reference in New Issue
Block a user