Access Keys:
Skip to content (Access Key - 0)
Publications and Presentations
Attachments: • Added by Christian Wimmer, last edited by Christian Wimmer on Mar 20, 2015  (view change)
  • None

Graal Tutorial

This tutorial presents Graal, a high-performance dynamic compiler for Java written in Java. It covers the following topics:

  • Key distinguishing features of Graal,
  • Introduction to the Graal IR: basic properties, instructions, and optimization phases
  • Speculative optimizations: first-class support for optimistic optimizations and deoptimization
  • Graal API: separation of the compiler from the VM
  • Snippets: expressing high-level semantics in low-level Java code
  • Compiler intrinsics: use all your hardware instructions with Graal
  • Using Graal for static analysis
  • Custom compilations with Graal: integration of the compiler with an application or library
  • Graal as a compiler for dynamic programming languages in the Truffle framework

CGO 2015, February 7-11, San Francisco, CA
Video recording: Part 1, Part 2
Download Slides

Truffle Tutorial

This tutorial presents Truffle, a novel open-source framework for implementing managed languages in Java. The language implementer writes an AST interpreter. It uses the Truffle framework that allows tree rewriting during AST interpretation. Tree rewrites incorporate type feedback and other profiling information into the tree, thus specializing the tree and augmenting it with run-time information. When the tree reaches a stable state, partial evaluation compiles the tree into optimized machine code. The partial evaluation is done by Graal, a just-in-time compiler for the Java HotSpot VM.

Oracle Labs as well as external research groups have implemented a variety of programming languages on top of Truffle, including JavaScript, Ruby, R, Python, and Smalltalk. They are competitive with or even faster than the best implementations that existed before.

The recording from SPLASH 2014 is newer than the CGO 2014, but shorter (1 hour instead of 3 hours). The CGO 2014 version has more live programming and covers more topics.

SPLASH 2014, October 20-24, Portland, OR
Video recording
Download slides

CGO 2014, February 15-19, Orlando, FL
Video recording: Part 1, Part 2
Download slides

Truffle Presentations


Graal Papers

  • Gilles Duboscq, Thomas Würthinger, Hanspeter Mössenböck: Speculation Without Regret: Reducing Deoptimization Meta-data in the Graal compiler
    In Proceedings of the Intl. Conf. on Principles and Practice of Programming in Java (PPPJ'14), 2014

    Download paper
    Describes techniques used in Graal to reduce the memory footprint of speculative optimizations.

  • Lukas Stadler: Partial Escape Analysis and Scalar Replacement for JavaPhD thesis, Johannes Kepler University Linz, 2014

  • Lukas Stadler, Thomas Würthinger, Hanspeter Mössenböck: Partial Escape Analysis and Scalar Replacement for Java. In Proceedings of the Symposium on Code Generation and Optimization (CGO), 2014.

    Download paper
    Describes Graal's advanced escape analysis algorithm.

  • Gilles Duboscq, Thomas Würthinger, Lukas Stadler, Christian Wimmer, Doug Simon, Hanspeter Mössenböck: An Intermediate Representation for Speculative Optimizations in a Dynamic Compiler. In Proceedings of the Workshop on Virtual Machines and Intermediate Languages, 2013.

    Download paper
    Describes the speculative optimizations that Graal's graph-base intermediate representation allows.
  • Lukas Stadler, Gilles Duboscq, Hanspeter Mössenböck, Thomas Würthinger, Doug Simon:  An Experimental Study of the Influence of Dynamic Compiler Optimizations on Scala Performance. In Proceedings of the 4th Workshop on Scala (SCALA '13), 2013.

    Download paper

  • Gilles Duboscq, Lukas Stadler, Thomas Würthinger, Doug Simon, Christian Wimmer, Hanspeter Mössenböck: Graal IR: An Extensible Declarative Intermediate Representation. In Proceedings of the Asia-Pacific Programming Languages and Compilers Workshop, 2013.

    Download paper
    Describes the basic architecture of Graal's graph-based intermediate representation.

  • Lukas Stadler, Gilles Duboscq, Hanspeter Mössenböck, Thomas Würthinger: Compilation Queueing and Graph Caching for Dynamic Compilers. In Proceedings of the sixth ACM workshop on Virtual machines and intermediate languages, 2012.

    Download paper 


Truffle Papers

  • Matthias Grimmer, Chris Seaton, Thomas Würthinger, Hanspeter Mössenböck: Dynamically Composing Languages in a Modular Way: Supporting C Extensions for Dynamic Languages. accepted for publication at the 14th International Conference on Modularity, 2015
  • Matthias Grimmer: High-performance language interoperability in multi-language runtimes.
    In Proceedings of the companion publication of the 2014 ACM SIGPLAN conference on Systems, Programming, and Applications: Software for Humanity (SPLASH'14), 2014

    Download paper
  • Matthias Grimmer, Manuel Rigger, Roland Schatz, Lukas Stadler, Hanspeter Mössenböck: Truffle C: Dynamic Execution of C on the Java Virtual Machine.
    In Proceedings of the Intl. Conf. on Principles and Practice of Programming in Java (PPPJ'14), 2014

    Download paper
  • Christian Humer, Christian Wimmer, Christian Wirth, Andreas Wöß, Thomas Würthinger: A Domain-Specific Language for Building Self-Optimizing AST Interpreters. In Proceedings of the International Conference on Generative Programming: Concepts and Experiences (GPCE'14), 2014

    Download paper
  • Andreas Wöß, Christian Wirth, Daniele Bonetta, Chris Seaton, Christian Humer, Hanspeter Mössenböck: An Object Storage Model for the Truffle Language Implementation Framework.
    In Proceedings of Intl. Conf. on Principles and Practice of Programming in Java (PPPJ'14), 2014

    Download paper
  • Matthias Grimmer, Thomas Würthinger, Andreas Wöß, Hanspeter Mössenböck: An Efficient Approach to Access Native Binary Data from JavaScript
    In Proceedings of the 9th Workshop on Implementation, Compilation, Optimization of Object-Oriented Languages, Programs and Systems (ICOOOLPS'2014), 2014

    Download paper

  • Thomas Würthinger, Christian Wimmer, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Christian Humer, Gregor Richards, Doug Simon, Mario Wolczko: One VM to Rule Them All. In Proceedings of Onward!, ACM Press, 2013.

    Download paper
    Describes the vision of the Truffle approach, and the full system stack including the interpreter and dynamic compiler.

  • Chris Seaton, Michael Van De Vanter, and Michael Haupt: Debugging at full speed. In Proceedings of the 8th Workshop on Dynamic Languages and Applications (DYLA), 2014.

    Download paper
  • Matthias Grimmer, Manuel Rigger, Lukas Stadler, Roland Schatz, Hanspeter Mössenböck: An efficient native function interface for Java
    In Proceedings of the International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools. (PPPJ'13), 2013

    Download paper 
  • Matthias Grimmer: Runtime Environment for the Truffle/C VM
    Master's thesis, Johannes Kepler University Linz, November 2013

  • Thomas Würthinger, Andreas Wöß, Lukas Stadler, Gilles Duboscq, Doug Simon, Christian Wimmer: Self-Optimizing AST Interpreters. In Proceedings of the Dynamic Languages Symposium, pages 73–82. ACM Press, 2012. doi:10.1145/2384577.2384587

    Download paper
    Describes the design of self-optimizing and self-specializing interpreter, and the application to JavaScript.