[][src]Struct cranelift_codegen::binemit::RegDiversions

pub struct RegDiversions { /* fields omitted */ }

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]

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]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]