Dynamic class loading during program execution in the JavaTM Programming Language is an impediment for generating code that is as e cient as code generated using static wholeprogram analysis and optimization. Whole-program analysis and optimization is possible for languages, such as C++, that do not allow new classes and/or methods to be loaded during program execution. One solution for performing wholeprogram analysis and avoiding incorrect execution after a new class is loaded is to invalidate and recompile a ected methods. Runtime invalidation and recompilation mechanisms can be expensive in both space and time, and, therefore, generally restrict optimization. To address these drawbacks, we propose a new framework, called the extant analysis framework, for interprocedural optimization of programs that support dynamic class (or method) loading. Given a set ofclasses comprising the closed world, we perform an o ine static analysis which partitions references into two categories: (1) ...
Vugranam C. Sreedhar, Michael G. Burke, Jong-Deok