struct InstanceGroupState {
main_instance: Option<Instance>,
main_instance_tls_base: u64,
side_instances: HashMap<ModuleHandle, DlInstance>,
stack_pointer: Global,
memory: Memory,
indirect_function_table: Table,
recv_pending_operation_barrier: BusReader<Arc<Barrier>>,
recv_pending_operation: BusReader<DlOperation>,
}
Fields§
§main_instance: Option<Instance>
§main_instance_tls_base: u64
§side_instances: HashMap<ModuleHandle, DlInstance>
§stack_pointer: Global
§memory: Memory
§indirect_function_table: Table
§recv_pending_operation_barrier: BusReader<Arc<Barrier>>
§recv_pending_operation: BusReader<DlOperation>
Implementations§
Source§impl InstanceGroupState
impl InstanceGroupState
fn main_instance(&self) -> Option<&Instance>
fn tls_base(&self, module_handle: ModuleHandle) -> Option<u64>
fn try_instance(&self, handle: ModuleHandle) -> Option<&Instance>
fn instance(&self, handle: ModuleHandle) -> &Instance
Sourcefn allocate_function_table(
&mut self,
store: &mut impl AsStoreMut,
table_size: u32,
table_alignment: u32,
) -> Result<u64, RuntimeError>
fn allocate_function_table( &mut self, store: &mut impl AsStoreMut, table_size: u32, table_alignment: u32, ) -> Result<u64, RuntimeError>
Allocate space on the indirect function table for the given number of functions
table_alignment is the alignment of the table as a power of two.
fn append_to_function_table( &self, store: &mut impl AsStoreMut, func: Function, ) -> Result<u32, RuntimeError>
fn place_in_function_table_at( &self, store: &mut impl AsStoreMut, func: Function, index: u32, ) -> Result<(), RuntimeError>
fn instantiate_side_module_from_link_state( &mut self, linker_state: &mut LinkerState, store: &mut impl AsStoreMut, env: &FunctionEnv<WasiEnv>, link_state: &mut InProgressLinkState, module_handle: ModuleHandle, ) -> Result<(), LinkError>
fn allocate_function_table_for_existing_module( &mut self, linker_state: &LinkerState, store: &mut impl AsStoreMut, module_handle: ModuleHandle, ) -> Result<(), LinkError>
fn instantiate_side_module_from_linker( &mut self, linker_state: &LinkerState, store: &mut impl AsStoreMut, env: &FunctionEnv<WasiEnv>, module_handle: ModuleHandle, pending_resolutions: &mut PendingResolutionsFromLinker, ) -> Result<(), LinkError>
fn finalize_pending_resolutions_from_linker( &self, pending_resolutions: &PendingResolutionsFromLinker, store: &mut impl AsStoreMut, ) -> Result<(), LinkError>
fn apply_resolved_function( &self, store: &mut impl AsStoreMut, name: &str, resolved_from: ModuleHandle, function_table_index: u32, ) -> Result<(), LinkError>
pub fn apply_function_table_allocation( &mut self, store: &mut impl AsStoreMut, index: u32, size: u32, ) -> Result<(), LinkError>
fn apply_dl_operation( &mut self, linker_state: &LinkerState, operation: DlOperation, store: &mut impl AsStoreMut, env: &FunctionEnv<WasiEnv>, ) -> Result<(), LinkError>
fn apply_requested_symbols_from_linker( &self, store: &mut impl AsStoreMut, linker_state: &LinkerState, ) -> Result<(), LinkError>
fn resolve_exported_symbol( &self, symbol: &str, ) -> Option<(ModuleHandle, &Extern)>
fn populate_imports_from_link_state( &self, module_handle: ModuleHandle, linker_state: &mut LinkerState, link_state: &mut InProgressLinkState, store: &mut impl AsStoreMut, module: &Module, imports: &mut Imports, env: &FunctionEnv<WasiEnv>, well_known_imports: &[(&str, &str, u64)], ) -> Result<(), LinkError>
fn populate_imports_from_linker( &self, module_handle: ModuleHandle, linker_state: &LinkerState, store: &mut impl AsStoreMut, module: &Module, imports: &mut Imports, env: &FunctionEnv<WasiEnv>, well_known_imports: &[(&str, &str, u64)], pending_resolutions: &mut PendingResolutionsFromLinker, ) -> Result<(), LinkError>
fn resolve_export( &self, linker_state: &LinkerState, store: &mut impl AsStoreMut, module_handle: Option<ModuleHandle>, symbol: &str, allow_hidden: bool, ) -> Result<(PartiallyResolvedExport, ModuleHandle), ResolveError>
fn resolve_export_from( &self, store: &mut impl AsStoreMut, module_handle: ModuleHandle, symbol: &str, instance: &Instance, dylink_info: &DylinkInfo, memory_base: u64, tls_base: Option<u64>, allow_hidden: bool, ) -> Result<PartiallyResolvedExport, ResolveError>
fn generate_stub_function( &self, store: &mut impl AsStoreMut, ty: &FunctionType, env: &FunctionEnv<WasiEnv>, requesting_module: ModuleHandle, name: String, ) -> Function
fn finalize_pending_globals( &self, linker_state: &mut LinkerState, store: &mut impl AsStoreMut, unresolved_globals: &Vec<UnresolvedGlobal>, ) -> Result<(), LinkError>
Auto Trait Implementations§
impl Freeze for InstanceGroupState
impl !RefUnwindSafe for InstanceGroupState
impl Send for InstanceGroupState
impl Sync for InstanceGroupState
impl Unpin for InstanceGroupState
impl !UnwindSafe for InstanceGroupState
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Mutably borrows from an owned value. Read more
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
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 moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
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 N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2where
T: SharedNiching<N1, N2>,
N1: Niching<T>,
N2: Niching<T>,
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> Pointee for T
impl<T> Pointee for T
§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Upcastable for T
impl<T> Upcastable for T
§fn upcast_any_ref(&self) -> &(dyn Any + 'static)
fn upcast_any_ref(&self) -> &(dyn Any + 'static)
upcast ref
§fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)
upcast mut ref
§fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
fn upcast_any_box(self: Box<T>) -> Box<dyn Any>
upcast boxed dyn