pub struct Segment<'d> {Show 16 fields
pub id: SegId,
pub live_in: Vec<u32>,
pub bindings: Vec<ArgBinding<'d>>,
pub this_var: Option<Symbol<'d>>,
pub ref_aliases: Vec<(Symbol<'d>, Symbol<'d>)>,
pub body: Vec<Statement<'d>>,
pub probes: Vec<(usize, Statement<'d>)>,
pub disable_probes: Vec<(usize, Statement<'d>)>,
pub frame_probes: Vec<(usize, FrameProbe<'d>)>,
pub block_events: Vec<(usize, Symbol<'d>, bool)>,
pub stmt_scopes: Vec<(usize, Symbol<'d>)>,
pub step_exprs: Vec<Expression<'d>>,
pub repeat_init: Option<(RepeatCounterId, RepeatCount<'d>)>,
pub repeat_decrement: Option<RepeatCounterId>,
pub expect_resume: bool,
pub terminator: SegTerminator<'d>,
}Expand description
The codegen-facing, already-liveness-annotated lowering shape (PR-042).
live_in/live_out are FrameLayout::slots indices (Task S3b: see
lower_to_segments’s doc comment for exactly which slots those are).
Fields§
§id: SegId§live_in: Vec<u32>§bindings: Vec<ArgBinding<'d>>Mirrors BasicBlock::bindings 1:1 – run before body.
this_var: Option<Symbol<'d>>Mirrors BasicBlock::this_var 1:1.
ref_aliases: Vec<(Symbol<'d>, Symbol<'d>)>Mirrors BasicBlock::ref_aliases 1:1.
body: Vec<Statement<'d>>§probes: Vec<(usize, Statement<'d>)>Mirrors BasicBlock::probes 1:1 – indices are into body.
disable_probes: Vec<(usize, Statement<'d>)>Mirrors BasicBlock::disable_probes 1:1 – indices are into body.
frame_probes: Vec<(usize, FrameProbe<'d>)>Mirrors BasicBlock::frame_probes 1:1 – indices are into body.
block_events: Vec<(usize, Symbol<'d>, bool)>Mirrors BasicBlock::block_events 1:1 – indices are into body.
stmt_scopes: Vec<(usize, Symbol<'d>)>Mirrors BasicBlock::stmt_scopes 1:1 – indices are into body.
step_exprs: Vec<Expression<'d>>Mirrors BasicBlock::step_exprs 1:1 – see its doc comment.
repeat_init: Option<(RepeatCounterId, RepeatCount<'d>)>Mirrors BasicBlock::repeat_init 1:1 – see its doc comment.
repeat_decrement: Option<RepeatCounterId>Mirrors BasicBlock::repeat_decrement 1:1 – see its doc comment.
expect_resume: boolMirrors BasicBlock::expect_resume 1:1 – see its doc comment.
terminator: SegTerminator<'d>