Optimizer Architecture
- Optimizer built as pipeline
- Each step performs one optimization
- First step breaks code string into blocks
- Blocks are common data between steps
- Last step regenerates code string
- OptimizeFilter base class implements:
- block() code-to-block conversion
- optimize() call optimize_block() for each block
- code() block-to-code conversion
- Subclasses implement: