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

Function try_fold_binop

compiler/src/modules/vm/optimizer.rs:196–215  ·  view source on GitHub ↗
(chunk: &mut SSAChunk, dead: &mut [bool], ip: usize)

Source from the content-addressed store, hash-verified

194}
195
196fn try_fold_binop(chunk: &mut SSAChunk, dead: &mut [bool], ip: usize) {
197 let Some(prev1_ip) = prev_live(dead, ip) else { return };
198 let Some(prev2_ip) = prev_live(dead, prev1_ip) else { return };
199
200 let p2 = chunk.instructions[prev2_ip];
201 let p1 = chunk.instructions[prev1_ip];
202 if p2.opcode != OpCode::LoadConst || p1.opcode != OpCode::LoadConst { return; }
203
204 let (Some(a), Some(b)) = (
205 const_to_val(&chunk.constants, p2.operand),
206 const_to_val(&chunk.constants, p1.operand),
207 ) else { return };
208
209 let opcode = chunk.instructions[ip].opcode;
210 let Some(result) = fold_binop(opcode, a, b) else { return };
211
212 if !write_const_load(chunk, prev2_ip, result) { return; }
213 dead[prev1_ip] = true;
214 dead[ip] = true;
215}
216
217fn try_fold_not(chunk: &mut SSAChunk, dead: &mut [bool], ip: usize) {
218 let Some(prev1_ip) = prev_live(dead, ip) else { return };

Callers 1

constant_foldFunction · 0.85

Calls 4

prev_liveFunction · 0.85
const_to_valFunction · 0.85
fold_binopFunction · 0.85
write_const_loadFunction · 0.85

Tested by

no test coverage detected