pub struct Compilation {
pub functions: Functions,
pub custom_sections: CustomSections,
pub function_call_trampolines: PrimaryMap<SignatureIndex, FunctionBody>,
pub dynamic_function_trampolines: PrimaryMap<FunctionIndex, FunctionBody>,
pub debug: Option<Dwarf>,
}
Expand description
The result of compiling a WebAssembly module’s functions.
Fields§
§functions: Functions
Compiled code for the function bodies.
custom_sections: CustomSections
Custom 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.
debug: Option<Dwarf>
Section ids corresponding to the Dwarf debug info
Trait Implementations§
Source§impl Debug for Compilation
impl Debug for Compilation
Source§impl PartialEq for Compilation
impl PartialEq for Compilation
impl Eq for Compilation
impl StructuralPartialEq for Compilation
Auto Trait Implementations§
impl Freeze for Compilation
impl RefUnwindSafe for Compilation
impl Send for Compilation
impl Sync for Compilation
impl Unpin for Compilation
impl UnwindSafe for Compilation
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§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
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key
and return true
if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§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.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out
indicating that a T
is niched.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