[−][src]Struct cranelift_codegen::binemit::RegDiversions
Keep track of diversions in an EBB.
Methods
impl RegDiversions
[src]
pub fn new() -> Self
[src]
Create a new empty diversion tracker.
pub fn clear(&mut self)
[src]
Clear the tracker, preparing for a new EBB.
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 divert(&mut self, value: Value, from: ValueLoc, to: ValueLoc)
[src]
Record any kind of move.
The from
location must match an existing to
location, if any.
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 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.
Auto Trait Implementations
impl Unpin for RegDiversions
impl Send for RegDiversions
impl Sync for RegDiversions
impl UnwindSafe for RegDiversions
impl RefUnwindSafe for RegDiversions
Blanket Implementations
impl<T> From<T> for 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.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error
The type returned in the event of a conversion error.
fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>
[src]
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,