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<'a>(
&mut self,
instruction: &'a Instruction,
program: &'a Program,
) -> Option<MatchedFrames<'a>>
pub fn matching_frames<'a>( &mut self, instruction: &'a Instruction, program: &'a Program, ) -> Option<MatchedFrames<'a>>
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<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.