pub trait ModuleRuntimeInfo: Send + Sync + 'static {
    fn module(&self) -> &Arc<Module>;
    fn signature(&self, index: SignatureIndex) -> VMSharedSignatureIndex;
    fn image_base(&self) -> usize;
    fn function_loc(&self, func_index: DefinedFuncIndex) -> &FunctionLoc;
    fn memory_image(
        &self,
        memory: DefinedMemoryIndex
    ) -> Result<Option<&Arc<MemoryImage>>>; fn unique_id(&self) -> Option<CompiledModuleId>; fn wasm_data(&self) -> &[u8] ; fn signature_ids(&self) -> &[VMSharedSignatureIndex]; }
Expand description

Functionality required by this crate for a particular module. This is chiefly needed for lazy initialization of various bits of instance state.

When an instance is created, it holds an Arc so that it can get to signatures, metadata on functions, memory and funcref-table images, etc. All of these things are ordinarily known by the higher-level layers of Wasmtime. Specifically, the main implementation of this trait is provided by wasmtime::module::ModuleInner. Since the runtime crate sits at the bottom of the dependence DAG though, we don’t know or care about that; we just need some implementor of this trait for each allocation request.

Required Methods

The underlying Module.

The signatures.

The base address of where JIT functions are located.

Descriptors about each compiled function, such as the offset from image_base.

Returns the MemoryImage structure used for copy-on-write initialization of the memory, if it’s applicable.

A unique ID for this particular module. This can be used to allow for fastpaths to optimize a “re-instantiate the same module again” case.

A slice pointing to all data that is referenced by this instance.

Returns an array, indexed by SignatureIndex of all VMSharedSignatureIndex entries corresponding to the SignatureIndex.

Implementors