A Framework for Persistence-Enabled Optimization of Java Object Stores

  • David Whitlock
  • Antony L. Hosking
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2135)

Abstract

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.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Agesen, O. 1994. Constraint-Based Type Inference and Parametric Polymorphism. lncs, vol. 864. 78–100.Google Scholar
  2. Agesen, O. 1995. The cartesian product algorithm: Simple and precise typing of parametric polymorphism. See ECOOP’95 [1995], 2–26.Google Scholar
  3. 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 [1999], 314–324.Google Scholar
  4. Atkinson, M.P., Daynès, L., Jordan, M.J., Printezis, T., AND Spence, S. 1996. Anorthogonally persistent Java. ACM SIGMOD Record 25, 4 (Dec.), 68–75.CrossRefGoogle Scholar
  5. Bacon, D. F. AND Sweeney, P. F. 1996. Fast static analysis of c++ virtual function calls. See OOPSLA’96 [1996], 324–341.Google Scholar
  6. Budimlic, Z. AND Kennedy, K. 1997. Optimizing Java: Theory and practice. Software—Practice and Experience 9, 6 (June), 445–463.CrossRefGoogle Scholar
  7. Budimlic, Z. AND Kennedy, K. 1998. Static interprocedural optimizations in java. Tech. Rep. CRPC-TR98746, Rice University.Google Scholar
  8. 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
  9. 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
  10. Dean, J., Grove, D., AND Chambers, C. 1995. Optimization of object-oriented programs using static class hierarchy analysis. See ECOOP’95 [1995].Google Scholar
  11. 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
  12. Diwan, A., Moss, J. E. B., AND McKinley, K. S. 1996. Simple and effective analysis of statically-typed object-oriented programs. See OOPSLA’96 [1996], 292–305.Google Scholar
  13. 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
  14. 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
  15. Gosling, J., Joy, B., AND Steele, G. 1996. The Java Language Specification. Addison-Wesley.Google Scholar
  16. Grove, D., Dean, J., Garrett, C., AND Chambers, C. 1995. Profile-guided receiver class prediction. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (Austin, Texas, Oct.). ACM SIGPLAN Notices 30, 10 (Oct.), 108–123.CrossRefGoogle Scholar
  17. 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
  18. 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
  19. 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
  20. Lindholm, T. AND Yellin, F. 1999. The Java Virtual Machine Specification. Addison-Wesley.Google Scholar
  21. 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
  22. 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
  23. Palsberg, J. AND Schwartzbach, M. I. 1991. Object-oriented type inference. In Proceedings of the ACM Conference on Object-Oriented Programming Systems, Languages, and Applications (Phoenix, Arizona, Oct.). ACM SIGPLAN Notices 26, 11 (Nov.), 146–161.CrossRefGoogle Scholar
  24. SPEC. 1998. SPECjvm98 benchmarks. http://www.spec.org/osg/jvm98.
  25. 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
  26. Tip, F., Laffra, C., Sweeney, P. F., AND Streeter, D. 1999. Practical experience with an application extractor for Java. See OOPSLA’99 [1999], 292–305.Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • David Whitlock
    • 1
  • Antony L. Hosking
    • 1
  1. 1.Department of Computer SciencesPurdue UniversityWest LafayetteUSA

Personalised recommendations