pub struct SharedMemory(/* private fields */);
Expand description

For shared memory (and only for shared memory), this lock-version restricts access when growing the memory or checking its size. This is to conform with the thread proposal: “When IsSharedArrayBuffer(...) is true, the return value should be the result of an atomic read-modify-write of the new size to the internal length slot.”

Implementations§

source§

impl SharedMemory

source

pub fn new(plan: MemoryPlan) -> Result<Self>

Construct a new SharedMemory.

source

pub fn wrap( plan: &MemoryPlan, memory: Box<dyn RuntimeLinearMemory>, ty: Memory ) -> Result<Self>

Wrap an existing Memory with the locking provided by a SharedMemory.

source

pub fn ty(&self) -> Memory

Return the memory type for this SharedMemory.

source

pub fn as_memory(self) -> Memory

Convert this shared memory into a Memory.

source

pub fn vmmemory_ptr(&self) -> *const VMMemoryDefinition

Return a pointer to the shared memory’s VMMemoryDefinition.

source

pub fn grow( &self, delta_pages: u64, store: Option<&mut dyn Store> ) -> Result<Option<(usize, usize)>, Error>

Same as RuntimeLinearMemory::grow, except with &self.

source

pub fn atomic_notify(&self, addr_index: u64, count: u32) -> Result<u32, Trap>

Implementation of memory.atomic.notify for this shared memory.

source

pub fn atomic_wait32( &self, addr_index: u64, expected: u32, timeout: Option<Instant> ) -> Result<WaitResult, Trap>

Implementation of memory.atomic.wait32 for this shared memory.

source

pub fn atomic_wait64( &self, addr_index: u64, expected: u64, timeout: Option<Instant> ) -> Result<WaitResult, Trap>

Implementation of memory.atomic.wait64 for this shared memory.

Trait Implementations§

source§

impl Clone for SharedMemory

source§

fn clone(&self) -> SharedMemory

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl RuntimeLinearMemory for SharedMemory

Proxy all calls through the RwLock.

source§

fn byte_size(&self) -> usize

Returns the number of allocated bytes.
source§

fn maximum_byte_size(&self) -> Option<usize>

Returns the maximum number of bytes the memory can grow to. Returns None if the memory is unbounded.
source§

fn grow( &mut self, delta_pages: u64, store: Option<&mut dyn Store> ) -> Result<Option<(usize, usize)>, Error>

Grows a memory by delta_pages. Read more
source§

fn grow_to(&mut self, size: usize) -> Result<()>

Grow memory to the specified amount of bytes. Read more
source§

fn vmmemory(&mut self) -> VMMemoryDefinition

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

fn needs_init(&self) -> bool

Does this memory need initialization? It may not if it already has initial contents courtesy of the MemoryImage passed to RuntimeMemoryCreator::new_memory().
source§

fn as_any_mut(&mut self) -> &mut dyn Any

Used for optional dynamic downcasting.
source§

fn wasm_accessible(&self) -> Range<usize>

Returns the range of addresses that may be reached by WebAssembly. Read more

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

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.