pub struct InstructionHandler { /* private fields */ }Expand description
A struct that allows setting optional overrides for key Instruction methods.
A common use case for this is to support custom PRAGMA instructions, which are treated as
classical style no-ops by default.
Implementations§
Source§impl InstructionHandler
impl InstructionHandler
Sourcepub fn set_is_scheduled<F>(self, f: F) -> Selfwhere
F: GetIsScheduledFnMut + 'static,
pub fn set_is_scheduled<F>(self, f: F) -> Selfwhere
F: GetIsScheduledFnMut + 'static,
Set an override function for whether an instruction is scheduled.
If the provided function returns None, a default will be used.
See also InstructionHandler::is_scheduled.
Sourcepub fn set_role_for_instruction<F>(self, f: F) -> Selfwhere
F: GetRoleForInstructionFnMut + 'static,
pub fn set_role_for_instruction<F>(self, f: F) -> Selfwhere
F: GetRoleForInstructionFnMut + 'static,
Set an override function for determining an instruction’s InstructionRole.
If the provided function returns None, a default will be used.
See also InstructionHandler::role_for_instruction.
Sourcepub fn set_matching_frames<F>(self, f: F) -> Selfwhere
F: GetMatchingFramesFnMut + 'static,
pub fn set_matching_frames<F>(self, f: F) -> Selfwhere
F: GetMatchingFramesFnMut + 'static,
Set an override function for determining an instruction’s MatchedFrames.
If the provided function returns None, a default will be used.
See also InstructionHandler::get_matching_frames.
Sourcepub fn set_memory_accesses<F>(self, f: F) -> Selfwhere
F: GetMemoryAccessesFnMut + 'static,
pub fn set_memory_accesses<F>(self, f: F) -> Selfwhere
F: GetMemoryAccessesFnMut + 'static,
Set an override function for determining an instruction’s MemoryAccesses.
If the provided function returns None, a default will be used.
See also InstructionHandler::get_memory_accesses.
Sourcepub fn is_scheduled(&mut self, instruction: &Instruction) -> bool
pub fn is_scheduled(&mut self, instruction: &Instruction) -> bool
Determine whether the given instruction is scheduled.
This uses the return value of the override function, if set and returns Some. If not set
or the function returns None, defaults to the return value of
Instruction::is_scheduled.
Sourcepub fn role_for_instruction(
&mut self,
instruction: &Instruction,
) -> InstructionRole
pub fn role_for_instruction( &mut self, instruction: &Instruction, ) -> InstructionRole
Determine the InstructionRole for the given instruction.
This uses the return value of the override function, if set and returns Some. If not set
or the function returns None, defaults to the return value of
InstructionRole::from.
Sourcepub fn matching_frames<'p>(
&mut self,
instruction: &Instruction,
program: &'p Program,
) -> Option<MatchedFrames<'p>>
pub fn matching_frames<'p>( &mut self, instruction: &Instruction, program: &'p Program, ) -> Option<MatchedFrames<'p>>
Determine the MatchedFrames for the given instruction.
This uses the return value of the override function, if set and returns Some. If not set
or the function returns None, defaults to the return value of
Program::get_frames_for_instruction.
Sourcepub fn memory_accesses(
&mut self,
instruction: &Instruction,
extern_signature_map: &ExternSignatureMap,
) -> MemoryAccessesResult
pub fn memory_accesses( &mut self, instruction: &Instruction, extern_signature_map: &ExternSignatureMap, ) -> MemoryAccessesResult
Determine the MemoryAccesses for the given instruction.
This uses the return value of the override function, if set and returns Some. If not set
or the function returns None, defaults to the return value of
Instruction::get_memory_accesses.
Sourcepub fn simplify_program(
&mut self,
program: &Program,
) -> Result<Program, ProgramError>
pub fn simplify_program( &mut self, program: &Program, ) -> Result<Program, ProgramError>
Like Program::into_simplified, but using custom instruction handling.
Trait Implementations§
Source§impl Default for InstructionHandler
impl Default for InstructionHandler
Source§fn default() -> InstructionHandler
fn default() -> InstructionHandler
Auto Trait Implementations§
impl Freeze for InstructionHandler
impl !RefUnwindSafe for InstructionHandler
impl !Send for InstructionHandler
impl !Sync for InstructionHandler
impl Unpin for InstructionHandler
impl !UnwindSafe for InstructionHandler
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 moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.