M. Gupta IBM T.J. Watson Research Centre, USA A framework for deep analysis of Java programs We describe a new framework for extensive interprocedural analysis of Java programs. Our framework is able to handle dynamic features of Java like dynamic class loading and runtime binding of methods, and yet, it avoids the high cost associated with runtime compilation. The first part of our talk presents quasi-static compilation, which reduces the cost of dynamic compilation, while maintaining compliance with the dynamic features of Java. The quasi-static compiler generates persistent code images ahead of time, and during a production run, performs validation checks and adapts those images to the new execution context while preserving global optimizations and maintaining binary compatibility. A preliminary implementation of this approach in the Jalapeno VM has led to performance improvements ranging from 9% to 91% for the SPECjvm98 benchmarks with size 100, and 54% to 356% for the (shorter running) SPECjvm98 benchmarks with size 10. The second part of the talk describes an extension of the extant analysis framework (presented recently by Sreedhar et al.) in the context of the quasi-static compiler, which enables global analyses and optimizations in the presence of dynamic class loading. Our approach enables transformations like unguarded devirtualization and/or inlining of virtual methods in cases that are beyond the scope of previously known techniques.