Skip to main content

Moves

Struct Moves 

Source
pub struct Moves(/* private fields */);
Expand description

Which instruction each of the allocator’s moves became.

A spill and a copy are both a mov once they are written, and so is an instruction the lowering wrote that happens to move the same register to the same address. Telling them apart afterwards by looking at them is guesswork, and a pass that guesses wrong about a store to a volatile variable deletes a read the program insisted on. So what the allocator asked for is recorded as it is written, and a later pass that is only allowed to touch the allocator’s own moves has the list rather than a heuristic. See crate::reload, which is the one pass that reads this.

Implementations§

Source§

impl Moves

Source

pub fn at(&self, inst: Inst) -> Option<Edit>

What the allocator asked for at this instruction, or None at an instruction that is not one of its moves.

Source

pub fn record(&mut self, inst: Inst, edit: Edit)

Records that this instruction is what that move came to.

Trait Implementations§

Source§

impl Debug for Moves

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Moves

Source§

fn default() -> Moves

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Moves

§

impl RefUnwindSafe for Moves

§

impl Send for Moves

§

impl Sync for Moves

§

impl Unpin for Moves

§

impl UnsafeUnpin for Moves

§

impl UnwindSafe for Moves

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.