pub struct FuncEnv<'a, 'translation: 'a, 'data: 'translation, P: PtrSize> {
pub vmoffsets: &'a VMOffsets<P>,
pub translation: &'translation ModuleTranslation<'data>,
pub types: &'translation ModuleTypesBuilder,
pub builtins: &'translation mut BuiltinFunctions,
/* private fields */
}
Expand description
The function environment.
Contains all information about the module and runtime that is accessible to to a particular function during code generation.
Fields§
§vmoffsets: &'a VMOffsets<P>
Offsets to the fields within the VMContext
ptr.
translation: &'translation ModuleTranslation<'data>
Metadata about the translation process of a WebAssembly module.
types: &'translation ModuleTypesBuilder
The module’s function types.
builtins: &'translation mut BuiltinFunctions
The built-in functions available to the JIT code.
Implementations§
Source§impl<'a, 'translation, 'data, P: PtrSize> FuncEnv<'a, 'translation, 'data, P>
impl<'a, 'translation, 'data, P: PtrSize> FuncEnv<'a, 'translation, 'data, P>
Sourcepub fn new(
vmoffsets: &'a VMOffsets<P>,
translation: &'translation ModuleTranslation<'data>,
types: &'translation ModuleTypesBuilder,
builtins: &'translation mut BuiltinFunctions,
tunables: &'translation Tunables,
isa: &dyn TargetIsa,
ptr_type: WasmValType,
) -> Self
pub fn new( vmoffsets: &'a VMOffsets<P>, translation: &'translation ModuleTranslation<'data>, types: &'translation ModuleTypesBuilder, builtins: &'translation mut BuiltinFunctions, tunables: &'translation Tunables, isa: &dyn TargetIsa, ptr_type: WasmValType, ) -> Self
Create a new function environment.
Sourcepub fn resolve_global(&mut self, index: GlobalIndex) -> GlobalData
pub fn resolve_global(&mut self, index: GlobalIndex) -> GlobalData
Resolves GlobalData
of a global at the given index.
Sourcepub fn resolve_table_data(&mut self, index: TableIndex) -> TableData
pub fn resolve_table_data(&mut self, index: TableIndex) -> TableData
Returns the table information for the given table index.
Sourcepub fn resolve_heap(&mut self, index: MemoryIndex) -> HeapData
pub fn resolve_heap(&mut self, index: MemoryIndex) -> HeapData
Resolve a HeapData
from a MemoryIndex.
Sourcepub fn table(&mut self, index: TableIndex) -> &Table
pub fn table(&mut self, index: TableIndex) -> &Table
Get a Table
from a TableIndex
.
Sourcepub fn heap_access_spectre_mitigation(&self) -> bool
pub fn heap_access_spectre_mitigation(&self) -> bool
Returns true if Spectre mitigations are enabled for heap bounds check.
Sourcepub fn table_access_spectre_mitigation(&self) -> bool
pub fn table_access_spectre_mitigation(&self) -> bool
Returns true if Spectre mitigations are enabled for table element accesses.
Sourcepub fn name_builtin(
&mut self,
builtin: BuiltinFunctionIndex,
) -> UserExternalNameRef
pub fn name_builtin( &mut self, builtin: BuiltinFunctionIndex, ) -> UserExternalNameRef
Creates a name to reference the builtin
provided.
Sourcepub fn name_wasm(&mut self, index: FuncIndex) -> UserExternalNameRef
pub fn name_wasm(&mut self, index: FuncIndex) -> UserExternalNameRef
Creates a name to reference the wasm function index
provided.
Sourcepub fn take_name_map(
&mut self,
) -> PrimaryMap<UserExternalNameRef, UserExternalName>
pub fn take_name_map( &mut self, ) -> PrimaryMap<UserExternalNameRef, UserExternalName>
Extracts the name map that was created while translating this function.
Auto Trait Implementations§
impl<'a, 'translation, 'data, P> Freeze for FuncEnv<'a, 'translation, 'data, P>
impl<'a, 'translation, 'data, P> RefUnwindSafe for FuncEnv<'a, 'translation, 'data, P>where
P: RefUnwindSafe,
impl<'a, 'translation, 'data, P> Send for FuncEnv<'a, 'translation, 'data, P>where
P: Sync,
impl<'a, 'translation, 'data, P> Sync for FuncEnv<'a, 'translation, 'data, P>where
P: Sync,
impl<'a, 'translation, 'data, P> Unpin for FuncEnv<'a, 'translation, 'data, P>
impl<'a, 'translation, 'data, P> !UnwindSafe for FuncEnv<'a, 'translation, 'data, P>
Blanket Implementations§
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> 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>
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>
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