MCPcopy Create free account
hub / github.com/dylan-sutton-chavez/edge-python / commit_block

Method commit_block

compiler/src/modules/parser/mod.rs:208–241  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

206 }
207
208 pub(super) fn commit_block(&mut self) {
209 let Some(j) = self.join_stack.pop() else { return };
210 let post = self.ssa_versions.clone();
211
212 let (a, b) = match j.then {
213 Some(t) => (t, post),
214 None => (post, j.backup.clone()),
215 };
216
217 let mut divergent: Vec<&String> = a
218 .keys()
219 .chain(b.keys())
220 .filter(|name| a.get(*name).unwrap_or(&0) != b.get(*name).unwrap_or(&0))
221 .collect();
222
223 // Sort for deterministic Phi order; dedup chain() duplicates from shared vars.
224 divergent.sort();
225 divergent.dedup();
226
227 for name in divergent {
228 let va = *a.get(name).unwrap_or(&0);
229 let vb = *b.get(name).unwrap_or(&0);
230 let mut ba = [0u8; 128];
231 let mut bb = [0u8; 128];
232 let mut bx = [0u8; 128];
233 let ia = self.chunk.push_name(Self::ssa_name(name, va, &mut ba));
234 let ib = self.chunk.push_name(Self::ssa_name(name, vb, &mut bb));
235 let v = self.increment_version(name);
236 let ix = self.chunk.push_name(Self::ssa_name(name, v, &mut bx));
237
238 self.chunk.phi_sources.push((ia, ib));
239 self.chunk.emit(OpCode::Phi, ix);
240 }
241 }
242}
243
244// Token-stream utilities: advance, peek, eat, diagnostics.

Callers 4

if_stmtMethod · 0.80
while_stmtMethod · 0.80
for_stmt_innerMethod · 0.80
try_stmtMethod · 0.80

Calls 8

collectMethod · 0.80
keysMethod · 0.80
push_nameMethod · 0.80
increment_versionMethod · 0.80
pushMethod · 0.80
emitMethod · 0.80
popMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected