[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

Effectiveness of cross-platform optimizations for a java just-in-time compiler

Published: 26 October 2003 Publication History

Abstract

This paper describes the system overview of our Java Just-In-Time (JIT) compiler, which is the basis for the latest production version of IBM Java JIT compiler that supports a diversity of processor architectures including both 32-bit and 64-bit modes, CISC, RISC, and VLIW architectures. In particular, we focus on the design and evaluation of the cross-platform optimizations that are common across different architectures. We studied the effectiveness of each optimization by selectively disabling it in our JIT compiler on three different platforms: IA-32, IA-64, and PowerPC. Our detailed measurements allowed us to rank the optimizations in terms of the greatest performance improvements with the smallest compilation times. The identified set includes method inlining only for tiny methods, exception check eliminations using forward dataflow analysis and partial redundancy elimination, scalar replacement for instance and class fields using dataflow analysis, optimizations for type inclusion checks, and the elimination of merge points in the control flow graphs. These optimizations can achieve 90% of the peak performance for two industry-standard benchmark programs on these platforms with only 34% of the compilation time compared to the case for using all of the optimizations.

References

[1]
K. Arnold and J. Gosling. Java Programming Language, Addison-Wesley, 1996.]]
[2]
T. Suganuma, T. Yasue, M. Kawahito, H. Komatsu, and T. Nakatani. A Dynamic Optimization Framework for a Java Just-In-Time Compiler, In the Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 180--194, 2001.]]
[3]
M. Paleczny, C. Vick, and C. Click. The Java HotSpot Server Compiler, In USENIX 1st Java Virtual Machine Research and Technology Symposium (JVM'01), pp. 1--12, 2001.]]
[4]
T. Suganuma, T. Ogasawara, M. Takeuchi, T. Yasue, M. Kawahito, K. Ishizaki, H. Komatsu, and T. Nakatani. Overview of the IBM Java Just-in-Time Compiler, IBM Systems Journal, Vol. 39, No. 1, pp. 175--193, 2000.]]
[5]
M. Kawahito, H. Komatsu, and T. Nakatani. Effective Null Pointer Check Elimination Utilizing Hardware Trap, In the Proceedings of the International Conference on Architectural Support for Programming Language and Operating Systems, pp. 139--149, 2000.]]
[6]
K. Ishizaki, M. Kawahito, T. Yasue, H. Komatsu, and T. Nakatani. A Study of Devirtualization Techniques for a Java Just-In-Time Compiler, In the Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, 2000.]]
[7]
The Standard Performance Evaluation Corp., SPECjvm98 Benchmarks, available at http://www.spec.org/osg/jvm98/.]]
[8]
The Standard Performance Evaluation Corp., SPECjbb2000 Benchmarks, available at http://www.spec.org/osg/jbb2000/.]]
[9]
T. Onodera and K. Kawachiya. A Study of Locking Objects with Bimodal Fields, In the Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 223--237, 1999.]]
[10]
D. F. Bacon, R. Konuru. C. Murthy, and M. Serrano. Thin Locks: Featherweight Synchronization for Java, In the Proceedings of ACM SIGPLAN '98 Conference on Programming Languages Design and Implementation, pp. 258--268, 1998.]]
[11]
R. Jones and R. Lins. Garbage Collection: Algorithms for Automatic Dynamic Memory Management. John Wiley & Sons, 1996.]]
[12]
Y. Ossia, O. Ben-Yitzhak, I. Goft, E. K. Kolodner, V. Leikehman, and A. Owshanko. A Parallel, Incremental and Concurrent GC for Servers, In the Proceedings of SIGPLAN 2002 Conference on Programming Languages Design and Implementation, pp. 129--140, 2002.]]
[13]
S. A. Mahlke, W. Y. Chen, R. A. Bringmann, R. E. Hank, W. W. Hwu, B. R. Rau, and M. S. Schlansker. Sentinel scheduling: A model for compiler-controlled speculative execution. ACM Transactions on Computer Systems, Vol. 11, No. 4, pp. 376--408, 1993.]]
[14]
C. Chambers, I. Pechtchanski, V. Sarkar, M. J. Serrano, and H. Srinivasan. Dependence analysis for Java, In 12th International Workshop on Languages and Compilers for Parallel Computing (LCPC'99), Volume 1863 of LNCS, Springer-Verlag, pp. 32--52, 1999.]]
[15]
J.-D. Choi, D. Grove, M. Hind, V. Sarkar. Efficient and Precise Modeling of Exceptions for the Analysis of Java Programs, In ACM SIGPLAN-SIGSOFT Workshop on Program Analysis for Software Tools and Engineering (PASTE'99), pp. 21--31, 1999.]]
[16]
J. Palsberg and M. I. Schwartzbach, Object-Oriented Type Inference, In the Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 146--161, 1991.]]
[17]
E. M. Gagnon, L. J. Hendren, and G. Marceau. Efficient Inference of Static Types for Java Bytecode, In Static Analysis 7th international Symposium (SAS'00), Volume 1824 of LNCS, Springer-Verlag, pp. 199--219, 2000.]]
[18]
T. Suganuma, T. Yasue, and T. Nakatani. An Empirical Study of Method Inlining for a Java Just-In-Time Compiler, In USENIX 2nd Java Virtual Machine Research and Technology Symposium, pp. 91--104, 2002.]]
[19]
J. Dean, D. Grove, and C. Chambers. Optimization of object-oriented programs using static class hierarchy, In the proceedings of the 9th European Conference on Object-Oriented Programming - ECOOP, Volume 952 of LNCS, Springer-Verlag, pp. 77--101, 1995.]]
[20]
D. Detlefs and O. Agesen. Inlining of Virtual Methods, In the proceedings of the 13th European Conference on Object-Oriented Programming - ECOOP, Volume 1628 of LNCS, Springer-Verlag, pp. 258--278, 1999.]]
[21]
R. Gupta. Optimizing array bound checks using flow analysis, ACM Letters on Programming Languages and Systems, Vol. 2, No. 1-4, pp. 135-150, 1993.]]
[22]
M. Kawahito, H. Komatsu, and T. Nakatani. Eliminating Exception Checks and Partial Redundancies for Java Just-in-Time Compilers. IBM Research Report RT0350, 2000.]]
[23]
A. Aho, V. Jeffrey, and D. Ullman, Principles of Compiler Design. Addison-Wesley, 1977.]]
[24]
C. Chambers and D. Ungar. Making pure object-oriented languages practical, In the Proceedings of the ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 1--15, 1991.]]
[25]
M. Arnold, B. G. Ryder. Thin Guards: A Simple and Effective Technique for Reducing the Penalty of Dynamic Class Loading, In the Proceedings of the 16th European Conference on Object-Oriented Programming - ECOOP, Volume 2374 of LNCS, Springer-Verlag, pp. 498--524, 2002.]]
[26]
J. Whaley and M. Rinard. Compositional Pointer and Escape Analysis for Java Programs, In the Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, pp. 187--206, 1999.]]
[27]
J. Knoop, O. Ruthing, and B. Steffen. Optimal code motion, ACM Transactions on Programming Languages and Systems, Vol. 17, No. 5, pp. 777-802, 1995.]]
[28]
K. Ishizaki, M. Kawahito, T. Yasue, M. Takeuchi, T. Ogasawara, T. Suganuma, T. Onodera, H. Komatsu, T. Nakatani. Design, Implementation, and Evaluation of Optimizations in a Java(tm) Just-In-Time Compiler, Concurrency: Practice and Experience, Vol. 12, No. 6, pp. 457--475, 2000.]]
[29]
B. Alpern, A. Cocchi, and D. Grove. Dynamic type checking in Jalapeno, In USENIX 1st Java Virtual Machine Research and Technology Symposium (JVM'01), pp. 41--52, 2001.]]
[30]
T. Ogasawara, H. Komatsu, and T. Nakatani. A Study of Exception Handling and Its Dynamic Optimization in Java, In the Proceedings of ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages, and Applications, pp. 83--95, 2001.]]
[31]
R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph, ACM Transactions on Programming Languages and Systems, Vol. 13, No. 4, pp. 451--490, 1991.]]
[32]
R. Cytron, J. Ferrante, B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Efficiently Computing Static Single Assignment Form and the Control Dependence Graph, ACM Transactions on Programming Languages and Systems, Vol. 13, No. 4, pp. 451--490, 1991.]]
[33]
V. C. Sreedhar, R. D. Ju, D. M. Gillies, and V. Santhanam. Translating Out of Static Single Assignment Form, In Static Analysis 6th international Symposium (SAS'99), Volume 1694 of LNCS, pp. 194--210, 1999.]]
[34]
J. R. Allen and K. Kennedy and C. Porterfield and J. Warren. Conversion of control dependence to data dependence, In Conference Record of the 10th Annual ACM Symposium on Principles of Programming Languages, pp. 177--189, 1983.]]
[35]
S. A. Mahlke, D. C. Lin, W. Y. Chen, R. E. Hank, R. A. Bringmann. Effective Compiler Support for Predicated Execution Using the Hyperblock, In the proceedings of the 25th International Symposium on Microarchitecture, pp. 45--54, 1992.]]
[36]
J. Gosling, B. Joy, and G. Steele. The Java Programming Language Specification, Addison-Wesley, 1996.]]
[37]
M. Kawahito, H. Komatsu, and T. Nakatani. Effective Sign Extension Elimination, In the Proceedings of SIGPLAN 2002 Conference on Programming Language Design and Implementation, pp. 187--198, 2002.]]
[38]
M. Poletto and V. Sarkar. Linear scan register allocation, ACM Transactions on Programming Languages and Systems, Vol. 21, No. 5, pp. 895--913, 1999.]]
[39]
G. J. Chaitin. Register allocation and spilling via graph coloring, In the proceedings of the ACM SIGPLAN Symposium on Compiler Construction, SIGPLAN Notices, Vol. 17, No. 6, pp. 257--265, 1982.]]
[40]
D. Stefanovic, M. Hertz, S. M. Blackburn, K. S. McKinley and J. E. B. Moss. Older-first Garbage Collection in Practice: Evaluation in a Java Virtual Machine, ACM SIGPLAN Workshop on Memory System Performance, pp. 25--36, 2002.]]
[41]
B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. Implementing Jalapeno in Java, IBM System Journal, Vol 39, No 1, pp. 211--238, 2000.]]
[42]
M. Cierniak, B. T. Lewis, and J. M. Stichnoth. Open Runtime Platform: Flexibility with Performance using Interfaces, In the Proceedings of the Joint ACM Java Grande - ISCOPE 2002 Conference, pp. 156--164, 2002.]]
[43]
E. Pelegri-Llopart and S. L. Graham. Optimal code generation for expression trees: an application of the BURS theory, In the Proceedings of the Fifteenth Annual ACM Symposium on Principles of Programming Languages, pp. 294--308, 1988.]]
[44]
M. Arnold, M. Hind, and B. G. Ryder. Online Instrumentation and Feedback-Directed Optimization of Java, In the Proceedings of the Conference on Object-Oriented Programming, Systems, Languages and Applications, pp. 111--129, 2002.]]
[45]
A.-R. A.-Tabatabai, M. Cierniak, G.-Y. Lueh, V. M. Parakh, and J. M. Stichnoth. Fast, Effective Code Generation in a Just-In-Time Java Compiler, In the Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 280--290, 1998.]]
[46]
M. Cierniak, G.-Y. Lueh, and J. M. Stichnoth. Practicing JUDO: Java Under Dynamic Optimizations, In the Proceedings of SIGPLAN 2000 Conference on Programming Language Design and Implementation, pp. 13--26, 2000.]]

Cited By

View all
  • (2019)Online performance auditingACM SIGPLAN Notices10.1145/1133255.113401041:6(239-251)Online publication date: 27-Feb-2019
  • (2012)A Detailed Analysis of the LLVM's Register AllocatorsProceedings of the 2012 31st International Conference of the Chilean Computer Science Society10.1109/SCCC.2012.29(190-198)Online publication date: 12-Nov-2012
  • (2011)Register Allocation with Graph Coloring by Ant Colony OptimizationProceedings of the 2011 30th International Conference of the Chilean Computer Science Society10.1109/SCCC.2011.32(247-255)Online publication date: 9-Nov-2011
  • Show More Cited By

Index Terms

  1. Effectiveness of cross-platform optimizations for a java just-in-time compiler

    Recommendations

    Comments

    Please enable JavaScript to view thecomments powered by Disqus.

    Information & Contributors

    Information

    Published In

    cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 38, Issue 11
    Special Issue: Proceedings of the OOPSLA '03 conference
    November 2003
    417 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/949343
    Issue’s Table of Contents
    • cover image ACM Conferences
      OOPSLA '03: Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
      October 2003
      430 pages
      ISBN:1581137125
      DOI:10.1145/949305
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 26 October 2003
    Published in SIGPLAN Volume 38, Issue 11

    Check for updates

    Author Tags

    1. Java
    2. just-in-time compiler
    3. optimization

    Qualifiers

    • Article

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)20
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 30 Dec 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2019)Online performance auditingACM SIGPLAN Notices10.1145/1133255.113401041:6(239-251)Online publication date: 27-Feb-2019
    • (2012)A Detailed Analysis of the LLVM's Register AllocatorsProceedings of the 2012 31st International Conference of the Chilean Computer Science Society10.1109/SCCC.2012.29(190-198)Online publication date: 12-Nov-2012
    • (2011)Register Allocation with Graph Coloring by Ant Colony OptimizationProceedings of the 2011 30th International Conference of the Chilean Computer Science Society10.1109/SCCC.2011.32(247-255)Online publication date: 9-Nov-2011
    • (2011)Multi-objective OptimizationsWorst-Case Execution Time Aware Compilation Techniques for Real-Time Systems10.1007/978-90-481-9929-7_7(197-227)Online publication date: 2011
    • (2009)The effectiveness of producer‐side machine‐independent optimizations for mobile codeSoftware: Practice and Experience10.1002/spe.92139:10(923-946)Online publication date: 15-Apr-2009
    • (2008)JoltACM SIGPLAN Notices10.1145/1449955.144977543:10(127-142)Online publication date: 19-Oct-2008
    • (2008)JoltProceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications10.1145/1449764.1449775(127-142)Online publication date: 19-Oct-2008
    • (2006)Adapting virtual machine techniques for seamless aspect supportACM SIGPLAN Notices10.1145/1167515.116748341:10(109-124)Online publication date: 16-Oct-2006
    • (2006)Adapting virtual machine techniques for seamless aspect supportProceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications10.1145/1167473.1167483(109-124)Online publication date: 23-Oct-2006
    • (2006)Online performance auditingProceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation10.1145/1133981.1134010(239-251)Online publication date: 11-Jun-2006
    • Show More Cited By

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media