pub enum RegisterChannelState {
Unsolved,
Top,
Solved(RegisterEffectSets),
Materialized(RegisterInterfaceMap),
}Expand description
The state of a function’s register-channel effect summary (argpromote v2).
Purity has moved from a function flag (pure_reg) to per-call-site tags, but
the interface mapping a materialized function exposes still lives on the
function — the emulator’s implicit call convention, alias analysis, and the
verifier all consume it. This enum records how far the summary has advanced.
Variants§
Unsolved
Not yet solved by the effect-analysis pass (the default / post-load state).
Top
⊤ — unknowable: the function contains an unresolved indirect call, calls a ⊤ function, or is a prototype-less external. Its register effects stay modelled conservatively (clobbers-all) at every call site.
Solved(RegisterEffectSets)
Solved to a finite effect set but the interface is not yet materialized
(no by-value params / return pack added). Call sites still bind
implicitly, but the solved read/write register sets are precise: a call
to this function reads at most reads and writes at most writes.
Materialized(RegisterInterfaceMap)
Materialized: the function carries by-value register params and a return pack, and this mapping records which register each interface slot binds. Consumed by the dual binding convention.
Implementations§
Source§impl RegisterChannelState
impl RegisterChannelState
Sourcepub fn materialized(&self) -> Option<&RegisterInterfaceMap>
pub fn materialized(&self) -> Option<&RegisterInterfaceMap>
The materialized interface mapping, if this function has been materialized.
Trait Implementations§
Source§impl Clone for RegisterChannelState
impl Clone for RegisterChannelState
Source§fn clone(&self) -> RegisterChannelState
fn clone(&self) -> RegisterChannelState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more