Control Flow Graph
● Essentially a graph of bytecode blocks
where edges are jumps to other blocks
● Three step process
a. Figure out scoping of each variable
b. Compile blocks to bytecode without jumps calculated
c. Flatten CFG into a list and calculate jumps
Slide 29
Slide 29 text
Peepholer
● Operates at the bytecode level
● Simple transformations within a single block
only
● Bytecode required to either stay the same
length or shrinks
● Always used