PEPM `97 Talk Outline
Susan suggested that the talk serve to interest the audience in
reading the gory details in the paper. To that end, we should
probably talk about what we do and why, rather than how.
This is an outline that follows the high-level structure of the
paper. Although it doesn't give any details about how we do anything,
it may already be too detailed in saying what we do.
- Advantages of Run-Time Specialization
- More automatic
- More widely applicable
- Code explosion
- Termination
- Applications
- Same applications for which PE has been successful
- Operating Systems
- Interpreters
- Simulators
- Graphics applications
- Our Approach
- Declarative
- Annotations map to run-time specialization primitives
- Dynamic compilation performed automatically
- Advantages of Our DC System
- General-purpose, imperative programming language (C)
- Declarative, but has flexibility
- Control
- Annotations
- Easy to use by human programmers
- Target for fully automatic system
- make_static signals dynamic-to-static promotion
and sets policies
- Specialization on static variables defines dynamic
region
- Function annotations extend dynamic region
interprocedurally
- Introduce Interpreter Example
- Functionality Needed
- Specialization for (potentially) changing variables
- Multi-way loop unrolling
- Conditional specialization
- Caching and reuse of dynamically compiled code
- Mechanism(s) to manage cost of specialization
- Features
- Support for both polyvariant specialization and
polyvariant division
- Intra- and interprocedural specialization, with caller and
callee separately compilable
- Program-point-specific specialization over arbitrary
regions of code
- Automatic caching, reuse, and reclamation of dynamically
generated code
- Automatic interleaving of specialization and dynamic
execution
- Run-time optimizations, including constant propagation,
constant folding, strenth reduction, conditional branch
folding and dead-code elimination, loop unrolling and merge
splitting, and procedure-call specialization
- System Architecture (Picture)
- Run-Time Specializer
- Basis is standard polyvariant specializer
- Consults cache policies of static variables
- Initially invoked from ordinary, static code
- Can emit callback and defer specialization
- Analysis
- Intraprocedural alias analysis
- Live and used variables analyses
- Pointwise polyvariant BTA over CFG
- Identify lazy branch successors
- Output
- Static variables with cache policies
- Specialization points
- Deferral points
- Status
- Conclusions and Future Work
- Interprocedural BTA and specializer
- Run-time inlining
- Gain experience on real applications
- Beyond run-time specialization