Efficient and correct execution of parallel programs that share memory
ACM Transactions on Programming Languages and Systems (TOPLAS)
Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A framework for interprocedural optimization in the presence of dynamic class loading
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Effective synchronization removal for Java
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
Adaptive optimization in the Jalapeño JVM
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
OOPSLA '00 Proceedings of the 15th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Thread-specific heaps for multi-threaded programs
Proceedings of the 2nd international symposium on Memory management
Dynamic optimistic interprocedural analysis: a framework and an application
OOPSLA '01 Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Pointer analysis for structured parallel programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis
ECOOP '95 Proceedings of the 9th European Conference on Object-Oriented Programming
Thin Guards: A Simple and Effective Technique for Reducing the Penalty of Dynamic Class Loading
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
IBM Systems Journal
Proceedings of the 32nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Compiler techniques for high performance sequentially consistent java programs
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
A two-phase escape analysis for parallel java programs
Proceedings of the 15th international conference on Parallel architectures and compilation techniques
Hi-index | 0.00 |
In the presence of dynamic classloading, performing interprocedural analysis (IPA) too early can lead to repeatedly performing the IPA as new classes are loaded, while performing it too late will cause a performance degradation by running unoptimized code for too long. This paper investigates how programs load classes and how this affects the performance when performing IPA. From this investigation, two classloading techniques are described and evaluated. We first describe a classloader that eagerly preloads classes whose names appear in the constant pool. By loading classes as early as possible, the preloading classloader reduces the chances of new classes being loaded after an IPA is performed, and thus can improve performance by reducing the number of IPAs performed. We next describe a technique that delays the IPA, causing it to be performed late enough to dramatically reduce the need for re-analyses and early enough to obtain the benefits of the IPA. When these two classloading techniques are used with a real IPA . an escape analysis to enforce sequential consistency in Java programs . the speedups relative to the default nonpreloading classloader are 1.87 and 2.30 respectively, on average.