/*
* Copyright (c) 2017, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* The Universal Permissive License (UPL), Version 1.0
*
* Subject to the condition set forth below, permission is hereby granted to any
* person obtaining a copy of this software, associated documentation and/or
* data (collectively the "Software"), free of charge and under any and all
* copyright rights in the Software, and any and all patent rights owned or
* freely licensable by each licensor hereunder covering either (i) the
* unmodified Software as contributed to or provided by such licensor, or (ii)
* the Larger Works (as defined below), to deal in both
*
* (a) the Software, and
*
* (b) any piece of software and/or hardware listed in the lrgrwrks.txt file if
* one is included with the Software each a "Larger Work" to which the Software
* is contributed by such licensors),
*
* without restriction, including without limitation the rights to copy, create
* derivative works of, display, perform, and distribute the Software and make,
* use, sell, offer for sale, import, export, have made, and have sold the
* Software and the Larger Work(s), and to sublicense the foregoing rights on
* either these or other terms.
*
* This license is subject to the following condition:
*
* The above copyright notice and either this complete permission notice or at a
* minimum a reference to the UPL must be included in all copies or substantial
* portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
// @formatter:off
/*
@ApiInfo(
group="Tutorial"
)
*/
/**
* <h1>Truffle Tutorial: The Graal Compiler</h1>
* <div id="contents">
*
* This 3-hour tutorial presents Graal, the high-performance dynamic compiler for Java written in Java
* that enables very high performance for Truffle-implemented languages.
* The tutorial was presented February 8, 2015 at the International Symposium on Code Generation and Optimization
* (<a href="http://cgo.org/cgo2015/">CGO 2015</a>) and covers the following topics:
* <ul>
* <li>Key distinguishing features of Graal</li>
* <li>Introduction to the Graal IR: basic properties, instructions, and optimization phases</li>
* <li>Speculative optimizations: first-class support for optimistic optimizations and deoptimization</li>
* <li>Graal API: separation of the compiler from the VM</li>
* <li>Snippets: expressing high-level semantics in low-level Java code</li>
* <li>Compiler intrinsics: use all your hardware instructions with Graal</li>
* <li>Using Graal for static analysis</li>
* <li>Custom compilations with Graal: integration of the compiler with an application or library</li>
* <li>Graal as a compiler for dynamic programming languages in the Truffle framework</li>
* </ul>
* <p>
* Video recording: <a href="https://youtu.be/Af9T9kFk1lM">Part 1</a>:<br>
*
* <iframe width="854" height="480" src="https://www.youtube.com/embed/Af9T9kFk1lM" frameborder="0" allowfullscreen></iframe>
*
* <br><a href="https://youtu.be/WyU7KctlhzE">Part 2</a>:<br>
*
* <iframe width="854" height="480" src="https://www.youtube.com/embed/WyU7KctlhzE" frameborder="0" allowfullscreen></iframe>
*
* <br>
* <a href="http://lafo.ssw.uni-linz.ac.at/papers/2015_CGO_Graal.pdf">Download Slides</a>
*
*
* <p>
* Related information:
* <ul>
* <li>The Graal project home: <a href="https://github.com/graalvm">https://github.com/graalvm</a></li>
* <li><a href="https://github.com/graalvm/graal-core/blob/master/docs/Publications.md#graal-papers">Graal Publications</a></li>
* <li>{@linkplain com.oracle.truffle.tutorial Other Truffle Tutorials}
* </ul>
*
* </div>
* <script src="../doc-files/tutorial.js"></script>
*
* @since 0.25
*/
package com.oracle.truffle.tutorial.graal;