pub struct RawCallableJitFunction { /* private fields */ }
Expand description
A raw JIT-compiled function for manual type conversion
This is a type-erased version of CallableJitFunction
that allows
manual function pointer conversion for cases not covered by the
predefined call()
methods.
§Usage
let raw_func = RawCallableJitFunction::new(code)?;
// Manual conversion to any function type
let func: extern "C" fn(u64, u64, u64, u64, u64, u64, u64, u64) -> u64 =
unsafe { raw_func.as_fn() };
let result = func(1, 2, 3, 4, 5, 6, 7, 8);
Implementations§
Source§impl RawCallableJitFunction
impl RawCallableJitFunction
Sourcepub fn new(code: &[u8]) -> Result<Self, JitError>
pub fn new(code: &[u8]) -> Result<Self, JitError>
Create a new raw callable JIT function from instruction bytes
Sourcepub unsafe fn as_fn<F>(&self) -> F
pub unsafe fn as_fn<F>(&self) -> F
Convert to a function pointer of the specified type
§Safety
The caller must ensure that:
- The function signature
F
matches the actual assembled code - The assembled code follows the expected calling convention (usually C ABI)
- The function pointer is called with valid arguments
§Example
let raw_func = RawCallableJitFunction::new(code)?;
// For complex signatures not covered by CallableJitFunction
let func: extern "C" fn(u64, u64, u64, u64, u64, u64, u64, u64) -> u64 =
unsafe { raw_func.as_fn() };
let result = func(1, 2, 3, 4, 5, 6, 7, 8);
Auto Trait Implementations§
impl Freeze for RawCallableJitFunction
impl !RefUnwindSafe for RawCallableJitFunction
impl !Send for RawCallableJitFunction
impl !Sync for RawCallableJitFunction
impl Unpin for RawCallableJitFunction
impl !UnwindSafe for RawCallableJitFunction
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more