A Framework for Persistence-Enabled Optimization of Java Object Stores
Aggressive optimization of programs often relies on analysis and transformation that cuts across the natural abstraction boundaries of the source programming language, such as procedures in procedural languages, or classes in class-based object-oriented languages like Java. Unfortunately, execution environments for languages such as Java dynamically link code into the application as it executes, precluding cross-cutting analyses and optimizations that are too expensive to apply on-line.
Fortunately, persistent object systems usually treat the code base as an integral part of the persistent store. This code base approximates the notion of “whole-program” that has been exploited in other optimization frameworks. This paper describes an analysis and optimization framework for Java that operates against the persistent code base, and couples the results of analysis and optimization with the run-time system to ensure continued correctness of the resulting code. The framework performs extensive analysis over the code in the store, supporting optimizations that cut across class boundaries in ways that are not safe to perform off-line on stand-alone Java classes.
Unable to display preview. Download preview PDF.
- Agesen, O. 1994. Constraint-Based Type Inference and Parametric Polymorphism. lncs, vol. 864. 78–100.Google Scholar
- Agesen, O. 1995. The cartesian product algorithm: Simple and precise typing of parametric polymorphism. See ECOOP’95 , 2–26.Google Scholar
- Alpern, B., Attanasio, C. R., Barton, J. J., Cocchi, A., Hummel, S. F., Lieber, D., Ngo, T., Mergen, M., Shepherd, J. C., AND Smith, S. 1999. Implementing Jalapeño in Java. See OOPSLA’99 , 314–324.Google Scholar
- Bacon, D. F. AND Sweeney, P. F. 1996. Fast static analysis of c++ virtual function calls. See OOPSLA’96 , 324–341.Google Scholar
- Budimlic, Z. AND Kennedy, K. 1998. Static interprocedural optimizations in java. Tech. Rep. CRPC-TR98746, Rice University.Google Scholar
- Chambers, C., Dean, J., AND Grove, D. 1995. A framework for selective recompilation in the presence of complex intermodule dependencies. In Proceedings of the International Conference on Software Engineering (Seattle, Washington, Apr.). IEEE Computer Society, 221–230.Google Scholar
- Chambers, C., Ungar, D., AND Lee, E. 1989. An efficient implementation of Self, a dynamically-typed object-oriented language based on prototypes. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (New Orleans, Louisiana, Oct.). ACM SIGPLAN Notices 24, 10 (Oct.), 49–70.Google Scholar
- Dean, J., Grove, D., AND Chambers, C. 1995. Optimization of object-oriented programs using static class hierarchy analysis. See ECOOP’95 .Google Scholar
- Detlefs, D. AND Agesen, O. 1999. Inlining of virtual methods. In Proceedings of the European Conference on Object-Oriented Programming (Lisbon, Portugal, June), R. Guerraoui, Ed. Lecture Notes in Computer Science, vol. 1628. Springer-Verlag, 258–278.Google Scholar
- Diwan, A., Moss, J. E. B., AND McKinley, K. S. 1996. Simple and effective analysis of statically-typed object-oriented programs. See OOPSLA’96 , 292–305.Google Scholar
- ECOOP’95 1995. Proceedings of the European Conference on Object-Oriented Programming (Åarhus, Denmark, Aug.). Lecture Notes in Computer Science, vol. 952. Springer-Verlag.Google Scholar
- Fernandez, M. F. 1995. Simple and effective link-time optimization of Modula-3 programs. In Proceedings of theACMConference on Programming Language Design and Implementation (La Jolla, California, June). ACM SIGPLAN Notices 30, 6 (June), 103–115.Google Scholar
- Gosling, J., Joy, B., AND Steele, G. 1996. The Java Language Specification. Addison-Wesley.Google Scholar
- Hölzle, U., Chambers, C., AND Ungar, D. 1992. Debugging optimized code with dynamic deoptimization. In Proceedings of the ACM Conference on Programming Language Design and Implementation (San Francisco, California, June). ACM SIGPLAN Notices 27, 7 (July), 32–43.Google Scholar
- Hosking, A. L., Nystrom, N., Whitlock, D., Cutts, Q., AND Diwan, A. 1999. Partial redundancy elimination for access path expressions. In Proceedings of the Intercontinental Workshop on Aliasing in Object Oriented Systems (Lisbon, Portugal, June).Google Scholar
- Hosking, A. L., Nystrom, N., Whitlock, D., Cutts, Q., AND Diwan, A. 2000. Partial redundancy elimination for access path expressions. Software-Practice and Experience. To appear in Special Issue on Aliasing in Object-Oriented Systems.Google Scholar
- Lindholm, T. AND Yellin, F. 1999. The Java Virtual Machine Specification. Addison-Wesley.Google Scholar
- OOPSLA’96 1996. Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (San Jose, California, Oct.). ACM SIGPLAN Notices 31, 10 (Oct.).Google Scholar
- OOPSLA’99 1999. Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (Denver, Colorado, Nov.). ACM SIGPLAN Notices 34, 10 (Oct.).Google Scholar
- SPEC. 1998. SPECjvm98 benchmarks. http://www.spec.org/osg/jvm98.
- Sundaresan, V., Razafimahefa, C., Vallée-Rai, R., AND Hendren, L. 1999. Practical virtual method call resolution for java. Trusted objects, Centre Universitaire d’Informatique, University of Geneva. July.Google Scholar
- Tip, F., Laffra, C., Sweeney, P. F., AND Streeter, D. 1999. Practical experience with an application extractor for Java. See OOPSLA’99 , 292–305.Google Scholar