Very weirdly organized, but it JITs!

This commit is contained in:
2023-03-24 10:28:32 -05:00
parent ff8412acca
commit 4aa3a9419a
14 changed files with 441 additions and 81 deletions

View File

@@ -1,19 +1,21 @@
mod into_crane;
mod runtime;
use self::runtime::{RuntimeFunctionError, RuntimeFunctions};
use std::collections::HashMap;
pub use self::runtime::{RuntimeFunctionError, RuntimeFunctions};
use crate::ir;
use codespan_reporting::diagnostic::Diagnostic;
use cranelift_codegen::isa::LookupError;
use cranelift_codegen::settings::{Configurable, SetError};
use cranelift_codegen::{isa, settings, CodegenError};
use cranelift_module::{default_libcall_names, ModuleCompiledFunction, ModuleError};
use cranelift_module::{default_libcall_names, FuncId, ModuleError};
use cranelift_object::{object, ObjectBuilder, ObjectModule};
use target_lexicon::Triple;
use thiserror::Error;
pub struct Program {
_compiled: ModuleCompiledFunction,
_func_id: FuncId,
module: ObjectModule,
}
@@ -70,7 +72,13 @@ impl Program {
let rtfuns = RuntimeFunctions::new(&platform, &mut object_module)?;
Ok(Program {
_compiled: ir.into_cranelift(&mut object_module, &rtfuns)?,
_func_id: ir.into_cranelift::<BackendError, _>(
&mut object_module,
"gogogo",
&rtfuns,
&HashMap::new(),
&HashMap::new(),
)?,
module: object_module,
})
}