1use crate::x86::function::Function;
7use crate::{Result, CodeGenLibError};
8
9pub trait JitRuntime {
10 unsafe fn typed<T, X>(&mut self) -> Result<extern "C" fn() -> X>;
12}
13
14impl JitRuntime for Function {
15 unsafe fn typed<Params, Ret>(&mut self) -> Result<extern "C" fn() -> Ret> {
17 let func_ptr: extern "C" fn() -> Ret = unsafe {
18 std::mem::transmute(self.gen.as_ptr())
19 };
20
21 if self.esymbols.len() != 0 { return Err(CodeGenLibError::JitFunctionsNoExtern)
23 }
24
25 Ok(func_ptr)
26 }
27}