TY - JOUR
T1 - Partial redundancy elimination for access path expressions
AU - Hosking, Antony L.
AU - Nystrom, Nathaniel
AU - Whitlock, David
AU - Cutts, Quintin
AU - Diwan, Amer
PY - 2001/5/16
Y1 - 2001/5/16
N2 - Pointer traversals pose significant overhead to the execution of object-oriented programs, since every access to an object's state requires a pointer dereference. Eliminating redundant pointer traversals reduces both instructions executed as well as redundant memory accesses to relieve pressure on the memory subsystem. We describe an approach to elimination of redundant access expressions that combines partial redundancy elimination (PRE) with type-based alias analysis (TBAA). To explore the potential of this approach we have implemented an optimization framework for Java class files incorporating TBAA-based PRE over pointer access expressions. The framework is implemented as a class-file-to-class-file transformer; optimized classes can then be run in any standard Java execution environment. Our experiments demonstrate improvements in the execution of optimized code for several Java benchmarks running in diverse execution environments: the standard interpreted JDK virtual machine, a virtual machine using 'just-in-time' compilation, and native binaries compiled off-line ('way-ahead-of-time'). Overall, however, our experience is of mixed success with the optimizations, mainly because of the isolation between our optimizer and the underlying execution environments which prevents more effective cooperation between them. We isolate the impact of access path PRE using TBAA, and demonstrate that Java's requirement of precise exceptions can noticeably impact code-motion optimizations like PRE.
AB - Pointer traversals pose significant overhead to the execution of object-oriented programs, since every access to an object's state requires a pointer dereference. Eliminating redundant pointer traversals reduces both instructions executed as well as redundant memory accesses to relieve pressure on the memory subsystem. We describe an approach to elimination of redundant access expressions that combines partial redundancy elimination (PRE) with type-based alias analysis (TBAA). To explore the potential of this approach we have implemented an optimization framework for Java class files incorporating TBAA-based PRE over pointer access expressions. The framework is implemented as a class-file-to-class-file transformer; optimized classes can then be run in any standard Java execution environment. Our experiments demonstrate improvements in the execution of optimized code for several Java benchmarks running in diverse execution environments: the standard interpreted JDK virtual machine, a virtual machine using 'just-in-time' compilation, and native binaries compiled off-line ('way-ahead-of-time'). Overall, however, our experience is of mixed success with the optimizations, mainly because of the isolation between our optimizer and the underlying execution environments which prevents more effective cooperation between them. We isolate the impact of access path PRE using TBAA, and demonstrate that Java's requirement of precise exceptions can noticeably impact code-motion optimizations like PRE.
KW - Cache memories
KW - Code generation
KW - Incremental compilers
KW - Language preprocessors
KW - Object representation
KW - Object-oriented languages
KW - Optimization
KW - Performance evaluation
KW - Run-time environments
KW - Virtual machines
UR - http://www.scopus.com/inward/record.url?scp=0035337479&partnerID=8YFLogxK
U2 - 10.1002/spe.371
DO - 10.1002/spe.371
M3 - Article
SN - 0038-0644
VL - 31
SP - 577
EP - 600
JO - Software - Practice and Experience
JF - Software - Practice and Experience
IS - 6
ER -