pub struct EvmIrBlock {
pub label: String,
pub metadata: EvmIrBlockMetadata,
pub instructions: Vec<EvmIrInstruction>,
pub terminator: Option<EvmIrTerminator>,
pub entry_stack: Vec<EvmIrValueId>,
}Expand description
A basic block in EVM IR.
Fields§
§label: StringStable textual label for this block.
metadata: EvmIrBlockMetadataBlock metadata. The hot/cold field is present before it is consumed by layout or scheduling so fixtures can pin the format early.
instructions: Vec<EvmIrInstruction>Non-terminating EVM backend instructions.
terminator: Option<EvmIrTerminator>Optional control-flow terminator.
entry_stack: Vec<EvmIrValueId>Values present on the stack at block entry, top first.
This is the block’s incoming stack-word signature: values produced by a predecessor and consumed here. It is empty for the entry block and for blocks that begin from a clean stack. Stack scheduling seeds its model stack from this so blocks that consume predecessor values can be scheduled instead of bailing.
Implementations§
Source§impl EvmIrBlock
impl EvmIrBlock
Sourcepub fn new(label: impl Into<String>) -> EvmIrBlock
pub fn new(label: impl Into<String>) -> EvmIrBlock
Creates an empty hot block.
Trait Implementations§
Source§impl Clone for EvmIrBlock
impl Clone for EvmIrBlock
Source§fn clone(&self) -> EvmIrBlock
fn clone(&self) -> EvmIrBlock
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for EvmIrBlock
impl Debug for EvmIrBlock
impl Eq for EvmIrBlock
Source§impl PartialEq for EvmIrBlock
impl PartialEq for EvmIrBlock
Source§fn eq(&self, other: &EvmIrBlock) -> bool
fn eq(&self, other: &EvmIrBlock) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for EvmIrBlock
Auto Trait Implementations§
impl Freeze for EvmIrBlock
impl RefUnwindSafe for EvmIrBlock
impl Send for EvmIrBlock
impl Sync for EvmIrBlock
impl Unpin for EvmIrBlock
impl UnsafeUnpin for EvmIrBlock
impl UnwindSafe for EvmIrBlock
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
fn equivalent(&self, key: &K) -> bool
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more