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

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