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
Fmatches 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 !RefUnwindSafe for RawCallableJitFunction
impl !Send for RawCallableJitFunction
impl !Sync for RawCallableJitFunction
impl !UnwindSafe for RawCallableJitFunction
impl Freeze for RawCallableJitFunction
impl Unpin for RawCallableJitFunction
impl UnsafeUnpin 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