Expand description
Runtime library support for Wasmer.
Re-exports§
pub use crate::memory::initialize_memory_with_data;
Modules§
- export 🔒
- global 🔒
- imports 🔒
- instance 🔒An
Instance
contains all the runtime state used by execution of a WebAssembly module (except its callstack and register state). AnVMInstance
is a wrapper aroundInstance
that manages how it is allocated and deallocated. - Runtime library calls.
- memory 🔒Memory management for linear memories.
- mmap 🔒Low-level abstraction for allocating and managing zero-filled pages of memory.
- This section defines the
PROBESTACK
intrinsic which is used in the implementation of “stack probes” on certain platforms. - Implement a registry of function signatures, for fast indirect call signature checking.
- store 🔒
- table 🔒Memory management for tables.
- trap 🔒This is the module that facilitates the usage of Traps in Wasmer Runtime
- This file declares
VMContext
and several related structs which contain fields that compiled wasm code accesses directly.
Structs§
- A safe wrapper around
VMFunctionBody
. - Resolved import pointers.
- This is an intermediate type that manages the raw allocation and metadata when creating an
Instance
. - Internal handle to an object owned by the current context.
- A simple struct consisting of a page-aligned pointer to page-aligned and initially-zeroed memory and a length.
- A location in memory for a Waiter
- Pointers to section data.
- WebAssembly requires that the caller and callee signatures in an indirect call must match. To implement this efficiently, keep a registry of all signatures, shared by all instances, so that call sites can just do an index comparison.
- Handle to an object managed by a context.
- Unique ID to identify a context.
- Set of objects managed by a context.
- Target specific type for shared signature index.
- An index type for builtin functions.
- The VM caller-checked “anyfunc” record, for caller-side signature checking. It consists of the actual function pointer and a signature id to be checked by the caller.
- Configuration for the runtime VM Currently only the stack size is configurable
- The VM “context”, which is pointed to by the
vmctx
arg in the compiler. This has information about globals, memories, tables, and other runtime state associated with the current instance. - The
VMDynamicFunctionContext
is the context that dynamic functions will receive when called (rather thanvmctx
). A dynamic function is a function for which we don’t know the signature until runtime. - Underlying object referenced by a
VMExternRef
. - Represents an opaque reference to any data within WebAssembly.
- A function reference. A single word that points to metadata about a function.
- A function export value.
- A placeholder byte-sized type which is just used to provide some amount of type safety when dealing with pointers to JIT-compiled function bodies. Note that it’s deliberately not Copy, as we shouldn’t be carelessly copying function body bytes around.
- Underlying FunctionEnvironment used by a
VMFunction
. - An imported function.
- A Global instance
- The storage for a WebAssembly global defined within the instance.
- The fields compiled code needs to access to utilize a WebAssembly global variable imported from another instance.
- A handle holding an
Instance
of a WebAssembly module. - Represents linear memory that can be either owned or shared
- The fields compiled code needs to access to utilize a WebAssembly linear memory defined within the instance, namely the start address and the size in bytes.
- The fields compiled code needs to access to utilize a WebAssembly linear memory imported from another instance.
- This class computes offsets to fields within VMContext and other related structs that JIT code accesses directly.
- A linear memory instance.
- A shared linear memory instance.
- An index into the shared signature registry, usable for checking signatures at indirect calls.
- A table instance.
- The fields compiled code needs to access to utilize a WebAssembly table defined within the instance.
- The fields compiled code needs to access to utilize a WebAssembly table imported from another instance.
Enums§
- The name of a runtime library routine.
- Data used by the generated code is generally located inline within the
VMContext
for items defined in an instance. Host-defined objects are allocated separately and owned directly by the context. - Error type describing things that can go wrong when operating on Wasm Memories.
- Implementation styles for WebAssembly linear memory.
- The type of mmap to create
- A reference stored in a table. Can be either an externref or a funcref.
- Implementation styles for WebAssembly tables.
- Stores trace message with backtrace.
- A trap code describing the reason for a trap.
- The value of an export passed from one instance to another.
- A function kind is a calling convention into and out of wasm code.
Constants§
- Version number of this crate.
Statics§
- The probestack based on the Rust probestack
Traits§
- Represents memory that is used by the WebAsssembly module
Functions§
- Catches any wasm traps that happen within the execution of
closure
, returning them as aResult
. - This function is required to be called before any WebAssembly is entered. This will configure global state such as signal handlers to prepare the process to receive wasm traps.
- When executing on the Wasm stack, temporarily switch back to the host stack to perform an operation that should not be constrainted by the Wasm stack limits.
- Raises a trap from inside library code immediately.
- Raises a user-defined trap immediately.
- Carries a Rust panic across wasm code and resumes the panic on the other side.
- Default stack size is 1MB.
- Call the wasm function pointed to by
callee
.
Type Aliases§
- Function which may handle custom signals while processing traps.
- The type for tramplines in the VM.
Unions§
- Union representing the first parameter passed when calling a function.