Files
hakorune/src/runner/modes/cranelift.rs

46 lines
1.8 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.

use super::super::NyashRunner;
use nyash_rust::{parser::NyashParser, mir::MirCompiler};
use std::{fs, process};
impl NyashRunner {
/// Execute Cranelift JIT mode (skeleton)
pub(crate) fn execute_cranelift_mode(&self, filename: &str) {
// Read source
let code = match fs::read_to_string(filename) {
Ok(c) => c,
Err(e) => { eprintln!("❌ Error reading file {}: {}", filename, e); process::exit(1); }
};
// Parse → AST
let ast = match NyashParser::parse_from_string(&code) {
Ok(ast) => ast,
Err(e) => { eprintln!("❌ Parse error: {}", e); process::exit(1); }
};
let ast = crate::r#macro::maybe_expand_and_dump(&ast, false);
// AST → MIR
let mut mir_compiler = MirCompiler::new();
let compile_result = match mir_compiler.compile(ast) {
Ok(r) => r,
Err(e) => { eprintln!("❌ MIR compilation error: {}", e); process::exit(1); }
};
println!("📊 MIR Module compiled (Cranelift JIT skeleton)");
// Execute via Cranelift JIT (featuregated)
#[cfg(feature = "cranelift-jit")]
{
use nyash_rust::backend::cranelift_compile_and_execute;
match cranelift_compile_and_execute(&compile_result.module, "nyash_cljit_temp") {
Ok(result) => {
println!("✅ Cranelift JIT execution completed (skeleton)!");
println!("📊 Result: {}", result.to_string_box().value);
}
Err(e) => { eprintln!("❌ Cranelift JIT error: {}", e); process::exit(1); }
}
}
#[cfg(not(feature = "cranelift-jit"))]
{
eprintln!("❌ Cranelift JIT not available. Rebuild with --features cranelift-jit");
process::exit(1);
}
}
}