Struct ComplexJitState
pub struct ComplexJitState<'a, A: Arch> { /* private fields */ }
Expand description
A CPU state that is constructed just-in-time by replacing specific state bytes with the correct values.
Each state change can be applied and reverted, reducing memory usage when specific instances of the state change different state bytes each time.
If the same state bytes are changed for every state, use a super::SimpleJitState
instead.
Implementations§
§impl<'a, A: Arch> ComplexJitState<'a, A>
impl<'a, A: Arch> ComplexJitState<'a, A>
pub fn build<'s, M: MappableArea>(
base_state: SystemState<A>,
state_gen: &'s StateGen<'a, A, M>,
view: SystemStateByteView<'a, A>,
) -> ComplexJitStateBuilder<'a, 's, A, M>
pub fn build<'s, M: MappableArea>( base_state: SystemState<A>, state_gen: &'s StateGen<'a, A, M>, view: SystemStateByteView<'a, A>, ) -> ComplexJitStateBuilder<'a, 's, A, M>
Creates a new ComplexJitStateBuilder
.
The ComplexJitStateBuilder::create
method can be invoked multiple times to create states that use the same underlying base_state
.
Trait Implementations§
§impl<A: Arch> AsSystemState<A> for ComplexJitState<'_, A>
impl<A: Arch> AsSystemState<A> for ComplexJitState<'_, A>
§type Output<'a> = ComplexStateRef<'a, A>
where
Self: 'a
type Output<'a> = ComplexStateRef<'a, A> where Self: 'a
The output type of
Self::as_system_state
.§fn as_system_state(&self) -> Self::Output<'_>
fn as_system_state(&self) -> Self::Output<'_>
Returns a type that implements
AsRef<SystemState<A>>
.
Should be a cheap operation, as it may be called often.§fn num_memory_mappings(&self) -> usize
fn num_memory_mappings(&self) -> usize
Returns the number of memory mappings in the state that
Self::as_system_state
will return.§impl<'a, A: Clone + Arch> Clone for ComplexJitState<'a, A>
impl<'a, A: Clone + Arch> Clone for ComplexJitState<'a, A>
§fn clone(&self) -> ComplexJitState<'a, A>
fn clone(&self) -> ComplexJitState<'a, A>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read more§impl<'j, A: Arch> From<ComplexJitState<'j, A>> for MaybeJitState<'j, A>
impl<'j, A: Arch> From<ComplexJitState<'j, A>> for MaybeJitState<'j, A>
§fn from(value: ComplexJitState<'j, A>) -> Self
fn from(value: ComplexJitState<'j, A>) -> Self
Converts to this type from the input type.
Auto Trait Implementations§
impl<'a, A> Freeze for ComplexJitState<'a, A>
impl<'a, A> !RefUnwindSafe for ComplexJitState<'a, A>
impl<'a, A> !Send for ComplexJitState<'a, A>
impl<'a, A> !Sync for ComplexJitState<'a, A>
impl<'a, A> Unpin for ComplexJitState<'a, A>
impl<'a, A> !UnwindSafe for ComplexJitState<'a, A>
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
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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