pub enum BlockArg {
Value(Value),
TryCallRet(u32),
TryCallExn(u32),
}
Expand description
A BlockArg
is a sum type of Value
, TryCallRet
, and
TryCallExn
. The latter two are values that are generated “on the
edge” out of a try_call
instruction into a successor block. We
use special arguments rather than special values for these because
they are not definable as SSA values at a certain program point –
only when the BlockCall
is executed.
Variants§
Value(Value)
An ordinary value, usable at the branch instruction using this
BlockArg
, whose value is passed as an argument.
TryCallRet(u32)
A return value of a try_call
’s called function. Signatures
allow multiple return values, so this carries an index. This
may be used only on the normal (non-exceptional) BlockCall
out of a try_call
or try_call_indirect
instruction.
TryCallExn(u32)
An exception payload value of a try_call
. Some ABIs may
allow multiple payload values, so this carries an index. Its
type is defined by the ABI of the called function. This may be
used only on an exceptional BlockCall
out of a try_call
or
try_call_indirect
instruction.
Implementations§
Trait Implementations§
Source§impl Ord for BlockArg
impl Ord for BlockArg
Source§impl PartialOrd for BlockArg
impl PartialOrd for BlockArg
impl Copy for BlockArg
impl Eq for BlockArg
impl StructuralPartialEq for BlockArg
Auto Trait Implementations§
impl Freeze for BlockArg
impl RefUnwindSafe for BlockArg
impl Send for BlockArg
impl Sync for BlockArg
impl Unpin for BlockArg
impl UnwindSafe for BlockArg
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.