pub struct RkyvCompilation {
pub functions: Functions,
pub custom_sections: CustomSections,
pub function_call_trampolines: PrimaryMap<SignatureIndex, FunctionBody>,
pub dynamic_function_trampolines: PrimaryMap<FunctionIndex, FunctionBody>,
pub unwind_info: UnwindInfo,
pub got: GOT,
}Expand description
The result of compiling a WebAssembly module’s functions.
Fields§
§functions: FunctionsCompiled code for the function bodies.
custom_sections: CustomSectionsCustom sections for the module. It will hold the data, for example, for constants used in a function, global variables, rodata_64, hot/cold function partitioning, …
function_call_trampolines: PrimaryMap<SignatureIndex, FunctionBody>Trampolines to call a function defined locally in the wasm via a
provided Vec of values.
This allows us to call easily Wasm functions, such as:
ⓘ
let func = instance.exports.get_function("my_func");
func.call(&[Value::I32(1)]);dynamic_function_trampolines: PrimaryMap<FunctionIndex, FunctionBody>Trampolines to call a dynamic function defined in a host, from a Wasm module.
This allows us to create dynamic Wasm functions, such as:
ⓘ
fn my_func(values: &[Val]) -> Result<Vec<Val>, RuntimeError> {
// do something
}
let my_func_type = FunctionType::new(vec![Type::I32], vec![Type::I32]);
let imports = imports!{
"namespace" => {
"my_func" => Function::new(&store, my_func_type, my_func),
}
}Note: Dynamic function trampolines are only compiled for imported function types.
unwind_info: UnwindInfoSection ids corresponding to the unwind information.
got: GOTA reference to the GOT instance for the compilation.
Trait Implementations§
Source§impl Debug for RkyvCompilation
impl Debug for RkyvCompilation
Source§impl PartialEq for RkyvCompilation
impl PartialEq for RkyvCompilation
impl Eq for RkyvCompilation
impl StructuralPartialEq for RkyvCompilation
Auto Trait Implementations§
impl Freeze for RkyvCompilation
impl RefUnwindSafe for RkyvCompilation
impl Send for RkyvCompilation
impl Sync for RkyvCompilation
impl Unpin for RkyvCompilation
impl UnwindSafe for RkyvCompilation
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
Source§impl<T> Upcastable for T
impl<T> Upcastable for T
Source§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
Source§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref