use crate::x86::function::Function;
use crate::{Result, CodeGenLibError};
pub trait JitRuntime {
unsafe fn typed<T, X>(&mut self) -> Result<extern "C" fn() -> X>;
}
impl JitRuntime for Function {
unsafe fn typed<Params, Ret>(&mut self) -> Result<extern "C" fn() -> Ret> {
let func_ptr: extern "C" fn() -> Ret = unsafe {
std::mem::transmute(self.gen.as_ptr())
};
if self.esymbols.len() != 0 { return Err(CodeGenLibError::JitFunctionsNoExtern)
}
Ok(func_ptr)
}
}