skip to main content
10.5555/3370272.3370305dlproceedingsArticle/Chapter ViewAbstractPublication PagescasconConference Proceedingsconference-collections
research-article

Ahead-of-time compilation in OMR: overview and first steps

Published: 04 November 2019 Publication History

Abstract

The growth of dynamic programming languages has triggered a renewed interest in ahead-of-time (AOT) compilation technology. While there are available resources describing technical details, possible implementations or performance comparisons of various AOT implementations, a limited number of publications are available providing sufficient background information to enter the field or the structural requirements to an AOT infrastructure. It is responsible for producing, storing and reusing the compiled code. Eclipse OpenJ9 implements all of the necessary modules for AOT. This paper describes the implementation of an ahead-of-time compiler in OpenJ9 and attempts to draw parallels with textbook descriptions of an ahead-of-time compiler. The paper also outlines initial steps and challenges of implementing AOT for language agnostic runtime environments, using Eclipse OMR as an example.

References

[1]
Andrew W. Appel. 1990. A runtime system. LISP and Symbolic Computation 3, 4 (01 Nov 1990), 343--380.
[2]
John Aycock. 2003. A Brief History of Just-in-time. ACM Comput. Surv. 35, 2 (June 2003), 97--113.
[3]
Leonardo Banderali. 2019. Investigating the performance of wasmjit-omr, Part 1.
[4]
Evgenij Belikov. 2015. Language Run-time Systems: an Overview. In ICCSW.
[5]
D. Bhattacharya, K. B. Kent, E. Aubanel, D. Heidinga, P. Shipton, and A. Micic. 2017. Improving the performance of JVM startup using the shared class cache. In 2017 IEEE Pacific Rim Conference on Communications, Computers and Signal Processing (PACRIM). 1--6.
[6]
C. Chambers, D. Ungar, and E. Lee. 1989. An Efficient Implementation of SELF a Dynamically-typed Object-oriented Language Based on Prototypes. SIGPLAN Not. 24, 10 (Sept. 1989), 49--70.
[7]
Stefan Marr Charilie Gracie. 2016. SOM++ - C++ implementation of the Simple Object Machine Smalltalk. github. url = https://github.com/charliegracie/SOMpp.
[8]
IBM Corp et al. [n.d.]. Eclipse OpenJ9. https://github.com/eclipse/openj9
[9]
Irwin D'Souza. 2018. Ahead Of Time Compilation: Relocation. https://blog.openj9.org/2018/10/26/ahead-of-time-compilation-relocation/
[10]
Irwin D'Souza. 2018. Ahead Of Time Compilation: Validation. https://blog.openj9.org/2018/11/08/ahead-of-time-compilation-validation/
[11]
Irwin D'Souza. 2018. Intro to Ahead Of Time Compilation. https://blog.openj9.org/2018/10/10/intro-to-ahead-of-time-compilation/
[12]
Sue Chaplain Eclipse foundation, Dan Heidinga. 2018. Eclipse OpenJ9; not just any Java Virtual Machine. https://www.eclipse.org/community/eclipse_newsletter/2018/april/openj9.php
[13]
Eclipse foundation. 2016. OMR project proposal. https://projects.eclipse.org/proposals/omr
[14]
Stephen N. Freund and John C. Mitchell. 2003. A Type System for the Java Bytecode Language and Verifier. Journal of Automated Reasoning 30, 3 (01 May 2003), 271--321.
[15]
M. Fulton and M. Stoodley. 2007. Compilation Techniques for Real-Time Java Programs. In International Symposium on Code Generation and Optimization (CGO'07). 221--231.
[16]
M. Fulton and M. Stoodley. 2007. Compilation Techniques for Real-Time Java Programs. In International Symposium on Code Generation and Optimization (CGO'07). 221--231.
[17]
Charlie Gracie. 2017. A different Lua JIT using Eclipse OMR Using the Eclipse OMR JitBuilder to improve Lua performance with minimal changes to the interpreter. In FOSDEM proceedings. FOSDEM.
[18]
Peter Haggar. 2001. Java bytecode: Understanding bytecode makes you a better programmer. https://www.ibm.com/developerworks/ibm/library/it-haggar_bytecode/
[19]
IBM Corporation, Eclipse foundation. 2019. Eclipse OMR™ Cross platform components for building reliable, high performance language runtimes. https://github.com/eclipse/omr.
[20]
William Landi. 1992. Undecidability of Static Analysis. ACM Lett. Program. Lang. Syst. 1, 4 (Dec. 1992), 323--337.
[21]
Kevin J Langman and Zhong L Wang. 2009. Method and system for dynamic loop transfer by populating split variables.
[22]
John R. Levine. 1999. Linkers and Loaders (1st ed.). Morgan Kaufmann Publishers Inc., San Francisco, CA, USA.
[23]
Tim Lindholm, Frank Yellin, Gilad Bracha, and Alex Buckley. 2014. The Java Virtual Machine Specification, Java SE 8 Edition (1st ed.). Addison-Wesley Professional.
[24]
Linux Programmer's Manual. 2017. dlopen(3).
[25]
Benedikt Meurer. 2017. TurboFan: A new code generation architecture for V8. https://docs.google.com/presentation/d/1_eLlVzcj94_G4r9j9d_Lj5HRKFnq6jgpuPJtnmIBs88/edit#slide=id.p
[26]
Leon Presser and John R. White. 1972. Linkers and Loaders. ACM Comput. Surv. 4, 3 (Sept. 1972), 149--167.
[27]
Theodore H. Romer, Dennis Lee, Geoffrey M. Voelker, Alec Wolman, Wayne A. Wong, Jean-Loup Baer, Brian N. Bershad, and Henry M. Levy. 1996. The Structure and Performance of Interpreters. In Proceedings of the Seventh International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS VII). ACM, New York, NY, USA, 150--159.
[28]
Mark Stoodley. 2017. Building the JitBuilder library from source code. https://developer.ibm.com/code/2017/04/14/building-jitbuilder-library-source-code/
[29]
Leszek Swirski. 2019. Code caching for JavaScript developers. https://v8.dev/blog/code-caching-for-devs
[30]
Mark Thom, Gerhard W. Dueck, Kenneth B. Kent, and Daryl Maier. 2018. A survey of ahead-of-time technologies in dynamic language environments. In Proceedings of the 28th Annual International Conference on Computer Science and Software Engineering, CASCON 2018, Markham, Ontario, Canada, October 29-31, 2018. 275--281.

Cited By

View all
  • (2021)A lightweight code storage container for the eclipse OMR ahead-of-time compilerProceedings of the 31st Annual International Conference on Computer Science and Software Engineering10.5555/3507788.3507802(93-103)Online publication date: 22-Nov-2021

Index Terms

  1. Ahead-of-time compilation in OMR: overview and first steps

      Recommendations

      Comments

      Information & Contributors

      Information

      Published In

      cover image DL Hosted proceedings
      CASCON '19: Proceedings of the 29th Annual International Conference on Computer Science and Software Engineering
      November 2019
      421 pages

      Publisher

      IBM Corp.

      United States

      Publication History

      Published: 04 November 2019

      Author Tags

      1. ahead-of-time compilation
      2. object files
      3. runtime systems

      Qualifiers

      • Research-article

      Acceptance Rates

      Overall Acceptance Rate 24 of 90 submissions, 27%

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

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

      Other Metrics

      Citations

      Cited By

      View all
      • (2021)A lightweight code storage container for the eclipse OMR ahead-of-time compilerProceedings of the 31st Annual International Conference on Computer Science and Software Engineering10.5555/3507788.3507802(93-103)Online publication date: 22-Nov-2021

      View Options

      Get Access

      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