International Journal of Parallel Programming

, Volume 27, Issue 1, pp 21–33 | Cite as

A Tree-Based Alternative to Java Byte-Codes

  • Thomas Kistler
  • Michael Franz

Abstract

Despite the apparent success of the Java Virtual Machine, its lackluster performance makes it ill-suited for many speed-critical applications. Although the latest just-in-time compilers and dedicated Java processors try to remedy this situation, optimized code compiled directly from a C program source is still considerably faster than software transported via Java byte-codes. This is true even if the Java byte-codes are subsequently further translated into native code. In this paper, we claim that these performance penalties are not a necessary consequence of machine-independence, but related to Java's particular intermediate representation and runtime architecture. We have constructed a prototype and are further developing a software transportability scheme founded on a tree-based alternative to Java byte-codes. This tree-based intermediate representation is not only twice as compact as Java byte-codes, but also contains more high-level information, some of which is critical for advanced code optimizations. Our architecture not only provides on-the-fly code generation from this intermediate representation, but also continuous re-optimization of the existing code-base by a low-priority background process. The re-optimization process is guided by up-to-the-minute profiling data, leading to superior runtime performance.

INTERMEDIATE CODE REPRESENTATIONS JUST-IN-TIME COMPILATION DYNAMIC CODE REOPTIMIZATION 

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

REFERENCES

  1. 1.
    T. Lindholm, F. Yellin, B. Joy, and K. Walrath, The Java Virtual Machine Specification, Addison-Wesley (1996).Google Scholar
  2. 2.
    Sun Microsystems, The Java Language: An Overview, http://java.sun.com/doc/Overviews/java/java-overview-1.html (1995).Google Scholar
  3. 3.
    D. W. Wall, Global Register Allocation at Link Time, Proc. '86 Symp. Compiler Construction, pp. 264–275 (July 1986).Google Scholar
  4. 4.
    M. Franz and T. Kistler, Slim Binaries, Comm. ACM, 40(12):87–94 (December 1997). Also published as Technical Report No. 96–24, Department of Information and Computer Science, University of California, Irvine (June 1996).Google Scholar
  5. 5.
    M. Franz, Code-Generation On-the-Fly: A Key to Portable Software, Doctoral Dissertation, Verlag der Fachvereine, Zürich (1994).Google Scholar
  6. 6.
    T. A. Welch, A Technique for High-Performance Data Compression, IEEE Computer,17(6):8–19 (June 1984).Google Scholar
  7. 7.
    M. Wolf and M. Lam, A Data Locality Optimization Algorithm, Proc.191 Conf. Progr. Lang. Design and Implementation. Published as SIGPLAN Notices 26(6):30–44 (June 1991).Google Scholar
  8. 8.
    J. Cocke and J. Schwartz, Programming Languages and Their Compilers: Preliminary Notes, Courant Institute of Mathematical Sciences, New York University (April 1970).Google Scholar
  9. 9.
    M. M. Brandis, Optimizing Compilers for Structured Programming Languages, Doctoral Dissertation, Eidgenö ssische Technische Hochschule Zürich (1995).Google Scholar
  10. 10.
    U. Hölzle, Adaptive Optimization for SELF: Reconciling High Performance with Exploratory Programming, Ph.D. Dissertation, Department of Computer Science, Stanford University (1994).Google Scholar
  11. 11.
    T. Kistler, Dynamic Runtime Optimization, Proc. Joint Modular Lang. Conf. (JMLC'97), pp. 53–66. Published as Springer Lecture Notes in Computer Science No. 1204 (March 1997). Also published as Technical Report No. 9–54, Department of Information and Computer Science, University of California, Irvine (November 1996).Google Scholar
  12. 12.
    J. Anderson, L. Berc, J. Dean, S. Ghemawat, M. Henzinger, S.-T. Leung, R. Sites, M. Vandevoorde, C. Waldspurger, and W. Weihl, Continuous Profiling: Where Have All the Cycles Gone? Proc. 16th ACM Symp. Oper. Syst. Principles, St. Malo, France (October 1997). Also published as Technical Note 199– 016.Google Scholar
  13. 13.
    T. Ball and J. R. Larus, Optimally Profiling and Tracing Programs, ACM Trans. Progr. Lang. Syst., 16(4):1319–1360 (July 1994).Google Scholar
  14. 14.
    United Kingdom Defence Resesearch Agency, TDF Specification, Issue 2.1. (June 1993).Google Scholar
  15. 15.
    Open Software Foundation, OSF Architecture-Neutral Distribution Format Rationale(1991).Google Scholar
  16. 16.
    G. Hansen, Adaptive Systems for the Dynamic Run-Time Optimization of Programs, Ph.D. Dissertation, Department of Computer Science, Carnegie-Mellon University (1974).Google Scholar
  17. 17.
    D. Wall, Systems for Late Code Modification, WRL Research Report 92/3, Digital Equipment Corporation, Western Research Laboratory, Palo Alto California (May 1992).Google Scholar
  18. 18.
    R. Hookway and M. Herdeg, DIGITAL FX!32: Combining Emulation and Binary Translation,Digital Tech. J., 9(1):3–12 (1997).Google Scholar
  19. 19.
    X. Zhang, Z. Wang, N. Gloy, J. Chen, and M. Smith, System Support for Automatic Profiling and Optimization, Proc. 16th ACM Symp. Oper. Syst. Principles(September 1997).Google Scholar
  20. 20.
    Motorola, Inc. PowerPC 601: RISC Microprocessor User's Manual(1993).Google Scholar
  21. 21.
    N. Wirth, The Programming Language Oberon, Software-Practice and Experience, 18(7):67–690 (July 1988).Google Scholar

Copyright information

© Plenum Publishing Corporation 1999

Authors and Affiliations

  • Thomas Kistler
  • Michael Franz

There are no affiliations available

Personalised recommendations