Transforms a CFG into a bytecode “flow tree”.
The flow tree is a Python dictionary, described loosely by the following set of productions:
flow_tree := { blocks * }
blocks := block_index : [ bytecode_tree * ]
- bytecode_tree := ( opcode_index , opcode ,
opname , arg , [ bytecode_tree * ] )
The primary purpose of this transformation is to simulate the value stack, removing it and any stack-specific opcodes.
Given a Python function, return a bytecode flow tree for that function.