Struct wasmtime::CompiledModule

source ·
pub struct CompiledModule { /* private fields */ }
Expand description

A compiled wasm module, ready to be instantiated.

Implementations§

source§

impl CompiledModule

source

pub fn from_artifacts( code_memory: Arc<CodeMemory>, info: CompiledModuleInfo, profiler: &dyn ProfilingAgent, ) -> Result<Self>

Creates CompiledModule directly from a precompiled artifact.

The code_memory argument is expected to be the result of a previous call to ObjectBuilder::finish above. This is an ELF image, at this time, which contains all necessary information to create a CompiledModule from a compilation.

This method also takes info, an optionally-provided deserialization of the artifacts’ compilation metadata section. If this information is not provided then the information will be deserialized from the image of the compilation artifacts. Otherwise it will be assumed to be what would otherwise happen if the section were to be deserialized.

The profiler argument here is used to inform JIT profiling runtimes about new code that is loaded.

source

pub fn unique_id(&self) -> CompiledModuleId

Get this module’s unique ID. It is unique with respect to a single allocator (which is ordinarily held on a Wasm engine).

source

pub fn mmap(&self) -> &MmapVec

Returns the underlying memory which contains the compiled module’s image.

source

pub fn code_memory(&self) -> &Arc<CodeMemory>

Returns the underlying owned mmap of this compiled image.

source

pub fn text(&self) -> &[u8]

Returns the text section of the ELF image for this compiled module.

This memory should have the read/execute permissions.

source

pub fn module(&self) -> &Arc<Module>

Return a reference-counting pointer to a module.

source

pub fn func_name(&self, idx: FuncIndex) -> Option<&str>

Looks up the name section name for the function index idx, if one was specified in the original wasm module.

source

pub fn module_mut(&mut self) -> Option<&mut Module>

Return a reference to a mutable module (if possible).

source

pub fn finished_functions( &self, ) -> impl ExactSizeIterator<Item = (DefinedFuncIndex, &[u8])> + '_

Returns an iterator over all functions defined within this module with their index and their body in memory.

source

pub fn finished_function(&self, index: DefinedFuncIndex) -> &[u8]

Returns the body of the function that index points to.

source

pub fn array_to_wasm_trampoline(&self, index: DefinedFuncIndex) -> Option<&[u8]>

Get the array-to-Wasm trampoline for the function index points to.

If the function index points to does not escape, then None is returned.

These trampolines are used for array callers (e.g. Func::new) calling Wasm callees.

source

pub fn wasm_to_array_trampoline( &self, signature: ModuleInternedTypeIndex, ) -> &[u8]

Get the Wasm-to-array trampoline for the given signature.

These trampolines are used for filling in VMFuncRef::wasm_call for Func::wrap-style host funcrefs that don’t have access to a compiler when created.

source

pub fn stack_maps( &self, ) -> impl Iterator<Item = (&[u8], &[StackMapInformation])>

Returns the stack map information for all functions defined in this module.

The iterator returned iterates over the span of the compiled function in memory with the stack maps associated with those bytes.

source

pub fn func_by_text_offset( &self, text_offset: usize, ) -> Option<(DefinedFuncIndex, u32)>

Lookups a defined function by a program counter value.

Returns the defined function index and the relative address of text_offset within the function itself.

source

pub fn func_loc(&self, index: DefinedFuncIndex) -> &FunctionLoc

Gets the function location information for a given function index.

source

pub fn wasm_func_info(&self, index: DefinedFuncIndex) -> &WasmFunctionInfo

Gets the function information for a given function index.

source

pub fn symbolize_context(&self) -> Result<Option<SymbolizeContext<'_>>>

Creates a new symbolication context which can be used to further symbolicate stack traces.

Basically this makes a thing which parses debuginfo and can tell you what filename and line number a wasm pc comes from.

source

pub fn has_unparsed_debuginfo(&self) -> bool

Returns whether the original wasm module had unparsed debug information based on the tunables configuration.

source

pub fn has_address_map(&self) -> bool

Indicates whether this module came with n address map such that lookups via wasmtime_environ::lookup_file_pos will succeed.

If this function returns false then lookup_file_pos will always return None.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
source§

type Init = T

The type for initializers.
source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.