Abstract:
We present a new limited form of interprocedural analysis called field analysis that can be used by a compiler to reduce the costs of modern language features such as objectoriented programming, automatic memory management, and run-time checks required for type safety. Unlike many previous interprocedural analyses, our analysis is cheap, and does not require access to the entire program. Field analysis exploits the declared access restrictions placed on fields in a modular language (e.g. field access modifiers in Java) in order to determine useful properties of fields of an object. We describe our implementation of field analysis in the Swift optimizing compiler for Java, as well a set of optimizations that exploit the results of field analysis. These optimizations include removal of run-time tests, compiletime resolution of method calls, object inlining, removal of unnecessary synchronization, and stack allocation. Our results demonstrate that field analysis is e#cient and e#ective. ...
Citations
|
276
|
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
– Dean, Grove, et al.
- 1995
|
|
249
|
Extended static checking
– Detlefs, Leino, et al.
- 1998
|
|
220
|
Escape analysis for Java
– Choi, Gupta, et al.
- 1999
|
|
190
|
Compositional pointer and escape analysis for Java
– Whaley, Rinard
- 1999
|
|
161
|
Unboxed objects and polymorphic typing
– Leroy
- 1992
|
|
113
|
A Fast Algorithm for Finding Dominators in a Flowgraph
– Lengauer, Tarjan
- 1979
|
|
102
|
Removing unnecessary synchronization in Java
– Bogda, Holzle
- 1999
|
|
84
|
Escape analysis for object oriented languages. application to java
– Blanchet
- 1999
|
|
81
|
Type-based alias analysis
– Diwan, McKinley, et al.
- 1998
|
|
61
|
Inlining of virtual methods
– Detlefs, Agesen
- 1999
|
|
54
|
Static analyses for eliminating unnecessary synchronizations from Java programs
– Aldrich, Chambers, et al.
- 1999
|
|
54
|
Simple and effective analysis of statically-typed object-oriented programs
– DIWAN, MOSS, et al.
- 1996
|
|
24
|
Unrolling lists
– Shao, Reppy, et al.
- 1994
|
|
22
|
An evaluation of automatic object inline allocation techniques
– Dolby, Chien
- 2000
|
|
20
|
Partitioning Dataflow Analyses Using Types
– Ruf
- 1997
|
|
12
|
Simple and e#ective analysis of statically-typed object-oriented programs
– Diwan, Moss, et al.
- 1996
|
|
6
|
The Swift Java Compiler: Design and Implementation
– Scales, Randall, et al.
- 2000
|
|
5
|
Unboxing Using Specialization
– Hall, Peyton-Jones, et al.
- 1994
|
|
3
|
Stack Allocating Objects in Java. At URL http://www.research.microsoft. com/apl/stackalloc-abstract.ps
– Gay, Steensgaard
|
|
3
|
A Linear Time Algorithm for Placing Phi-nodes
– Sreedhar, Gao
- 1995
|