Files
hakorune/src/mir/join_ir_vm_bridge/mod.rs
nyash-codex e404746612 refactor(mir): Phase 139-P3-B - RoutingDecision を enum 対応 + レガシー削除
- RoutingDecision の missing_caps を Vec<CapabilityTag> に変更(型安全化)
- error_tags は to_tag() メソッドで自動生成
- 全 callsite を enum variant に修正
- capability_tags モジュール(文字列定数群)を完全削除
- 全テスト PASS(型安全性向上を確認)
- フォーマット適用
2025-12-16 07:02:14 +09:00

87 lines
2.5 KiB
Rust
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//! Phase 27-shortterm S-4: JoinIR → Rust VM Bridge
//!
//! 目的: JoinIR正規化された IRを Rust VM で実行するブリッジ層
//!
//! ## Architecture
//! ```text
//! JoinIR (normalized) → MirModule → Rust VM → Result
//! ↑ ↑ ↑
//! PHI bugs VM input Execution
//! eliminated format (GC, plugins)
//! ```
//!
//! ## Design Principles
//! - JoinIR の正規化構造を保持したまま VM に渡す
//! - マッピングだけで済ませるJoinIR でやった正規化は消えない)
//! - VM の機能GC、プラグイン、エラーハンドリングを活用
//!
//! ## Minimal Instruction Set (S-4.3)
//! - **Compute**: Const, BinOp, Compare
//! - **BoxCall**: StringBox メソッド呼び出し
//! - **Call/Jump/Ret**: 制御フロー
//!
//! Phase 27-shortterm scope: skip_ws で green 化できれば成功
use crate::backend::VMError;
use crate::mir::join_ir::JoinFuncId;
#[macro_use]
mod logging {
macro_rules! debug_log {
($($arg:tt)*) => {
if crate::config::env::joinir_vm_bridge_debug() {
eprintln!($($arg)*);
}
};
}
}
mod convert;
// Phase 190: Modular converters
mod bridge;
mod joinir_block_converter;
mod joinir_function_converter;
mod meta;
#[cfg(feature = "normalized_dev")]
mod normalized_bridge;
mod runner;
#[cfg(test)]
mod tests;
// Phase 190: Use modularized converters
pub(crate) use bridge::{bridge_joinir_to_mir, bridge_joinir_to_mir_with_meta};
#[allow(unused_imports)]
pub(crate) use convert::convert_joinir_to_mir;
pub(crate) use convert::convert_mir_like_inst; // helper for sub-modules
pub(crate) use joinir_function_converter::JoinIrFunctionConverter;
pub use meta::convert_join_module_to_mir_with_meta;
#[cfg(feature = "normalized_dev")]
pub(crate) use normalized_bridge::lower_normalized_to_mir_minimal;
pub use runner::run_joinir_via_vm;
/// Phase 27-shortterm S-4 エラー型
#[derive(Debug, Clone)]
pub struct JoinIrVmBridgeError {
pub message: String,
}
impl JoinIrVmBridgeError {
pub fn new(msg: impl Into<String>) -> Self {
Self {
message: msg.into(),
}
}
}
impl From<VMError> for JoinIrVmBridgeError {
fn from(err: VMError) -> Self {
JoinIrVmBridgeError::new(format!("VM error: {:?}", err))
}
}
/// JoinFuncId から MIR 用の関数名を生成
pub(crate) fn join_func_name(id: JoinFuncId) -> String {
format!("join_func_{}", id.0)
}