pub struct InstanceAllocator { /* private fields */ }
Expand description
This is an intermediate type that manages the raw allocation and
metadata when creating an [Instance
].
This type will free the allocated memory if it’s dropped before being used.
It is important to remind that [Instance
] is dynamically-sized
based on VMOffsets
: The Instance.vmctx
field represents a
dynamically-sized array that extends beyond the nominal end of the
type. So in order to create an instance of it, we must:
- Define the correct layout for
Instance
(size and alignment), - Allocate it properly.
The InstanceAllocator::instance_layout
computes the correct
layout to represent the wanted [Instance
].
Then we use this layout to allocate an empty Instance
properly.
Implementations§
Source§impl InstanceAllocator
impl InstanceAllocator
Sourcepub fn new(
module: &ModuleInfo,
) -> (Self, Vec<NonNull<VMMemoryDefinition>>, Vec<NonNull<VMTableDefinition>>)
pub fn new( module: &ModuleInfo, ) -> (Self, Vec<NonNull<VMMemoryDefinition>>, Vec<NonNull<VMTableDefinition>>)
Allocates instance data for use with VMInstance::new
.
Returns a wrapper type around the allocation and 2 vectors of
pointers into the allocated buffer. These lists of pointers
correspond to the location in memory for the local memories and
tables respectively. These pointers should be written to before
calling VMInstance::new
.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for InstanceAllocator
impl !RefUnwindSafe for InstanceAllocator
impl !Send for InstanceAllocator
impl !Sync for InstanceAllocator
impl Unpin for InstanceAllocator
impl !UnwindSafe for InstanceAllocator
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
out
indicating that a T
is niched.