[][src]Struct wasmer_runtime::Ctx

#[repr(C)]pub struct Ctx {
    pub module_info: *const ModuleInfo,
    pub data: *mut c_void,
    pub data_finalizer: Option<fn(*mut c_void)>,
}

The context of the currently running WebAssembly instance.

This is implicitly passed to every WebAssembly function. Since this is per-instance, each field has a statically (as in after compiling the wasm) known size, so no runtime checks are necessary.

While the runtime currently just passes this around as the first, implicit parameter of every function, it may someday be pinned to a register (especially on arm, which has a ton of registers) to reduce register shuffling.

Fields

module_info: *const ModuleInfo

A pointer to the ModuleInfo of this instance.

data: *mut c_void

This is intended to be user-supplied, per-instance contextual data. There are currently some issue with it, notably that it cannot be set before running the start function in a WebAssembly module. Additionally, the data field may be taken by another ABI implementation that the user wishes to use in addition to their own, such as WASI. This issue is being discussed at #1111.

Alternatively, per-function data can be used if the function in the [ImportObject] is a closure. This cannot duplicate data though, so if data may be shared if the [ImportObject] is reused.

data_finalizer: Option<fn(*mut c_void)>

If there's a function set in this field, it gets called when the context is destructed, e.g. when an Instance is dropped.

Trait Implementations

impl Clone for Ctx[src]

impl Debug for Ctx[src]

impl Drop for Ctx[src]

Auto Trait Implementations

impl RefUnwindSafe for Ctx

impl !Send for Ctx

impl !Sync for Ctx

impl Unpin for Ctx

impl UnwindSafe for Ctx

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.