Learn More
Optimizing compilers for object-oriented languages apply static class analysis and other techniques to try to deduce precise information about the possible classes of the receivers of messages; if successful, dynamicallydispatched messages can be replaced with direct procedure calls and potentially further optimized through inline-expansion. By examining(More)
Future high-performance virtual machines will improve performance through sophisticated online feedback-directed optimizations. this paper presents the architecture of the Jalapeño Adaptive Optimization System, a system to support leading-edge virtual machine technology and enable ongoing research on online feedback-directed optimizations. We(More)
& B. Alpern S. Augart S. M. Blackburn M. Butrico A. Cocchi P. Cheng J. Dolby S. Fink D. Grove M. Hind K. S. McKinley M. Mergen J. E. B. Moss T. Ngo V. Sarkar M. Trapp This paper describes the evolution of the Jikese Research Virtual Machine project from an IBM internal research project, called Jalapeño, into an open-source project. After summarizing the(More)
The Jalapeiio Dynamic Optimizing Compiler is a key component of the Jalapeiio Virtual Machine, a new Java’ Virtual Machine (JVM) designed to support efficient and scalable execution of Java applications on SMP server machines. This paper describes the design of the Jalapefio Optimizing Compiler, and the implementation results that we have obtained thus far.(More)
A large number of call graph construction algorithms for object-oriented and functional languages have been proposed, each embodying different tradeoffs between analysis cost and call graph precision. In this article we present a unifying framework for understanding call graph construction algorithms and an empirical comparison of a representative set of(More)
Interprocedural analyses enable optimizing compilers to more precisely model the effects of non-inlined procedure calls, potentially resulting in substantial increases in application performance. Applying interprocedural analysis to programs written in object-oriented or functional languages is complicated by the difficulty of constructing an accurate(More)
Virtual machines face significant performance challenges beyond those confronted by traditional static optimizers. First, portable program representations and dynamic language features, such as dynamic class loading, force the deferral of most optimizations until runtime, inducing runtime optimization overhead. Second, modular program representations(More)
The Factored Control Flow Graph, <i>FCFG,</i> is a novel representation of a program's intraprocedural control flow, which is designed to efficiently support the analysis of programs written in languages, such as Java, that have frequently occurring operations whose execution may result in exceptional control flow. The FCFG is more compact than traditional(More)