Skip to main content

InstData

Struct InstData 

Source
pub struct InstData {
    pub opcode: Opcode,
    pub flags: Flags,
    pub results: u8,
    pub first_result: Option<Value>,
    pub args: ValueList,
    pub extra: Extra,
}
Expand description

One instruction.

There is no result type here. Each result is a value in the function’s value table and the type is on the value, which means a reader asking what an instruction produces asks the same question about add as about call, and there is no second copy of the type to disagree with the first.

Fields§

§opcode: Opcode

Which instruction this is.

§flags: Flags

What the optimizer is licensed to assume about it.

§results: u8

How many values it produces.

§first_result: Option<Value>

The first of them, with the rest following it in the value table.

§args: ValueList

Its value operands.

§extra: Extra

Everything else it carries.

Implementations§

Source§

impl InstData

Source

pub const fn new(opcode: Opcode) -> Self

An instruction with no operands, no flags, no results and nothing extra.

Source

pub fn results(&self) -> impl Iterator<Item = Value> + use<>

The values it produces, in order.

Source

pub fn targets(&self) -> BlockCallList

The run of targets it branches to, which is empty when it does not branch.

A switch keeps its targets in a side table, so this reads Extra::Targets only and the function is what answers for the rest.

Trait Implementations§

Source§

impl Clone for InstData

Source§

fn clone(&self) -> InstData

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for InstData

Source§

impl Debug for InstData

Source§

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

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

impl Eq for InstData

Source§

impl PartialEq for InstData

Source§

fn eq(&self, other: &InstData) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for InstData

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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, <T as TryFrom<U>>::Error>

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.