[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/277650.277740acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
Article
Free access

Fast, effective code generation in a just-in-time Java compiler

Published: 01 May 1998 Publication History

Abstract

A "Just-In-Time" (JIT) Java compiler produces native code from Java byte code instructions during program execution. As such, compilation speed is more important in a Java JIT compiler than in a traditional compiler, requiring optimization algorithms to be lightweight and effective. We present the structure of a Java JIT compiler for the Intel Architecture, describe the lightweight implementation of JIT compiler optimizations (e.g., common subexpression elimination, register allocation, and elimination of array bounds checking), and evaluate the performance benefits and tradeoffs of the optimizations. This JIT compiler has been shipped with version 2.5 of Intel's VTune for Java product.

References

[1]
O. Agesen and D. Detlefs. Finding References in Java Stacks. Presented at the OOPSLA'97 Workshop on Garbage Collection and Memory Management, Atlanta, October 1997.
[2]
A.V. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley, Reading, MA, second edition, 1986.
[3]
D. Bemstein, D. Q. Goldin, M.C. Golumbic, H. Krawczyk, Y. Mansour, I. Nahshon, and R.Y. Pinter. Spill code minimization techniques for optimizing compilers. In Proceedings of the A CM SIGPLAN '89 Conference on Programming Language Design and Implementation, pages 258- 263. ACM, July 1989.
[4]
P. Briggs, K.D. Cooper, K. Kennedy, and L. Torczon. Coloring heuristics for register allocation. In Proceedings of the A CM SIGPLAN '89 Conference on Programming Language Design and Implementation, pages 275-284. ACM, July 1989.
[5]
D. Callanhan and B. Koblenz. Register allocation via hierarchical graph coloring. In Proceedings of the A CM SIGPLAN '91 Conference on Programming Language Design and Implementation, pages 192-203. ACM, June 1991.
[6]
G.J. Chaitin, M. A. Auslander, A. K. Chandra, J. Cocke, M. E. Hopkins, and P. W. Markstein. Register allocation via coloring. Computer Languages, 6:47-57, January 1981.
[7]
F. Chow. A Portable, Machine-Independent Global Optimizer---Design and Measurements. PhD thesis, Stanford University, 1984.
[8]
F.C. Chow and J. L. Hennessy. A priority-based coloring approach to register allocation. A CM Transactions on Programming Languages and Systems, 12:501-535, Oct. 1990.
[9]
D. W. Goodwin and K. D. Wilken. Optimal and Near- Optimal Global Register Allocation Using 0-1 Integer Programming. Software-Practice and Experience, 26:930-965, Aug. 1996.
[10]
J. Gosling, B. Joy and G. Steele. The Java Language Specification. Addison-Wesley, 1996.
[11]
Intel Corp. Intel Architecture Software Developer's Manual, order number 243192. 1997.
[12]
Intel Corp. Pentium Pro Family Developer's Manual, order number 000900-001. 1996.
[13]
Intel Corp. VTune: Visual Tuning Environment. Available at ht{p;//deve!ol~er,intel.congdesi~n/peffiool/vtune
[14]
R. Jones and R. Lins. Garbage Collection. John Wiley & Sons, 1996.
[15]
J. Knoop, O. Ruthing, and B. Steffen. Lazy code motion. In Proceedings of the A CM $IGPLAN 92 Conference on Programming language Design and Implementation, pages 224-234. ACM, June 1992.
[16]
A. Krall and R. Graft. CACAO---A 64-bit Java VM Justin-Time Compiler. In Proceedings of the ACM PPoPP97 Workshop on Java for Science and Engineering Computation.
[17]
T. Lindholm and F. Yellin The Java Virtual Machine Specification. Addison-Wesley, 1996.
[18]
G. Lueh and T. Gross. Call-cost directed register allocation. In Proceedings of the A CM SIGPLAN 97 Conference on Programming Language Design and implementation, pages 296-307. ACM, June 1997.
[19]
G. Lueh, T. Gross, and A. Adl-Tabatabai. Global register allocation based on graph fusion. In Proceedings of the 96 Workshop on Languages and Compilers for Parallel Computing, pages 246-265. Aug. 1996. Springer-Verlag.
[20]
Microsoft Corp. MS SDK 1.5.1. Available at h ttp.://ww.w,micro so ft. co ~ av a
[21]
Microsoft Corp. MS SDK 1.5.1 JIT Structure. Available at htt~://www,microsoft, co m/iava/sdlc/l 51/ vendor/vm015.htm
[22]
C. Norris and L. L. Pollock. Register allocation over the program dependence graph, in Proceedings of the A CM SIGPLAN 94 Conference on Programming Language Design and Implementation, pages 266-277. ACM, June 1994.
[23]
M. Poletto, D.R. Engler and M.F. Kaashoek. tcc: A System for Fast, Flexible, and High-Level Dynamic Code Generation. In Proceedings of the A CM SIGPLAN 97 Conference on Programming Language Design and Implementation, pages 109-121. ACM, June 1997.

Cited By

View all
  • (2017)Synthesis of program binaries into FPGA accelerators with runtime dependence validation2017 International Conference on Field Programmable Technology (ICFPT)10.1109/FPT.2017.8280126(96-103)Online publication date: Dec-2017
  • (2017)Profile Guided Dataflow Transformation for FPGAs and CPUsJournal of Signal Processing Systems10.1007/s11265-015-1044-y87:1(3-20)Online publication date: 1-Apr-2017
  • (2017)Control Dependencies in Interpretive SystemsRuntime Verification10.1007/978-3-319-67531-2_19(312-329)Online publication date: 6-Sep-2017
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '98: Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation
May 1998
357 pages
ISBN:0897919874
DOI:10.1145/277650
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]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 May 1998

Permissions

Request permissions for this article.

Check for updates

Qualifiers

  • Article

Conference

PLDI98
Sponsor:
PLDI98: Conference on Programming Language
June 17 - 19, 1998
Quebec, Montreal, Canada

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)227
  • Downloads (Last 6 weeks)31
Reflects downloads up to 13 Dec 2024

Other Metrics

Citations

Cited By

View all
  • (2017)Synthesis of program binaries into FPGA accelerators with runtime dependence validation2017 International Conference on Field Programmable Technology (ICFPT)10.1109/FPT.2017.8280126(96-103)Online publication date: Dec-2017
  • (2017)Profile Guided Dataflow Transformation for FPGAs and CPUsJournal of Signal Processing Systems10.1007/s11265-015-1044-y87:1(3-20)Online publication date: 1-Apr-2017
  • (2017)Control Dependencies in Interpretive SystemsRuntime Verification10.1007/978-3-319-67531-2_19(312-329)Online publication date: 6-Sep-2017
  • (2014)LambdaJITProceedings of the 3rd ACM SIGPLAN workshop on Functional high-performance computing10.1145/2636228.2636233(99-108)Online publication date: 3-Sep-2014
  • (2014)Profile driven dataflow optimisation of mean shift visual tracking2014 IEEE Global Conference on Signal and Information Processing (GlobalSIP)10.1109/GlobalSIP.2014.7032066(1-5)Online publication date: Dec-2014
  • (2012)Micro-specializationProceedings of the Tenth International Symposium on Code Generation and Optimization10.1145/2259016.2259025(63-73)Online publication date: 31-Mar-2012
  • (2012)Smaller footprint for java collectionsProceedings of the 26th European conference on Object-Oriented Programming10.1007/978-3-642-31057-7_17(356-382)Online publication date: 11-Jun-2012
  • (2011)Adaptive optimization in the Jalapeno JVMACM SIGPLAN Notices10.1145/1988042.198804846:4(65-83)Online publication date: 20-May-2011
  • (2011)Virtual Software Execution Environments for Distributed Embedded Control SystemsProceedings of the 2011 14th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing Workshops10.1109/ISORCW.2011.35(288-296)Online publication date: 28-Mar-2011
  • (2010)Proposing a Hybrid Software Execution Environment for Distributed Embedded SystemsProceedings of the 2010 13th IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing Workshops10.1109/ISORCW.2010.19(176-183)Online publication date: 4-May-2010
  • Show More Cited By

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media