Field Analysis: Getting Useful and Low-cost Interprocedural Information

Sanjay Ghemawat
Keith H. Randall
Daniel J. Scales

2000 ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI'00)
Vancouver B.C., Canada, June 18-21, 2000.

[Full text in Postscript, 284KB]


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 object-oriented 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).

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, compile-time resolution of method calls, object inlining, removal of unnecessary synchronization, and stack allocation. Our results demonstrate that field analysis is efficient and effective. Speedups average 7% on a wide range of applications, with some times reduced by up to 27%. Compile time overhead of field analysis is about 10%.