VMOwnedMemory

Struct VMOwnedMemory 

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

A linear memory instance.

Fields§

§mmap: WasmMmap§config: VMMemoryConfig

Implementations§

§

impl VMOwnedMemory

pub fn new( memory: &MemoryType, style: &MemoryStyle, ) -> Result<VMOwnedMemory, 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.

pub fn new_with_file( memory: &MemoryType, style: &MemoryStyle, backing_file: PathBuf, memory_type: MmapType, ) -> Result<VMOwnedMemory, 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 remaining 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.

pub unsafe fn from_definition( memory: &MemoryType, style: &MemoryStyle, vm_memory_location: NonNull<VMMemoryDefinition>, ) -> Result<VMOwnedMemory, 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.

pub unsafe fn from_definition_with_file( memory: &MemoryType, style: &MemoryStyle, vm_memory_location: NonNull<VMMemoryDefinition>, backing_file: Option<PathBuf>, memory_type: MmapType, ) -> Result<VMOwnedMemory, 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 remaining 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.

pub fn to_shared(self) -> VMSharedMemory

Converts this owned memory into shared memory

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

Copies this memory to a new memory

Trait Implementations§

§

impl Debug for VMOwnedMemory

§

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

Formats the value using the given formatter. Read more
§

impl From<VMOwnedMemory> for VMMemory

§

fn from(mem: VMOwnedMemory) -> VMMemory

Converts to this type from the input type.
§

impl LinearMemory for VMOwnedMemory

§

fn ty(&self) -> MemoryType

Returns the type for this memory.

§

fn size(&self) -> Pages

Returns the size of the 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 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 down to a zero size

§

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

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

§

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

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

§

fn copy(&self) -> Result<Box<dyn LinearMemory + Sync + Send>, MemoryError>

Copies this memory to a new memory

§

fn as_shared(&self) -> Result<VMSharedMemory, MemoryError>

Return a concrete shared memory handle for detached API sharing.

§

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

Add current thread to the waiter hash, and wait until notified or timeout. Return 0 if the waiter has been notified, 1 if there was a value mismatch, or 2 if the timeout occurred. Read more
§

fn do_notify(&mut self, _dst: u32, _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. Read more
§

impl Send for VMOwnedMemory

§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<T> LayoutRaw for T

§

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

Returns the layout of the type.
§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> Pointee for T

§

type Metadata = ()

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

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

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

Source§

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

Source§

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

impl<T> Upcastable for T
where T: Any + Send + Sync + 'static,

§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

upcast ref
§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

upcast mut ref
§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

upcast boxed dyn
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more