Trait wasmer::vm::LinearMemory

pub trait LinearMemory: Debug + Send {
    // Required methods
    fn ty(&self) -> MemoryType;
    fn size(&self) -> Pages;
    fn style(&self) -> MemoryStyle;
    fn grow(&mut self, delta: Pages) -> Result<Pages, MemoryError>;
    fn vmmemory(&self) -> NonNull<VMMemoryDefinition>;
    fn try_clone(&self) -> Result<Box<dyn LinearMemory, Global>, MemoryError>;
    fn copy(&mut self) -> Result<Box<dyn LinearMemory, Global>, MemoryError>;

    // Provided methods
    fn grow_at_least(&mut self, _min_size: u64) -> Result<(), MemoryError> { ... }
    fn reset(&mut self) -> Result<(), MemoryError> { ... }
    fn do_wait(
        &mut self,
        _dst: NotifyLocation,
        _timeout: Option<Duration>
    ) -> Result<u32, WaiterError> { ... }
    fn do_notify(&mut self, _dst: NotifyLocation, _count: u32) -> u32 { ... }
    fn thread_conditions(&self) -> Option<&ThreadConditions> { ... }
}
Expand description

Represents memory that is used by the WebAsssembly module

Required Methods§

fn ty(&self) -> MemoryType

Returns the type for this memory.

fn size(&self) -> Pages

Returns the size of hte memory in pages

fn style(&self) -> MemoryStyle

Returns the memory style for this memory.

fn grow(&mut self, delta: Pages) -> Result<Pages, MemoryError>

Grow memory by the specified amount of wasm pages.

Returns None if memory can’t be grown by the specified amount of wasm pages.

fn vmmemory(&self) -> NonNull<VMMemoryDefinition>

Return a VMMemoryDefinition for exposing the memory to compiled wasm code.

fn try_clone(&self) -> Result<Box<dyn LinearMemory, Global>, MemoryError>

Attempts to clone this memory (if its clonable)

fn copy(&mut self) -> Result<Box<dyn LinearMemory, Global>, MemoryError>

Copies this memory to a new memory

Provided Methods§

fn grow_at_least(&mut self, _min_size: u64) -> Result<(), MemoryError>

Grows the memory to at least a minimum size. If the memory is already big enough for the min size then this function does nothing

fn reset(&mut self) -> Result<(), MemoryError>

Resets the memory back to zero length

fn do_wait( &mut self, _dst: NotifyLocation, _timeout: Option<Duration> ) -> Result<u32, WaiterError>

Add current thread to the waiter hash, and wait until notified or timout. Return 0 if the waiter has been notified, 2 if the timeout occured, or None if en error happened

fn do_notify(&mut self, _dst: NotifyLocation, _count: u32) -> u32

Notify waiters from the wait list. Return the number of waiters notified

fn thread_conditions(&self) -> Option<&ThreadConditions>

Access the internal atomics handler.

Will be None if the memory does not support atomics.

Implementors§

§

impl LinearMemory for VMMemory

§

impl LinearMemory for VMSharedMemory

§

impl LinearMemory for VMOwnedMemory