Translating Python bytecode to Three Address Code
- tac.py: Translate basic block CFG into equivalent Three Address Code (TAC)
- analysis.py: Data flow analysis of TAC CFG
- There are two types of functions: constructors and heap-neutral.
-
Constructors: create (concretely) an isolated sub-graph and returns a root to it.
-
Heap neutral: do not change the heap object at all. In case the function returns an object, a contract (in the form of a function summary) is required to describe the identity of the returned object.
Contracts may be described as logical assertions but for economy reasons we will have them be the abstract transformers themselves.
-