: Wednesday
Runtime Specialization With Optimistic Heap Analysis
San Diego Room
Wednesday, 17:00, 30 minutes
| 7 | · | 8 | · | 9 | · | 10 | · | 11 | · | 12 | · | 13 | · | 14 | · | 15 | · | 16 | · | 17 | · | 18 | · | 19 | · | 20 | · | 21 |
Ajeet Shankar, UC Berkeley
Rastislav Bodik, UC Berkeley
Subramanya Sastry, UW Madison
James Smith, UW Madison
Runtime specialization is an optimization process that can provide significant speedups by exploiting a program's runtime state. Existing specializers employ a staged model that statically identifies specialization code regions and constant heap locations, and then optimizes them at runtime once the constants are known. This paper describes a dynamic program specializer that is transparent, and thus does not require any static components such as programmer annotations or pre-runtime analysis. The specializer uses (1) a novel store profile to identify constant heap locations that a staged system cannot, such as constants present in an interpreted program. This information is used in tandem with (2) a new algorithm for finding specialization starting points based on a notion of influence to create specializations. (3) An automatic invalidation transformation efficiently monitors assumptions about heap constants, and is able to deactivate specialized traces even if they are on the stack. An implementation of the specializer in Jikes RVM has low overhead in practice, selects specialization points that would be chosen manually, and produces speedups of 1.2x to 6.3x on a variety of benchmarks.