Struct cranelift_codegen::binemit::RegDiversions [−][src]
Keep track of diversions in a block.
Implementations
impl RegDiversions
[src]
pub fn new() -> Self
[src]
Create a new empty diversion tracker.
pub fn clear(&mut self)
[src]
Clear the content of the diversions, to reset the state of the compiler.
pub fn is_empty(&self) -> bool
[src]
Are there any diversions?
pub fn diversion(&self, value: Value) -> Option<&Diversion>
[src]
Get the current diversion of value
, if any.
pub fn iter(&self) -> Iter<'_, Value, Diversion>
[src]
Get all current diversions.
pub fn get(&self, value: Value, locations: &ValueLocations) -> ValueLoc
[src]
Get the current location for value
. Fall back to the assignment map for non-diverted
values
pub fn reg(&self, value: Value, locations: &ValueLocations) -> RegUnit
[src]
Get the current register location for value
, or panic if value
isn’t in a register.
pub fn stack(&self, value: Value, locations: &ValueLocations) -> StackSlot
[src]
Get the current stack location for value
, or panic if value
isn’t in a stack slot.
pub fn regmove(&mut self, value: Value, from: RegUnit, to: RegUnit)
[src]
Record a register -> register move.
pub fn regspill(&mut self, value: Value, from: RegUnit, to: StackSlot)
[src]
Record a register -> stack move.
pub fn regfill(&mut self, value: Value, from: StackSlot, to: RegUnit)
[src]
Record a stack -> register move.
pub fn apply(&mut self, inst: &InstructionData)
[src]
Apply the effect of inst
.
If inst
is a regmove
, regfill
, or regspill
instruction, update the diversions to
match.
pub fn remove(&mut self, value: Value) -> Option<ValueLoc>
[src]
Drop any recorded move for value
.
Returns the to
location of the removed diversion.
pub fn at_block(&mut self, entry_diversions: &EntryRegDiversions, block: Block)
[src]
Resets the state of the current diversions to the recorded diversions at the entry of the
given block
. The recoded diversions is available after coloring on func.entry_diversions
field.
pub fn save_for_block(
&mut self,
entry_diversions: &mut EntryRegDiversions,
target: Block
)
[src]
&mut self,
entry_diversions: &mut EntryRegDiversions,
target: Block
)
Copy the current state of the diversions, and save it for the entry of the block
given as
argument.
Note: This function can only be called once on a Block
with a given entry_diversions
argument, otherwise it would panic.
pub fn check_block_entry(
&self,
entry_diversions: &EntryRegDiversions,
target: Block
) -> bool
[src]
&self,
entry_diversions: &EntryRegDiversions,
target: Block
) -> bool
Check that the recorded entry for a given block
matches what is recorded in the
entry_diversions
.
pub fn display<'a, R: Into<Option<&'a RegInfo>>>(
&'a self,
regs: R
) -> DisplayDiversions<'a>
[src]
&'a self,
regs: R
) -> DisplayDiversions<'a>
Return an object that can display the diversions.
Trait Implementations
impl Clone for RegDiversions
[src]
fn clone(&self) -> RegDiversions
[src]
pub fn clone_from(&mut self, source: &Self)
1.0.0[src]
Auto Trait Implementations
impl RefUnwindSafe for RegDiversions
impl Send for RegDiversions
impl Sync for RegDiversions
impl Unpin for RegDiversions
impl UnwindSafe for RegDiversions
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,