Compile-time Analysis of Object-oriented Languages
Barbara G. Ryder
Abstract
Compile-time analysis of object-oriented languages
must be robust in the face of polymorphism and dynamic binding.
Obtaining a good approximation for the run-time calling structure of a
program is crucial to enable transformations such as procedure cloning
and effective speculative computation or classical optimizations such
as constant propagation. Our research aims at
- Experimenting with alternative approaches to perform type-alias
analysis of C++ and Java programs, considering their cost/precision
tradeoffs
- Formulating several client analyses for Java programs, using our
type/alias information as a prepass
We have designed and implemented an algorithm for fairly precise,
yet practical modular concrete type inferencing (CTI) for C++ and Java
programs (published in POPL'99), with emphasis on retaining precision
for practical cost with scalability to large programs and analysis of
libraries. We have also obtained new theoretical results on how
difficult CTI is in the presence of exceptions, as in Java, and
various combinations of program constructs. In the course of this work
we developed the first algorithm for CTI in the presence of exceptions
(to appear in IEEE TSE, 2001).