pub enum EvmIrTerminatorKind {
Fallthrough(EvmIrBlockId),
Jump(EvmIrBlockId),
Branch {
condition: EvmIrOperand,
then_block: EvmIrBlockId,
else_block: EvmIrBlockId,
},
Switch {
value: EvmIrOperand,
default: EvmIrBlockId,
cases: Vec<(EvmIrOperand, EvmIrBlockId)>,
},
Return {
offset: EvmIrOperand,
size: EvmIrOperand,
},
Revert {
offset: EvmIrOperand,
size: EvmIrOperand,
},
Stop,
Invalid,
SelfDestruct {
recipient: EvmIrOperand,
},
RawOpcode(u8),
}Expand description
Control-flow terminators in EVM IR.
Variants§
Fallthrough(EvmIrBlockId)
Physical fallthrough into the next laid-out block.
Jump(EvmIrBlockId)
Unconditional jump.
Branch
Conditional branch.
Fields
§
condition: EvmIrOperandBranch condition.
§
then_block: EvmIrBlockIdTarget when condition is non-zero.
§
else_block: EvmIrBlockIdTarget when condition is zero.
Switch
Multi-way branch.
Fields
§
value: EvmIrOperandDiscriminant value.
§
default: EvmIrBlockIdDefault target.
§
cases: Vec<(EvmIrOperand, EvmIrBlockId)>Case value and target pairs.
Return
EVM RETURN(offset, size).
Revert
EVM REVERT(offset, size).
Stop
EVM STOP.
Invalid
EVM INVALID.
SelfDestruct
EVM SELFDESTRUCT(recipient).
Fields
§
recipient: EvmIrOperandBeneficiary address.
RawOpcode(u8)
Raw terminal opcode for already stack-scheduled machine-level code.
Trait Implementations§
Source§impl Clone for EvmIrTerminatorKind
impl Clone for EvmIrTerminatorKind
Source§fn clone(&self) -> EvmIrTerminatorKind
fn clone(&self) -> EvmIrTerminatorKind
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 EvmIrTerminatorKind
impl Debug for EvmIrTerminatorKind
impl Eq for EvmIrTerminatorKind
Source§impl PartialEq for EvmIrTerminatorKind
impl PartialEq for EvmIrTerminatorKind
Source§fn eq(&self, other: &EvmIrTerminatorKind) -> bool
fn eq(&self, other: &EvmIrTerminatorKind) -> bool
Tests for
self and other values to be equal, and is used by ==.impl StructuralPartialEq for EvmIrTerminatorKind
Auto Trait Implementations§
impl Freeze for EvmIrTerminatorKind
impl RefUnwindSafe for EvmIrTerminatorKind
impl Send for EvmIrTerminatorKind
impl Sync for EvmIrTerminatorKind
impl Unpin for EvmIrTerminatorKind
impl UnsafeUnpin for EvmIrTerminatorKind
impl UnwindSafe for EvmIrTerminatorKind
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