SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
Graal and Truffle:
Modularity and Separation of Concerns
as Cornerstones for Building a
Multipurpose Runtime
Thomas Wuerthinger
Oracle Labs
@thomaswue
24-April-2014,
Keynote at MODULARITY in Lugano
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.2
Disclaimer
The following is intended to provide some insight into a line of
research in Oracle Labs. It is intended for information purposes
only, and may not be incorporated into any contract. It is not a
commitment to deliver any material, code, or functionality, and
should not be relied upon in making purchasing decisions. The
development, release, and timing of any features or
functionality described in connection with any Oracle product or
service remains at the sole discretion of Oracle. Any views
expressed in this presentation are my own and do not
necessarily reflect the views of Oracle.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.3
Agenda
§  Graal
§  Truffle
§  Community
§  Q&A
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.4
Dimensions of Extensibility
Architectures Host Runtimes
Compilation Policy Programming Languages
Graal
X86, SPARC, HSAIL, PTX, ... HotSpotVM, SubstrateVM, ...
Java, JavaScript, Python, R,
Ruby, C, Smalltalk, ...
Baseline, Mid-tier, Optimizing,
Vectorizing, ...
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.5
Modularity
Graal
Truffle
runtime-specificisa-specific
Graal extension
Graal/Truffle bridge
Truffle language
Fine-grained modular structure with Rich Client
Platforms like Eclipse or NetBeans as role models.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.6
Specific to Host Runtime
§ Field/Array Access
–  object/array layout, read/write barriers, …
§ Allocation
–  garbage collector, thread-local buffer, …
§ Type Checks
–  class hierarchy organization, …
§ Locking
–  monitor system, monitor enter/exit, …
§ JDK intrinsifications
–  hashCode, clone, reflection, …
§ Invocations
§ Safepoints
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.7
Levels of Lowering
Java
Lowered
Runtime-Specific
ISA-Specific
JavaArrayStore
NullCheck Length BoundsCheck TypeCheck Store
Read WriteBarrierCmpUCmpNullCheck
Read&Check WriteShiftRead&CmpUCmp
Read
Write
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.8
Snippets for Graph Construction
int max(int a, int b) {	
if (a > b) return a;	
else return b;	
}
Node max(ValueNode a, ValueNode b) {	
IfNode ifNode = new IfNode(new IntegerLessThanNode(a, b));	
ifNode.trueSuccessor().setNext(new ReturnNode(a));	
ifNode.falseSuccessor().setNext(new ReturnNode(b));	
return ifNode;	
}
Manual construction:
Expression as snippet:
Data Code
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.9
Simple API
API ProviderAPI User
request
data
ü  Can capture statically x  Limited flexibility
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.10
Callback API
API ProviderAPI User
request including callback
callback with data
callback with data
callback with data
request returns
ü  High flexibility x  Cannot capture statically
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.11
Snippet API
API ProviderAPI User
request
code as data
ü  High flexibility ü  Can capture statically
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.12
Snippet Lifecycle
Bytecodes Prepared
IR Graph Specialized
IR Graphs
Preparation Specialization Instantiation
Once Few Times Many Times
...
aload_0
getfield
ifne 10
aload_1
arraylength
...
Frequency:
Java Bytecode Parsing
Node Intrinsification
Exhaustive Method Inlining
Constant Folding, Canonicalization
Graph Duplication
Node Intrinsification
Constant Folding, Canonicalization
Constant Parameter Replacement
Graph Duplication
Graph Inlining in Targe
Constant Folding, Cano
Steps:
Targ
with
...
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.13
Snippet Example: Convert
@Snippet
static int f2i(float input, int result) {
if (probability(SLOW_PATH,
result == Integer.MIN_VALUE)) {
if (Float.isNaN(input)) {
return 0;
} else if (input > 0.0f) {
return Integer.MAX_VALUE;
}
}
return result;
}
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.14
Agenda
§  Graal
§  Truffle
§  Community
§  Q&A
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.15
Technical Approach
Speculate and Optimize…
U
U U
U
U I
I I
G
G I
I I
G
G
Node Rewriting
for Profiling Feedback
AST Interpreter
Rewritten Nodes
AST Interpreter
Uninitialized Nodes
Compilation using
Partial Evaluation
Compiled Code
Node Transitions
S
U
I
D
G
Uninitialized Integer
Generic
DoubleString
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.16
Technical Approach
… and Deoptimize and Reoptimize!
I
I I
G
G I
I I
G
G
Deoptimization
to AST Interpreter
D
I D
G
G D
I D
G
G
Node Rewriting to Update
Profiling Feedback
Recompilation using
Partial Evaluation
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.17
Technical Approach
Three main parts for driving partial evaluation
§ Limit partial evaluation expansion
–  Annotation @SlowPath on a method stops the inclusion of a method
in the expansion.
§ Dynamic speculation
–  Call to CompilerDirectives.transferToInterpreter()
advises the partial evaluator to stop and place a deoptimization exit.
§ Global speculation
–  Assumption objects can be used for global speculations about the
system state. Checking the assumption in compiled code poses no
runtime overhead.
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.18
Peak Performance: JavaScript
Speedup relative to V8
1.0
1.5
0.6
0.7
0.9
2.6
0.5
1.4
0.8
1.0
0.7
0.8
1.0
0.7
1.1
1.6
0.6
1.1
1.2
0.9
0.0
0.5
1.0
1.5
2.0
2.5
3.0
richards
deltablue
crypto
raytrace
navier-stokes
splay
earley-boyer
box2d
gbem
u
C
om
posite
Truffle
SpiderMonkey
Selection of benchmarks from Google‘s Octane benchmark suite v1.0
latest versions of V8, Truffle, and SpiderMonkey as of December 2013
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.19
Peak Performance: C
Speedup relative to GCC O0
1
1
1
1
1
1
2.7
2.0
2.0
1.9
2.6
3.2
2.5
1.7
2.0
1.9
2.7
3.4
2.1
1.8
1.9
1.0
2.8
3.4
0
0.5
1
1.5
2
2.5
3
3.5
4
fannkuch-redux fasta mandelbrot meteor-contest nbody spectralnorm
GCC O0
GCC Best
Clang Best
TruffleC
Grimmer, Rigger, Schatz, Stadler, Mössenböck:
TruffleC: Dynamic Execution of C on the Java
Virtual Machine; to be submitted	
  
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.20
Agenda
§  Graal
§  Truffle
§  Community
§  Q&A
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.21
Graal OpenJDK Project
Graal
Truffle
JavaScript
HotSpotVM
RRuby
Java Scala
Python Smalltalk C J
http://openjdk.java.net/projects/graal/
§ Development of Graal/Truffle core artifacts and APIs
§ Highly active: 30+ contributors over last 12 months
§ Highly modular: 80+ individual modules
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.22
Research Areas
Language
Implementation
General Language
Research
Compiler
Construction
Experimentation with new language
features, new languages, new
execution models
Language-independent instrumentation,
cross-language research, automatic partial
evaluation experiments
Core compiler construction research,
heterogenuous computing, advanced
architectures and backends
Truffle
Interpreters
Truffle
Graal
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.23
Graal/Truffle Related Research Projects (1)
§ TruffleRuby
–  Development in the JRuby repository (lead Chris Seaton).
–  https://github.com/jruby/jruby
–  http://blog.jruby.org/2014/01/truffle_graal_high_performance_backend/
§ FastR
–  Joint effort of a group from Purdue University (Prof. Jan Vitek) and a
team at Oracle Labs (lead Michael Haupt).
–  https://bitbucket.org/allr/fastr
§ ZipPy
–  Development by a group from University of California, Irvine (Prof.
Michael Franz).
–  https://bitbucket.org/ssllab/zippy
§ TruffleSOM
–  Development by Stefan Marr at: https://github.com/smarr/
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.24
Graal/Truffle Related Research Projects (2)
§ C and Language Interoperability
–  Experiment by students at JKU Linz (Matthias Grimmer and Manuel Rigger).
§ JavaScript
–  Effort done by the core Graal/Truffle team.
§ Debugging
–  Effort by Micheal van de Vanter from Oracle Labs.
§ SubstrateVM
–  Team at Oracle Labs led by Christian Wimmer is developing an alternative
host runtime.
§ Graal IR Instrumentation
–  Research by Yudi Zheng (USI Lugano) on instrumenting Graal IR.
§ GPU Offload
–  Research by Christopher Dubach et al. from the University of Edinburgh.
–  Graal is the compiler of choice for Project Sumatra (HSAIL/PTX offload).
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.25
Your Language or Compiler Extension?
http://openjdk.java.net/projects/graal/
graal-dev@openjdk.java.net
$ hg clone http://hg.openjdk.java.net/graal/graal
$ cd graal
$ ./mx --vm server build
$ ./mx ideinit
$ ./mx --vm server unittest SumTest
§  Truffle API License: GPLv2 with Classpath Exception
§  Graal License: GPLv2
https://wiki.openjdk.java.net/display/Graal/Main
§  Graal Resources
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.26
Acknowledgements
Oracle Labs
Danilo Ansaloni
Daniele Bonetta
Laurent Daynès
Erik Eckstein
Michael Haupt
Peter Kessler
David Leibs
Mick Jordan
Tom Rodriguez
Roland Schatz
Chris Seaton
Doug Simon
Lukas Stadler
Michael Van De Vanter
Adam Welc
Christian Wimmer
Christian Wirth
Mario Wolczko
Thomas Würthinger
Laura Hill
Interns
Miguel Garcia Gutierrez
Shams Imam
Stephen Kell
Gregor Richards
Rifat Shariyar
JKU Linz
Prof. Hanspeter Mössenböck
Stefan Anzinger
Gilles Duboscq
Josef Eisl
Matthias Grimmer
Christian Häubl
Josef Haider
Christian Humer
Christian Huber
David Leopoldseder
Manuel Rigger
Georg Schmid
Bernhard Urban
Andreas Wöß
University of Edinburgh
Christophe Dubach
Juan José Fumero Alfonso
Ranjeet Singh
Toomas Remmelg
LaBRI
Floréal Morandat
University of California, Irvine
Prof. Michael Franz
Codrut Stancu
Gulfem Savrun Yeniceri
Wei Zhang
Purdue University
Prof. Jan Vitek
Tomas Kalibera
Petr Maj

Lei Zhao
T. U. Dortmund
Prof. Peter Marwedel
Helena Kotthaus
Ingo Korb
University of California, Davis
Prof. Duncan Temple Lang
Nicholas Ulle
And many more…
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.27
Q/A
http://openjdk.java.net/projects/graal/
graal-dev@openjdk.java.net
@thomaswue
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.28
Copyright © 2014, Oracle and/or its affiliates. All rights reserved.29

Contenu connexe

Tendances

GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18Jorge Hidalgo
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainAttila Szegedi
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
TensorFlow meetup: Keras - Pytorch - TensorFlow.js
TensorFlow meetup: Keras - Pytorch - TensorFlow.jsTensorFlow meetup: Keras - Pytorch - TensorFlow.js
TensorFlow meetup: Keras - Pytorch - TensorFlow.jsStijn Decubber
 
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Chris Fregly
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016Tim Ellison
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovZeroTurnaround
 
Python Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on FlinkPython Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on FlinkAljoscha Krettek
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013Vladimir Ivanov
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)Logico
 
Apache Harmony: An Open Innovation
Apache Harmony: An Open InnovationApache Harmony: An Open Innovation
Apache Harmony: An Open InnovationTim Ellison
 
DAWN and Scientific Workflows
DAWN and Scientific WorkflowsDAWN and Scientific Workflows
DAWN and Scientific WorkflowsMatthew Gerring
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance TuningMinh Hoang
 
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...scalaconfjp
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, UkraineVladimir Ivanov
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesMark Stoodley
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylightGunjan Patel
 

Tendances (20)

GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18GraalVM - OpenSlava 2019-10-18
GraalVM - OpenSlava 2019-10-18
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
TensorFlow meetup: Keras - Pytorch - TensorFlow.js
TensorFlow meetup: Keras - Pytorch - TensorFlow.jsTensorFlow meetup: Keras - Pytorch - TensorFlow.js
TensorFlow meetup: Keras - Pytorch - TensorFlow.js
 
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
Hands-on Learning with KubeFlow + Keras/TensorFlow 2.0 + TF Extended (TFX) + ...
 
Apache Big Data Europe 2016
Apache Big Data Europe 2016Apache Big Data Europe 2016
Apache Big Data Europe 2016
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
 
R ext world/ useR! Kiev
R ext world/ useR!  KievR ext world/ useR!  Kiev
R ext world/ useR! Kiev
 
Python Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on FlinkPython Streaming Pipelines with Beam on Flink
Python Streaming Pipelines with Beam on Flink
 
JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013JVM JIT-compiler overview @ JavaOne Moscow 2013
JVM JIT-compiler overview @ JavaOne Moscow 2013
 
Nashorn in the future (English)
Nashorn in the future (English)Nashorn in the future (English)
Nashorn in the future (English)
 
Apache Harmony: An Open Innovation
Apache Harmony: An Open InnovationApache Harmony: An Open Innovation
Apache Harmony: An Open Innovation
 
DAWN and Scientific Workflows
DAWN and Scientific WorkflowsDAWN and Scientific Workflows
DAWN and Scientific Workflows
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance Tuning
 
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
Scarab: SAT-based Constraint Programming System in Scala / Scala上で実現された制約プログラ...
 
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
"JIT compiler overview" @ JEEConf 2013, Kiev, Ukraine
 
KFServing and Feast
KFServing and FeastKFServing and Feast
KFServing and Feast
 
The Java Carputer
The Java CarputerThe Java Carputer
The Java Carputer
 
Eclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimesEclipse OMR: a modern toolkit for building language runtimes
Eclipse OMR: a modern toolkit for building language runtimes
 
Yang in OpenDaylight
Yang in OpenDaylightYang in OpenDaylight
Yang in OpenDaylight
 

Similaire à Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for Building a Multipurpose Runtime

Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)jeckels
 
Apache Storm and Oracle Event Processing for Real-time Analytics
Apache Storm and Oracle Event Processing for Real-time AnalyticsApache Storm and Oracle Event Processing for Real-time Analytics
Apache Storm and Oracle Event Processing for Real-time AnalyticsPrabhu Thukkaram
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the CoreC4Media
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your MicroservicesMarcus Hirt
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18Xiaoli Liang
 
Replicate data between environments
Replicate data between environmentsReplicate data between environments
Replicate data between environmentsDLT Solutions
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8jclingan
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScriptGeertjan Wielenga
 
XSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata TutorialXSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata Tutorialmarpierc
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevillaTrisha Gee
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouDavid Delabassee
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureJavaDayUA
 
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20Phil Wilkins
 
Deep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedDeep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedSuyash Joshi
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachPROIDEA
 
"Quantum" Performance Effects
"Quantum" Performance Effects"Quantum" Performance Effects
"Quantum" Performance EffectsSergey Kuksenko
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowKaxil Naik
 

Similaire à Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for Building a Multipurpose Runtime (20)

Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
Oracle Coherence Strategy and Roadmap (OpenWorld, September 2014)
 
Apache Storm and Oracle Event Processing for Real-time Analytics
Apache Storm and Oracle Event Processing for Real-time AnalyticsApache Storm and Oracle Event Processing for Real-time Analytics
Apache Storm and Oracle Event Processing for Real-time Analytics
 
“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core“Quantum” Performance Effects: beyond the Core
“Quantum” Performance Effects: beyond the Core
 
Diagnose Your Microservices
Diagnose Your MicroservicesDiagnose Your Microservices
Diagnose Your Microservices
 
EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18EclipseOMRBuildingBlocks4Polyglot_TURBO18
EclipseOMRBuildingBlocks4Polyglot_TURBO18
 
Replicate data between environments
Replicate data between environmentsReplicate data between environments
Replicate data between environments
 
Java 8
Java 8Java 8
Java 8
 
What's new in Java 8
What's new in Java 8What's new in Java 8
What's new in Java 8
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript
 
XSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata TutorialXSEDE14 SciGaP-Apache Airavata Tutorial
XSEDE14 SciGaP-Apache Airavata Tutorial
 
2015 Java update and roadmap, JUG sevilla
2015  Java update and roadmap, JUG sevilla2015  Java update and roadmap, JUG sevilla
2015 Java update and roadmap, JUG sevilla
 
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to YouHTTP/2 Comes to Java - What Servlet 4.0 Means to You
HTTP/2 Comes to Java - What Servlet 4.0 Means to You
 
Interactive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and ArchitectureInteractive Java Support to your tool -- The JShell API and Architecture
Interactive Java Support to your tool -- The JShell API and Architecture
 
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
gRPC, GraphQL, REST - Which API Tech to use - API Conference Berlin oct 20
 
Deep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting StartedDeep Learning for Java Developer - Getting Started
Deep Learning for Java Developer - Getting Started
 
Oracle Ravello
Oracle Ravello Oracle Ravello
Oracle Ravello
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
 
"Quantum" Performance Effects
"Quantum" Performance Effects"Quantum" Performance Effects
"Quantum" Performance Effects
 
Building and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache AirflowBuilding and deploying LLM applications with Apache Airflow
Building and deploying LLM applications with Apache Airflow
 
JDK 10 Java Module System
JDK 10 Java Module SystemJDK 10 Java Module System
JDK 10 Java Module System
 

Dernier

Abnormal LFTs rate of deco and NAFLD.pptx
Abnormal LFTs rate of deco and NAFLD.pptxAbnormal LFTs rate of deco and NAFLD.pptx
Abnormal LFTs rate of deco and NAFLD.pptxzeus70441
 
Introduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptxIntroduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptxMedical College
 
Gas-ExchangeS-in-Plants-and-Animals.pptx
Gas-ExchangeS-in-Plants-and-Animals.pptxGas-ExchangeS-in-Plants-and-Animals.pptx
Gas-ExchangeS-in-Plants-and-Animals.pptxGiovaniTrinidad
 
Oxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptxOxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptxfarhanvvdk
 
Q4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptxQ4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptxtuking87
 
ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...
ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...
ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...Chayanika Das
 
DETECTION OF MUTATION BY CLB METHOD.pptx
DETECTION OF MUTATION BY CLB METHOD.pptxDETECTION OF MUTATION BY CLB METHOD.pptx
DETECTION OF MUTATION BY CLB METHOD.pptx201bo007
 
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPRPirithiRaju
 
GenAI talk for Young at Wageningen University & Research (WUR) March 2024
GenAI talk for Young at Wageningen University & Research (WUR) March 2024GenAI talk for Young at Wageningen University & Research (WUR) March 2024
GenAI talk for Young at Wageningen University & Research (WUR) March 2024Jene van der Heide
 
BACTERIAL SECRETION SYSTEM by Dr. Chayanika Das
BACTERIAL SECRETION SYSTEM by Dr. Chayanika DasBACTERIAL SECRETION SYSTEM by Dr. Chayanika Das
BACTERIAL SECRETION SYSTEM by Dr. Chayanika DasChayanika Das
 
FBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptxFBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptxPayal Shrivastava
 
Immunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.pptImmunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.pptAmirRaziq1
 
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep LearningCombining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learningvschiavoni
 
Harry Coumnas Thinks That Human Teleportation May Ensure Humanity's Survival
Harry Coumnas Thinks That Human Teleportation May Ensure Humanity's SurvivalHarry Coumnas Thinks That Human Teleportation May Ensure Humanity's Survival
Harry Coumnas Thinks That Human Teleportation May Ensure Humanity's Survivalkevin8smith
 
Science (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsScience (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsDobusch Leonhard
 
Timeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological CorrelationsTimeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological CorrelationsDanielBaumann11
 
Interpreting SDSS extragalactic data in the era of JWST
Interpreting SDSS extragalactic data in the era of JWSTInterpreting SDSS extragalactic data in the era of JWST
Interpreting SDSS extragalactic data in the era of JWSTAlexander F. Mayer
 

Dernier (20)

Abnormal LFTs rate of deco and NAFLD.pptx
Abnormal LFTs rate of deco and NAFLD.pptxAbnormal LFTs rate of deco and NAFLD.pptx
Abnormal LFTs rate of deco and NAFLD.pptx
 
Introduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptxIntroduction of Human Body & Structure of cell.pptx
Introduction of Human Body & Structure of cell.pptx
 
Gas-ExchangeS-in-Plants-and-Animals.pptx
Gas-ExchangeS-in-Plants-and-Animals.pptxGas-ExchangeS-in-Plants-and-Animals.pptx
Gas-ExchangeS-in-Plants-and-Animals.pptx
 
Introduction Classification Of Alkaloids
Introduction Classification Of AlkaloidsIntroduction Classification Of Alkaloids
Introduction Classification Of Alkaloids
 
Oxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptxOxo-Acids of Halogens and their Salts.pptx
Oxo-Acids of Halogens and their Salts.pptx
 
Q4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptxQ4-Mod-1c-Quiz-Projectile-333344444.pptx
Q4-Mod-1c-Quiz-Projectile-333344444.pptx
 
ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...
ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...
ESSENTIAL FEATURES REQUIRED FOR ESTABLISHING FOUR TYPES OF BIOSAFETY LABORATO...
 
DETECTION OF MUTATION BY CLB METHOD.pptx
DETECTION OF MUTATION BY CLB METHOD.pptxDETECTION OF MUTATION BY CLB METHOD.pptx
DETECTION OF MUTATION BY CLB METHOD.pptx
 
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
6.2 Pests of Sesame_Identification_Binomics_Dr.UPR
 
GenAI talk for Young at Wageningen University & Research (WUR) March 2024
GenAI talk for Young at Wageningen University & Research (WUR) March 2024GenAI talk for Young at Wageningen University & Research (WUR) March 2024
GenAI talk for Young at Wageningen University & Research (WUR) March 2024
 
BACTERIAL SECRETION SYSTEM by Dr. Chayanika Das
BACTERIAL SECRETION SYSTEM by Dr. Chayanika DasBACTERIAL SECRETION SYSTEM by Dr. Chayanika Das
BACTERIAL SECRETION SYSTEM by Dr. Chayanika Das
 
Let’s Say Someone Did Drop the Bomb. Then What?
Let’s Say Someone Did Drop the Bomb. Then What?Let’s Say Someone Did Drop the Bomb. Then What?
Let’s Say Someone Did Drop the Bomb. Then What?
 
Ultrastructure and functions of Chloroplast.pptx
Ultrastructure and functions of Chloroplast.pptxUltrastructure and functions of Chloroplast.pptx
Ultrastructure and functions of Chloroplast.pptx
 
FBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptxFBI Profiling - Forensic Psychology.pptx
FBI Profiling - Forensic Psychology.pptx
 
Immunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.pptImmunoblott technique for protein detection.ppt
Immunoblott technique for protein detection.ppt
 
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep LearningCombining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
Combining Asynchronous Task Parallelism and Intel SGX for Secure Deep Learning
 
Harry Coumnas Thinks That Human Teleportation May Ensure Humanity's Survival
Harry Coumnas Thinks That Human Teleportation May Ensure Humanity's SurvivalHarry Coumnas Thinks That Human Teleportation May Ensure Humanity's Survival
Harry Coumnas Thinks That Human Teleportation May Ensure Humanity's Survival
 
Science (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and PitfallsScience (Communication) and Wikipedia - Potentials and Pitfalls
Science (Communication) and Wikipedia - Potentials and Pitfalls
 
Timeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological CorrelationsTimeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
Timeless Cosmology: Towards a Geometric Origin of Cosmological Correlations
 
Interpreting SDSS extragalactic data in the era of JWST
Interpreting SDSS extragalactic data in the era of JWSTInterpreting SDSS extragalactic data in the era of JWST
Interpreting SDSS extragalactic data in the era of JWST
 

Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for Building a Multipurpose Runtime

  • 1. Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for Building a Multipurpose Runtime Thomas Wuerthinger Oracle Labs @thomaswue 24-April-2014, Keynote at MODULARITY in Lugano
  • 2. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.2 Disclaimer The following is intended to provide some insight into a line of research in Oracle Labs. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described in connection with any Oracle product or service remains at the sole discretion of Oracle. Any views expressed in this presentation are my own and do not necessarily reflect the views of Oracle.
  • 3. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.3 Agenda §  Graal §  Truffle §  Community §  Q&A
  • 4. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.4 Dimensions of Extensibility Architectures Host Runtimes Compilation Policy Programming Languages Graal X86, SPARC, HSAIL, PTX, ... HotSpotVM, SubstrateVM, ... Java, JavaScript, Python, R, Ruby, C, Smalltalk, ... Baseline, Mid-tier, Optimizing, Vectorizing, ...
  • 5. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.5 Modularity Graal Truffle runtime-specificisa-specific Graal extension Graal/Truffle bridge Truffle language Fine-grained modular structure with Rich Client Platforms like Eclipse or NetBeans as role models.
  • 6. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.6 Specific to Host Runtime § Field/Array Access –  object/array layout, read/write barriers, … § Allocation –  garbage collector, thread-local buffer, … § Type Checks –  class hierarchy organization, … § Locking –  monitor system, monitor enter/exit, … § JDK intrinsifications –  hashCode, clone, reflection, … § Invocations § Safepoints
  • 7. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.7 Levels of Lowering Java Lowered Runtime-Specific ISA-Specific JavaArrayStore NullCheck Length BoundsCheck TypeCheck Store Read WriteBarrierCmpUCmpNullCheck Read&Check WriteShiftRead&CmpUCmp Read Write
  • 8. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.8 Snippets for Graph Construction int max(int a, int b) { if (a > b) return a; else return b; } Node max(ValueNode a, ValueNode b) { IfNode ifNode = new IfNode(new IntegerLessThanNode(a, b)); ifNode.trueSuccessor().setNext(new ReturnNode(a)); ifNode.falseSuccessor().setNext(new ReturnNode(b)); return ifNode; } Manual construction: Expression as snippet: Data Code
  • 9. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.9 Simple API API ProviderAPI User request data ü  Can capture statically x  Limited flexibility
  • 10. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.10 Callback API API ProviderAPI User request including callback callback with data callback with data callback with data request returns ü  High flexibility x  Cannot capture statically
  • 11. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.11 Snippet API API ProviderAPI User request code as data ü  High flexibility ü  Can capture statically
  • 12. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.12 Snippet Lifecycle Bytecodes Prepared IR Graph Specialized IR Graphs Preparation Specialization Instantiation Once Few Times Many Times ... aload_0 getfield ifne 10 aload_1 arraylength ... Frequency: Java Bytecode Parsing Node Intrinsification Exhaustive Method Inlining Constant Folding, Canonicalization Graph Duplication Node Intrinsification Constant Folding, Canonicalization Constant Parameter Replacement Graph Duplication Graph Inlining in Targe Constant Folding, Cano Steps: Targ with ...
  • 13. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.13 Snippet Example: Convert @Snippet static int f2i(float input, int result) { if (probability(SLOW_PATH, result == Integer.MIN_VALUE)) { if (Float.isNaN(input)) { return 0; } else if (input > 0.0f) { return Integer.MAX_VALUE; } } return result; }
  • 14. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.14 Agenda §  Graal §  Truffle §  Community §  Q&A
  • 15. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.15 Technical Approach Speculate and Optimize… U U U U U I I I G G I I I G G Node Rewriting for Profiling Feedback AST Interpreter Rewritten Nodes AST Interpreter Uninitialized Nodes Compilation using Partial Evaluation Compiled Code Node Transitions S U I D G Uninitialized Integer Generic DoubleString
  • 16. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.16 Technical Approach … and Deoptimize and Reoptimize! I I I G G I I I G G Deoptimization to AST Interpreter D I D G G D I D G G Node Rewriting to Update Profiling Feedback Recompilation using Partial Evaluation
  • 17. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.17 Technical Approach Three main parts for driving partial evaluation § Limit partial evaluation expansion –  Annotation @SlowPath on a method stops the inclusion of a method in the expansion. § Dynamic speculation –  Call to CompilerDirectives.transferToInterpreter() advises the partial evaluator to stop and place a deoptimization exit. § Global speculation –  Assumption objects can be used for global speculations about the system state. Checking the assumption in compiled code poses no runtime overhead.
  • 18. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.18 Peak Performance: JavaScript Speedup relative to V8 1.0 1.5 0.6 0.7 0.9 2.6 0.5 1.4 0.8 1.0 0.7 0.8 1.0 0.7 1.1 1.6 0.6 1.1 1.2 0.9 0.0 0.5 1.0 1.5 2.0 2.5 3.0 richards deltablue crypto raytrace navier-stokes splay earley-boyer box2d gbem u C om posite Truffle SpiderMonkey Selection of benchmarks from Google‘s Octane benchmark suite v1.0 latest versions of V8, Truffle, and SpiderMonkey as of December 2013
  • 19. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.19 Peak Performance: C Speedup relative to GCC O0 1 1 1 1 1 1 2.7 2.0 2.0 1.9 2.6 3.2 2.5 1.7 2.0 1.9 2.7 3.4 2.1 1.8 1.9 1.0 2.8 3.4 0 0.5 1 1.5 2 2.5 3 3.5 4 fannkuch-redux fasta mandelbrot meteor-contest nbody spectralnorm GCC O0 GCC Best Clang Best TruffleC Grimmer, Rigger, Schatz, Stadler, Mössenböck: TruffleC: Dynamic Execution of C on the Java Virtual Machine; to be submitted  
  • 20. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.20 Agenda §  Graal §  Truffle §  Community §  Q&A
  • 21. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.21 Graal OpenJDK Project Graal Truffle JavaScript HotSpotVM RRuby Java Scala Python Smalltalk C J http://openjdk.java.net/projects/graal/ § Development of Graal/Truffle core artifacts and APIs § Highly active: 30+ contributors over last 12 months § Highly modular: 80+ individual modules
  • 22. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.22 Research Areas Language Implementation General Language Research Compiler Construction Experimentation with new language features, new languages, new execution models Language-independent instrumentation, cross-language research, automatic partial evaluation experiments Core compiler construction research, heterogenuous computing, advanced architectures and backends Truffle Interpreters Truffle Graal
  • 23. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.23 Graal/Truffle Related Research Projects (1) § TruffleRuby –  Development in the JRuby repository (lead Chris Seaton). –  https://github.com/jruby/jruby –  http://blog.jruby.org/2014/01/truffle_graal_high_performance_backend/ § FastR –  Joint effort of a group from Purdue University (Prof. Jan Vitek) and a team at Oracle Labs (lead Michael Haupt). –  https://bitbucket.org/allr/fastr § ZipPy –  Development by a group from University of California, Irvine (Prof. Michael Franz). –  https://bitbucket.org/ssllab/zippy § TruffleSOM –  Development by Stefan Marr at: https://github.com/smarr/
  • 24. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.24 Graal/Truffle Related Research Projects (2) § C and Language Interoperability –  Experiment by students at JKU Linz (Matthias Grimmer and Manuel Rigger). § JavaScript –  Effort done by the core Graal/Truffle team. § Debugging –  Effort by Micheal van de Vanter from Oracle Labs. § SubstrateVM –  Team at Oracle Labs led by Christian Wimmer is developing an alternative host runtime. § Graal IR Instrumentation –  Research by Yudi Zheng (USI Lugano) on instrumenting Graal IR. § GPU Offload –  Research by Christopher Dubach et al. from the University of Edinburgh. –  Graal is the compiler of choice for Project Sumatra (HSAIL/PTX offload).
  • 25. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.25 Your Language or Compiler Extension? http://openjdk.java.net/projects/graal/ graal-dev@openjdk.java.net $ hg clone http://hg.openjdk.java.net/graal/graal $ cd graal $ ./mx --vm server build $ ./mx ideinit $ ./mx --vm server unittest SumTest §  Truffle API License: GPLv2 with Classpath Exception §  Graal License: GPLv2 https://wiki.openjdk.java.net/display/Graal/Main §  Graal Resources
  • 26. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.26 Acknowledgements Oracle Labs Danilo Ansaloni Daniele Bonetta Laurent Daynès Erik Eckstein Michael Haupt Peter Kessler David Leibs Mick Jordan Tom Rodriguez Roland Schatz Chris Seaton Doug Simon Lukas Stadler Michael Van De Vanter Adam Welc Christian Wimmer Christian Wirth Mario Wolczko Thomas Würthinger Laura Hill Interns Miguel Garcia Gutierrez Shams Imam Stephen Kell Gregor Richards Rifat Shariyar JKU Linz Prof. Hanspeter Mössenböck Stefan Anzinger Gilles Duboscq Josef Eisl Matthias Grimmer Christian Häubl Josef Haider Christian Humer Christian Huber David Leopoldseder Manuel Rigger Georg Schmid Bernhard Urban Andreas Wöß University of Edinburgh Christophe Dubach Juan José Fumero Alfonso Ranjeet Singh Toomas Remmelg LaBRI Floréal Morandat University of California, Irvine Prof. Michael Franz Codrut Stancu Gulfem Savrun Yeniceri Wei Zhang Purdue University Prof. Jan Vitek Tomas Kalibera Petr Maj
 Lei Zhao T. U. Dortmund Prof. Peter Marwedel Helena Kotthaus Ingo Korb University of California, Davis Prof. Duncan Temple Lang Nicholas Ulle And many more…
  • 27. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.27 Q/A http://openjdk.java.net/projects/graal/ graal-dev@openjdk.java.net @thomaswue
  • 28. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.28
  • 29. Copyright © 2014, Oracle and/or its affiliates. All rights reserved.29