pub enum FrameSlotSource {
DeclaredVar(SymbolId),
Temporary(u32),
SyntheticCounter(RepeatCounterId),
}Expand description
PR-025: DeclaredVar is a permanent slot (PR-017/018 – unconditional,
regardless of what the liveness fixpoint computes); Temporary is the
liveness-driven kind this task’s own fixtures never construct – see this
module’s own doc comment for exactly why.
SyntheticCounter (R-run Task 8): a repeat(N) loop’s own
compiler-synthesized iteration counter (process::cfg:: RepeatCounterId), minted only when a suspend somewhere in the loop’s own
body forces process::cfg::CfgBuilder::walk_repeat_loop to build a real
CFG shape for it (see that id’s own doc comment). Unlike DeclaredVar,
there is no sv_lang::Symbol behind it at all – it is PERMANENT for
exactly the same reason DeclaredVar is (it must survive the loop’s own
suspend/resume call boundary), so compute_liveness/lower_to_segments
treat the two identically for the “always in live_in/live_out” rule,
differing only in how a caller resolves the slot to a physical pointer
(process_lower.rs’s counter_locals, keyed by RepeatCounterId, not
the SymbolId-keyed frame_locals/cx.locals a DeclaredVar uses).
Variants§
Trait Implementations§
Source§impl Clone for FrameSlotSource
impl Clone for FrameSlotSource
Source§impl Debug for FrameSlotSource
impl Debug for FrameSlotSource
impl Eq for FrameSlotSource
Source§impl PartialEq for FrameSlotSource
impl PartialEq for FrameSlotSource
impl StructuralPartialEq for FrameSlotSource
Auto Trait Implementations§
impl Freeze for FrameSlotSource
impl RefUnwindSafe for FrameSlotSource
impl Send for FrameSlotSource
impl Sync for FrameSlotSource
impl Unpin for FrameSlotSource
impl UnsafeUnpin for FrameSlotSource
impl UnwindSafe for FrameSlotSource
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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
key and return true if they are equal.