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

Function try_fold_not

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

Source from the content-addressed store, hash-verified

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 };
219 let p1 = chunk.instructions[prev1_ip];
220 if p1.opcode != OpCode::LoadConst { return; }
221 let Some(v) = const_to_val(&chunk.constants, p1.operand) else { return };
222
223 let folded = if v.is_bool() {
224 Some(Val::bool(!v.as_bool()))
225 } else if v.is_int() {
226 Some(Val::bool(v.as_int() == 0))
227 } else if v.is_float() {
228 Some(Val::bool(v.as_float() == 0.0))
229 } else if v.is_none() {
230 Some(Val::bool(true))
231 } else {
232 None
233 };
234
235 if let Some(r) = folded
236 && write_const_load(chunk, prev1_ip, r)
237 {
238 dead[ip] = true;
239 }
240}
241
242fn try_fold_neg(chunk: &mut SSAChunk, dead: &mut [bool], ip: usize) {
243 let Some(prev1_ip) = prev_live(dead, ip) else { return };

Callers 1

constant_foldFunction · 0.85

Calls 10

prev_liveFunction · 0.85
const_to_valFunction · 0.85
write_const_loadFunction · 0.85
is_boolMethod · 0.80
as_boolMethod · 0.80
is_intMethod · 0.80
as_intMethod · 0.80
is_floatMethod · 0.80
as_floatMethod · 0.80
is_noneMethod · 0.80

Tested by

no test coverage detected