Struct wasmer_vm::memory::VMOwnedMemory

source ·
pub struct VMOwnedMemory {
    mmap: WasmMmap,
    config: VMMemoryConfig,
}
Expand description

A linear memory instance.

Fields§

§mmap: WasmMmap§config: VMMemoryConfig

Implementations§

source§

impl VMOwnedMemory

source

pub fn new( memory: &MemoryType, style: &MemoryStyle, ) -> Result<Self, MemoryError>

Create a new linear memory instance with specified minimum and maximum number of wasm pages.

This creates a Memory with owned metadata: this can be used to create a memory that will be imported into Wasm modules.

source

pub fn new_with_file( memory: &MemoryType, style: &MemoryStyle, backing_file: PathBuf, memory_type: MmapType, ) -> Result<Self, MemoryError>

Create a new linear memory instance with specified minimum and maximum number of wasm pages that is backed by a memory file. When set to private the file will be remaing in memory and never flush to disk, when set to shared the memory will be flushed to disk.

This creates a Memory with owned metadata: this can be used to create a memory that will be imported into Wasm modules.

source

pub unsafe fn from_definition( memory: &MemoryType, style: &MemoryStyle, vm_memory_location: NonNull<VMMemoryDefinition>, ) -> Result<Self, MemoryError>

Create a new linear memory instance with specified minimum and maximum number of wasm pages.

This creates a Memory with metadata owned by a VM, pointed to by vm_memory_location: this can be used to create a local memory.

§Safety
  • vm_memory_location must point to a valid location in VM memory.
source

pub unsafe fn from_definition_with_file( memory: &MemoryType, style: &MemoryStyle, vm_memory_location: NonNull<VMMemoryDefinition>, backing_file: Option<PathBuf>, memory_type: MmapType, ) -> Result<Self, MemoryError>

Create a new linear memory instance with specified minimum and maximum number of wasm pages that is backed by a file. When set to private the file will be remaing in memory and never flush to disk, when set to shared the memory will be flushed to disk.

This creates a Memory with metadata owned by a VM, pointed to by vm_memory_location: this can be used to create a local memory.

§Safety
  • vm_memory_location must point to a valid location in VM memory.
source

unsafe fn new_internal( memory: &MemoryType, style: &MemoryStyle, vm_memory_location: Option<NonNull<VMMemoryDefinition>>, backing_file: Option<PathBuf>, memory_type: MmapType, ) -> Result<Self, MemoryError>

Build a Memory with either self-owned or VM owned metadata.

source

pub fn to_shared(self) -> VMSharedMemory

Converts this owned memory into shared memory

source

pub fn copy(&mut self) -> Result<Self, MemoryError>

Copies this memory to a new memory

Trait Implementations§

source§

impl Debug for VMOwnedMemory

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<VMOwnedMemory> for VMMemory

source§

fn from(mem: VMOwnedMemory) -> Self

Converts to this type from the input type.
source§

impl LinearMemory for VMOwnedMemory

source§

fn ty(&self) -> MemoryType

Returns the type for this memory.

source§

fn size(&self) -> Pages

Returns the size of hte memory in pages

source§

fn style(&self) -> MemoryStyle

Returns the memory style for this memory.

source§

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.

source§

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

source§

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

Resets the memory down to a zero size

source§

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

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

source§

fn try_clone(&self) -> Result<Box<dyn LinearMemory + 'static>, MemoryError>

Owned memory can not be cloned (this will always return None)

source§

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

Copies this memory to a new memory

source§

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

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

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

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

Access the internal atomics handler. Read more
source§

impl Send for VMOwnedMemory

source§

impl Sync for VMOwnedMemory

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
§

impl<T> ArchivePointee for T

§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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.

§

impl<T> LayoutRaw for T

§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
§

impl<T> Pointee for T

§

type Metadata = ()

The metadata type for pointers and references to this type.
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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.