Files
hakorune/src/mir/join_ir_vm_bridge/mod.rs
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

80 lines
2.2 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 joinir_function_converter;
mod joinir_block_converter;
mod meta;
mod runner;
#[cfg(test)]
mod tests;
// Phase 190: Use modularized converters
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;
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)
}