Struct wasmtime_runtime::Memory
source · pub struct Memory(/* private fields */);
Expand description
Representation of a runtime wasm linear memory.
Implementations§
source§impl Memory
impl Memory
sourcepub fn new_dynamic(
plan: &MemoryPlan,
creator: &dyn RuntimeMemoryCreator,
store: &mut dyn Store,
memory_image: Option<&Arc<MemoryImage>>,
) -> Result<Self>
pub fn new_dynamic( plan: &MemoryPlan, creator: &dyn RuntimeMemoryCreator, store: &mut dyn Store, memory_image: Option<&Arc<MemoryImage>>, ) -> Result<Self>
Create a new dynamic (movable) memory instance for the specified plan.
sourcepub fn new_static(
plan: &MemoryPlan,
base: &'static mut [u8],
memory_image: MemoryImageSlot,
memory_and_guard_size: usize,
store: &mut dyn Store,
) -> Result<Self>
pub fn new_static( plan: &MemoryPlan, base: &'static mut [u8], memory_image: MemoryImageSlot, memory_and_guard_size: usize, store: &mut dyn Store, ) -> Result<Self>
Create a new static (immovable) memory instance for the specified plan.
sourcepub fn maximum_byte_size(&self) -> Option<usize>
pub fn maximum_byte_size(&self) -> Option<usize>
Returns the maximum number of pages the memory can grow to at runtime.
Returns None
if the memory is unbounded.
The runtime maximum may not be equal to the maximum from the linear memory’s Wasm type when it is being constrained by an instance allocator.
sourcepub unsafe fn grow(
&mut self,
delta_pages: u64,
store: Option<&mut dyn Store>,
) -> Result<Option<usize>, Error>
pub unsafe fn grow( &mut self, delta_pages: u64, store: Option<&mut dyn Store>, ) -> Result<Option<usize>, Error>
Grow memory by the specified amount of wasm pages.
Returns None
if memory can’t be grown by the specified amount
of wasm pages. Returns Some
with the old size of memory, in bytes, on
successful growth.
§Safety
Resizing the memory can reallocate the memory buffer for dynamic memories.
An instance’s VMContext
may have pointers to the memory’s base and will
need to be fixed up after growing the memory.
Generally, prefer using InstanceHandle::memory_grow
, which encapsulates
this unsafety.
Ensure that the provided Store is not used to get access any Memory which lives inside it.
sourcepub fn vmmemory(&mut self) -> VMMemoryDefinition
pub fn vmmemory(&mut self) -> VMMemoryDefinition
Return a VMMemoryDefinition
for exposing the memory to compiled wasm code.
sourcepub fn unwrap_static_image(self) -> MemoryImageSlot
pub fn unwrap_static_image(self) -> MemoryImageSlot
Consume the memory, returning its MemoryImageSlot
if any is present.
The image should only be present for a subset of memories created with
Memory::new_static()
.
If the Memory is a SharedMemory, unwrap it and return a clone to that shared memory.
sourcepub fn atomic_notify(&mut self, addr: u64, count: u32) -> Result<u32, Trap>
pub fn atomic_notify(&mut self, addr: u64, count: u32) -> Result<u32, Trap>
Implementation of memory.atomic.notify
for all memories.
sourcepub fn atomic_wait32(
&mut self,
addr: u64,
expected: u32,
deadline: Option<Instant>,
) -> Result<WaitResult, Trap>
pub fn atomic_wait32( &mut self, addr: u64, expected: u32, deadline: Option<Instant>, ) -> Result<WaitResult, Trap>
Implementation of memory.atomic.wait32
for all memories.
sourcepub fn atomic_wait64(
&mut self,
addr: u64,
expected: u64,
deadline: Option<Instant>,
) -> Result<WaitResult, Trap>
pub fn atomic_wait64( &mut self, addr: u64, expected: u64, deadline: Option<Instant>, ) -> Result<WaitResult, Trap>
Implementation of memory.atomic.wait64
for all memories.
sourcepub fn wasm_accessible(&self) -> Range<usize>
pub fn wasm_accessible(&self) -> Range<usize>
Returns the range of bytes that WebAssembly should be able to address in this linear memory. Note that this includes guard pages which wasm can hit.