1 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Size: px
Start display at page:

Download "1 Copyright 2012, Oracle and/or its affiliates. All rights reserved."

Transcription

1 1 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

2 Truffle: A Self-Optimizing Runtime System Thomas Wuerthinger Oracle Labs JVM Language Summit, July 31, Copyright 2012, Oracle and/or its affiliates. All rights reserved.

3 Java, Python, Ruby, JavaScript, Groovy, Clojure, Scala,... Generality + Performance function f(a, n) { var x = 0; while (n-- > 0) { x = x + a[n]; return x; L1: decl rax jz L2 movl rcx, rdx[16+4*rax] cvtsi2sd xmm1, rcx addsd xmm0, xmm1 jmp L1 L2: 3 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

4 AST Interpreter Compiled Code automatic partial evaluation 4 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

5 Object add(object a, Object b) { if(a instanceof Double && b instanceof Double) { return (double)a + (double)b; else if (a instanceof String && b instanceof String) { return (String)a + (String)b; else { return genericadd(a, b); double add(double a, double b) { return a + b; String add(string a, String b) { return a + b; Object add(object a, Object b) { return genericadd(a, b); 5 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

6 Uninitialized Specializing FSA Double String Generic 6 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

7 Inline Caching uninitialized monomorphic polymorphic megamorphic U S S G U S S U 7 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

8 8 Copyright 2012, Oracle and/or its affiliates. All rights reserved. Hot Call Site Detection

9 9 Copyright 2012, Oracle and/or its affiliates. All rights reserved. AST Level Inlining

10 function f(a, n) { var x = 0; while (n-- > 0) { x = x + a[n]; return x; JavaScript AST automatic partial evaluation Java IR 10 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

11 Object f(object[] args) { var a = args[0]; var n = args[1]; var x = 0; while (n-- > 0) { x = x + a[n]; return x; parameters 11 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

12 Object f(object[] args) { Object a = args[0]; if (!(args[1] instanceof Integer)) deoptimize; int n = (int)args[1]; double x = 0; while (n-- > 0) { x = x + a[n]; return x; type specialized local variables 12 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

13 Object f(object[] args) { Object a = args[0]; if (!(args[1] instanceof Integer)) deoptimize; int n = (int)args[1]; double x = 0; while (n-- > 0) { x = x + a[n]; return x; control structures 13 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

14 Object f(object[] args) { Object a = args[0]; if (!(args[1] instanceof Integer)) deoptimize; int n = (int)args[1]; double x = 0; while (n = safedecrement(n) > 0) { x = x + a[n]; return x; specialized operations 14 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

15 Object f(object[] args) { Object a = args[0]; if (!(args[1] instanceof Integer)) deoptimize; int n = (int)args[1]; double x = 0; while (n-- > 0) { x = x + a[n]; return x; overflow check elimination 15 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

16 Object f(object[] args) { Object a = args[0]; if (!args[1] instanceof Integer) deoptimize; int n = (int)args[1]; double x = 0; while (n-- > 0) { if (!(a instanceof IntArray)) deoptimize; IntArray intarray = (IntArray)a; int[] content = a.content; if (n < a.lower n > a.upper) deoptimize; x = x + content[n]; return x; specialized array access 16 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

17 Object f(object[] args) { Object a = args[0]; if (!args[1] instanceof Integer) deoptimize; int n = (int)args[1]; double x = 0; if (!(a instanceof IntArray)) deoptimize; IntArray intarray = (IntArray)a; while (n-- > 0) { int[] content = a.content; if (n < a.lower n > a.upper) deoptimize; x = x + content[n]; return x; loop invariant code motion 17 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

18 Object f(object[] args) { Object a = args[0]; if (!args[1] instanceof Integer) deoptimize; int n = (int)args[1]; double x = 0; if (!(a instanceof IntArray)) deoptimize; IntArray intarray = (IntArray)a; int[] content = a.content; while (n-- > 0) { if (n < a.lower n > a.upper) deoptimize; x = x + content[n]; return x; loop invariant code motion 18 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

19 Object f(object[] args) { Object a = args[0]; if (!args[1] instanceof Integer) deoptimize; int n = (int)args[1]; double x = 0; if (!(a instanceof IntArray)) deoptimize; IntArray intarray = (IntArray)a; int[] content = a.content; if (0 < a.lower n > a.upper) deoptimize; while (n-- > 0) { x = x + content[n]; return x; optimistic loop invariant code motion 19 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

20 while (n-- > 0) { x = x + content[n]; L1: decl rax jz L2 movl rcx, rdx[16+4*rax] cvtsi2sd xmm1, rcx addsd xmm0, xmm1 jmp L1 L2: Java IR Graal compiler Optimized Assembly 20 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

21 Truffle partial evaluation Graal execute install optimized code HotSpot 21 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

22 Acknowledgements Oracle Labs Michael Haupt Shams Imam (Intern) Peter Kessler Helena Kotthaus (Intern) David Leibs Doug Simon Michael Van De Vanter Christian Wimmer Mario Wolczko Thomas Wuerthinger Purdue University Floreal Morandat Jan Vitek JKU Linz Gilles Duboscq Matthias Grimmer Christian Haeubl Christian Humer Christian Huber Manuel Rigger Lukas Stadler Andreas Woess 22 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

23 Q/A Generality + Performance Java, Python, Ruby, JavaScript, Groovy, Closure, Scala,... function f(a, n) { var x = 0; while (n-- > 0) { x = x + a[n]; return x; L1: decl rax jz L2 movl rcx, rdx[16+4*rax] cvtsi2sd xmm1, rcx addsd xmm0, xmm1 jmp L1 L2: 23 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

24 24 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

25 25 Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2012, Oracle and/or its affiliates. All rights reserved. 1 Truffle: A Self-Optimizing Runtime System Christian Wimmer, Thomas Würthinger Oracle Labs Write Your Own Language Current situation How it should be Prototype a new language Parser and language work

More information

JRuby+Truffle. Why it s important to optimise the tricky parts. Chris Seaton Research Manager Oracle Labs 2 June 2016

JRuby+Truffle. Why it s important to optimise the tricky parts. Chris Seaton Research Manager Oracle Labs 2 June 2016 The Ruby Logo is Copyright (c) 2006, Yukihiro Matsumoto. It is licensed under the terms of the Creative Commons Attribution-ShareAlike 2.5 agreement. JRuby+Truffle Why it s important to optimise the tricky

More information

Faster Ruby and JS with Graal/Truffle

Faster Ruby and JS with Graal/Truffle The Ruby Logo is Copyright (c) 2006, Yukihiro Matsumoto. It is licensed under the terms of the Creative Commons Attribution-ShareAlike 2.5 agreement. Faster Ruby and JS with Graal/Truffle Chris Seaton

More information

Guilt Free Ruby on the JVM

Guilt Free Ruby on the JVM The Ruby logo is Copyright 2006, Yukihiro Matsumoto. It is licensed under the terms of the Creative Commons Attribution-ShareAlike 2.5 License agreement. Guilt Free Ruby on the JVM Forgetting Conventional

More information

Dynamic Compilation with Truffle

Dynamic Compilation with Truffle Dynamic Compilation with Truffle Thomas Wuerthinger @thomaswue Oracle Labs Christian Humer @grashalm_ Oracle Labs DSLDI Summer School 2015 Copyright 2015 Oracle and/or its affiliates. All rights reserved.

More information

R as a in a Polyglot World

R as a in a Polyglot World R as a Ci@zen in a Polyglot World The promise of the Truffle framework Lukas Stadler, VM Research Group, Oracle Labs user! 2015 2 Safe Harbor Statement The following is intended to provide some insight

More information

Using LLVM and Sulong for Language C Extensions

Using LLVM and Sulong for Language C Extensions Using LLVM and Sulong for Language C Extensions Chris Seaton Research Manager VM Research Group Oracle Labs Manuel Rigger, Matthias Grimmer JKU Linz Copyright 2016, Oracle and/or its affiliates. All rights

More information

<Insert Picture Here> Graal: A quest for the JVM to leverage its own J Doug Simon - Oracle Labs

<Insert Picture Here> Graal: A quest for the JVM to leverage its own J Doug Simon - Oracle Labs Graal: A quest for the JVM to leverage its own J Doug Simon - Oracle Labs JVM Language Summit, 30th July 2012 The following is intended to outline our general product direction. It

More information

What*Language* Would*You*Like*to*Run?*

What*Language* Would*You*Like*to*Run?* What*Language* Would*You*Like*to*Run?* Michael*Haupt* Oracle*Labs* March*2015* Safe*Harbor*Statement* The*following*is*intended*to*provide*some*insight*into*a*line*of*research*in*Oracle*Labs.*It* is*intended*for*informaoon*purposes*only,*and*may*not*be*incorporated*into*any*

More information

Truffle A language implementation framework

Truffle A language implementation framework Truffle A language implementation framework Boris Spasojević Senior Researcher VM Research Group, Oracle Labs Slides based on previous talks given by Christian Wimmer, Christian Humer and Matthias Grimmer.

More information

CURRICULUM VITAE. DI Dr. Matthias Grimmer Michael-Hainisch-Straße Linz

CURRICULUM VITAE. DI Dr. Matthias Grimmer Michael-Hainisch-Straße Linz CURRICULUM VITAE Full Name Address Date of Birth Citizenship Phone Email Website GitHub DI Dr. Michael-Hainisch-Straße 18 4040 Linz March 2, 1989 Austria (+43) 664 784 21 52 contact@matthiasgrimmer.com

More information

<Insert Picture Here> Maxine: A JVM Written in Java

<Insert Picture Here> Maxine: A JVM Written in Java Maxine: A JVM Written in Java Michael Haupt Oracle Labs Potsdam, Germany The following is intended to outline our general product direction. It is intended for information purposes

More information

JRuby+Truffle. Kevin Menard. Chris Seaton. Benoit Daloze. A tour through a new Ruby Oracle Oracle Labs

JRuby+Truffle. Kevin Menard. Chris Seaton. Benoit Daloze. A tour through a new Ruby Oracle Oracle Labs JRuby+Truffle A tour through a new Ruby implementahon Chris Seaton @ChrisGSeaton Oracle Labs Benoit Daloze @eregontp JKU Linz Kevin Menard @nirvdrum Oracle Labs Ruby logo copyright (c) 2006, Yukihiro Matsumoto,

More information

A Fast Abstract Syntax Tree Interpreter for R

A Fast Abstract Syntax Tree Interpreter for R A Fast Abstract Syntax Tree Interpreter for R Java cup Petr Maj Jan Vitek Tomas Kalibera Floréal Morandat Thesis Runtime information can be leveraged to create simple, fast, easy to maintain interpreters

More information

Debugging at Full Speed

Debugging at Full Speed Oracle Labs Document 2014-0221 Debugging at Full Speed Instrumen)ng Truffle- implemented Programs Michael L. Van De Vanter Oracle Labs, VM Research Group July 30, 2014 2014 JVM Language Summit Santa Clara,

More information

Understanding How Graal Works

Understanding How Graal Works Understanding How Graal Works a Java JIT Compiler Written in Java Chris Seaton Research Manager Oracle Labs chris.seaton@oracle.com @ChrisGSeaton Copyright 2017, Oracle and/or its affiliates. All rights

More information

Copyright 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12!

Copyright 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12! Insert Information Protection Policy Classification from Slide 12!1 VMs I Have Known and/or Loved! A subjective history Mario Wolczko Architect Virtual Machine Research Group Oracle Labs! http://labs.oracle.com

More information

Copyright 2014 Oracle and/or its affiliates. All rights reserved.

Copyright 2014 Oracle and/or its affiliates. All rights reserved. Copyright 2014 Oracle and/or its affiliates. All rights reserved. On the Quest Towards Fastest (Java) Virtual Machine on the Planet! @JaroslavTulach Oracle Labs Copyright 2015 Oracle and/or its affiliates.

More information

Self-Optimizing AST Interpreters

Self-Optimizing AST Interpreters Self-Optimizing AST Interpreters Thomas Würthinger Andreas Wöß Lukas Stadler Gilles Duboscq Doug Simon Christian Wimmer Oracle Labs Institute for System Software, Johannes Kepler University Linz, Austria

More information

Practical Partial Evaluation for High-Performance Dynamic Language Runtimes

Practical Partial Evaluation for High-Performance Dynamic Language Runtimes Practical Partial Evaluation for High-Performance Dynamic Language Runtimes Thomas Würthinger Christian Wimmer Christian Humer Andreas Wöß Lukas Stadler Chris Seaton Gilles Duboscq Doug Simon Matthias

More information

<Insert Picture Here>

<Insert Picture Here> 1 2010-0237 The Maxine Inspector: A Specialized Tool for VM Development, Santa Clara, CA Michael L. Van De Vanter Researcher, Oracle Sun Labs The Maxine Project at Oracle Sun Labs:

More information

FastR: Status and Outlook

FastR: Status and Outlook FastR: Status and Outlook Michael Haupt Tech Lead, FastR Project Virtual Machine Research Group, Oracle Labs June 2014 Copyright 2014 Oracle and/or its affiliates. All rights reserved. CMYK 0/100/100/20

More information

Modern Stored Procedures Using GraalVM

Modern Stored Procedures Using GraalVM Modern Stored Procedures Using raalvm Oracle Labs Matthias Brantner Safe Harbor Statement The following is intended to outline our general product direction. t is intended

More information

Tracing vs. Partial Evaluation

Tracing vs. Partial Evaluation Tracing vs. Partial Evaluation Comparing Meta-Compilation Approaches for Self-Optimizing nterpreters Abstract Tracing and partial evaluation have been proposed as metacompilation techniques for interpreters.

More information

Copyright 2014, Oracle and/or its affiliates. All rights reserved.

Copyright 2014, Oracle and/or its affiliates. All rights reserved. 1 One VM to Rule Them All Christian Wimmer VM Research Group, Oracle Labs The following is intended to provide some insight into a line of research in Oracle Labs. It is intended for information purposes

More information

Optimizing Communicating Event-Loop Languages with Truffle

Optimizing Communicating Event-Loop Languages with Truffle Optimizing Communicating Event-Loop Languages with Truffle [Work In Progress Paper] Stefan Marr Johannes Kepler University Linz, Austria stefan.marr@jku.at ABSTRACT Communicating Event-Loop Languages similar

More information

One VM to Rule Them All

One VM to Rule Them All One VM to Rule Them All Christian Wimmer VM Research Group, Oracle Labs Safe Harbor Statement The following is intended to provide some insight into a line of research in Oracle Labs. It is intended for

More information

Efficient Layered Method Execution in ContextAmber

Efficient Layered Method Execution in ContextAmber Efficient Layered Method Execution in ContextAmber Matthias Springer Hasso Plattner Institute University of Potsdam matthias.springer@hpi.de Jens Lincke Hasso Plattner Institute University of Potsdam jens.lincke@hpi.de

More information

A Cost Model for a Graph-Based Intermediate-Representation in a Dynamic Compiler

A Cost Model for a Graph-Based Intermediate-Representation in a Dynamic Compiler A Cost Model for a Graph-Based Intermediate-Representation in a Dynamic Compiler David Leopoldseder Johannes Kepler University Linz Austria david.leopoldseder@jku.at Lukas Stadler Oracle Labs Linz, Austria

More information

Compiler Design Spring 2018

Compiler Design Spring 2018 Compiler Design Spring 2018 Thomas R. Gross Computer Science Department ETH Zurich, Switzerland 1 Logistics Lecture Tuesdays: 10:15 11:55 Thursdays: 10:15 -- 11:55 In ETF E1 Recitation Announced later

More information

Oracle R Technologies

Oracle R Technologies Oracle R Technologies R for the Enterprise Mark Hornick, Director, Oracle Advanced Analytics @MarkHornick mark.hornick@oracle.com Safe Harbor Statement The following is intended to outline our general

More information

EDAN65: Compilers, Lecture 13 Run;me systems for object- oriented languages. Görel Hedin Revised:

EDAN65: Compilers, Lecture 13 Run;me systems for object- oriented languages. Görel Hedin Revised: EDAN65: Compilers, Lecture 13 Run;me systems for object- oriented languages Görel Hedin Revised: 2014-10- 13 This lecture Regular expressions Context- free grammar ATribute grammar Lexical analyzer (scanner)

More information

Trace Compilation. Christian Wimmer September 2009

Trace Compilation. Christian Wimmer  September 2009 Trace Compilation Christian Wimmer cwimmer@uci.edu www.christianwimmer.at September 2009 Department of Computer Science University of California, Irvine Background Institute for System Software Johannes

More information

Are We There Yet? Simple Language-Implementation Techniques for the 21st Century

Are We There Yet? Simple Language-Implementation Techniques for the 21st Century Are We There Yet? Simple Language-Implementation Techniques for the 21st Century Stefan Marr, Tobias Pape, Wolfgang De Meuter To cite this version: Stefan Marr, Tobias Pape, Wolfgang De Meuter. Are We

More information

Just-In-Time GPU Compilation for Interpreted Languages with Partial Evaluation

Just-In-Time GPU Compilation for Interpreted Languages with Partial Evaluation Just-In-Time GPU Compilation for Interpreted Languages with Partial Evaluation Juan Fumero Michel Steuwer Lukas Stadler Christophe Dubach The University of Edinburgh, Oracle Labs, AT juan.fumero@ed.ac.uk

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Values and Types We divide the universe of values according to types A type is a set of values and

More information

Snippets: Taking the High Road to a Low Level

Snippets: Taking the High Road to a Low Level Snippets: Taking the High Road to a Low Level DOUG SIMON and CHRISTIAN WIMMER, Oracle Labs BERNHARD URBAN, Institute for System Software, Johannes Kepler University Linz, Austria GILLES DUBOSCQ, LUKAS

More information

Just-In-Time Compilation

Just-In-Time Compilation Just-In-Time Compilation Thiemo Bucciarelli Institute for Software Engineering and Programming Languages 18. Januar 2016 T. Bucciarelli 18. Januar 2016 1/25 Agenda Definitions Just-In-Time Compilation

More information

Kasper Lund, Software engineer at Google. Crankshaft. Turbocharging the next generation of web applications

Kasper Lund, Software engineer at Google. Crankshaft. Turbocharging the next generation of web applications Kasper Lund, Software engineer at Google Crankshaft Turbocharging the next generation of web applications Overview Why did we introduce Crankshaft? Deciding when and what to optimize Type feedback and

More information

SPECIALISING DYNAMIC TECHNIQUES FOR IMPLEMENTING THE RUBY PROGRAMMING LANGUAGE

SPECIALISING DYNAMIC TECHNIQUES FOR IMPLEMENTING THE RUBY PROGRAMMING LANGUAGE SPECIALISING DYNAMIC TECHNIQUES FOR IMPLEMENTING THE RUBY PROGRAMMING LANGUAGE A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and

More information

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh.

Seminar on Languages for Scientific Computing Aachen, 6 Feb Navid Abbaszadeh. Scientific Computing Aachen, 6 Feb 2014 navid.abbaszadeh@rwth-aachen.de Overview Trends Introduction Paradigms, Data Structures, Syntax Compilation & Execution Concurrency Model Reference Types Performance

More information

invokedynamic under the hood

invokedynamic under the hood Nadeesh T V ORACLE India Pvt Ltd 26 Aug 2016 Outline 1 JVM Languages 2 PreInvokedynamic 3 Invokedynamic 4 MethodHandle 5 Summary JVM Languages Languages which can run on Java Virtual Machine (JVM) Should

More information

CS 261 Fall Mike Lam, Professor. x86-64 Control Flow

CS 261 Fall Mike Lam, Professor. x86-64 Control Flow CS 261 Fall 2016 Mike Lam, Professor x86-64 Control Flow Topics Condition codes Jumps Conditional moves Jump tables Motivation Can we translate the following C function to assembly, using only data movement

More information

An Oz implementation using Truffle and Graal

An Oz implementation using Truffle and Graal An Oz implementation using Truffle and Graal Dissertation presented by Maxime ISTASSE for obtaining the Master s degree in Computer Science and Engineering Supervisor(s) Peter VAN ROY, Benoit DALOZE, Guillaume

More information

Tracing vs. Partial Evaluation

Tracing vs. Partial Evaluation Tracing vs. Partial Evaluation Stefan Marr, Stéphane Ducasse To cite this version: Stefan Marr, Stéphane Ducasse. Tracing vs. Partial Evaluation: Comparing Meta-Compilation Approaches for Self-Optimizing

More information

Compilation Queuing and Graph Caching for Dynamic Compilers

Compilation Queuing and Graph Caching for Dynamic Compilers Compilation Queuing and Graph Caching for Dynamic Compilers Lukas Stadler Gilles Duboscq Hanspeter Mössenböck Johannes Kepler University Linz, Austria {stadler, duboscq, moessenboeck}@ssw.jku.at Thomas

More information

JVM Continuations. Lukas Stadler. Johannes Kepler University Linz, Austria

JVM Continuations. Lukas Stadler. Johannes Kepler University Linz, Austria JVM Continuations Lukas Stadler Johannes Kepler University Linz, Austria Agenda Continuations Uses for continuations Common implementation techniques Our lazy approach Implementation Summary Continuations

More information

Java: framework overview and in-the-small features

Java: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer Java: framework overview and in-the-small features Chair of Software Engineering Carlo A. Furia, Marco Piccioni, Bertrand Meyer

More information

Accelerating Interpreted Programming Languages on GPUs with Just-In-Time Compilation and Runtime Optimisations

Accelerating Interpreted Programming Languages on GPUs with Just-In-Time Compilation and Runtime Optimisations This thesis has been submitted in fulfilment of the requirements for a postgraduate degree (e.g. PhD, MPhil, DClinPsychol) at the University of Edinburgh. Please note the following terms and conditions

More information

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction

Lecture content. Course goals. Course Introduction. TDDA69 Data and Program Structure Introduction Lecture content TDDA69 Data and Program Structure Introduction Cyrille Berger Course Introduction to the different Programming Paradigm The different programming paradigm Why different paradigms? Introduction

More information

What is a compiler? Xiaokang Qiu Purdue University. August 21, 2017 ECE 573

What is a compiler? Xiaokang Qiu Purdue University. August 21, 2017 ECE 573 What is a compiler? Xiaokang Qiu Purdue University ECE 573 August 21, 2017 What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g.,

More information

Just-In-Time Compilers & Runtime Optimizers

Just-In-Time Compilers & Runtime Optimizers COMP 412 FALL 2017 Just-In-Time Compilers & Runtime Optimizers Comp 412 source code IR Front End Optimizer Back End IR target code Copyright 2017, Keith D. Cooper & Linda Torczon, all rights reserved.

More information

Zero-Overhead Metaprogramming

Zero-Overhead Metaprogramming Zero-Overhead Metaprogramming Reflection and Metaobject Protocols Fast and without Compromises * PLDI * Artifact Consistent * Complete * Well Documented * Easy to Reuse * Evaluated * AEC * Stefan Marr

More information

The following presentation is provided under DHMB license. (Do Not Hurt My Brain). Lecturer is not responsible for the financial and moral

The following presentation is provided under DHMB license. (Do Not Hurt My Brain). Lecturer is not responsible for the financial and moral The following presentation is provided under DHMB license (Do Not Hurt My Brain). Lecturer is not responsible for the financial and moral damages resulting from taking too seriously the content of the

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Winter 2018 Lecture 7b Andrew Tolmach Portland State University 1994-2018 Dynamic Type Checking Static type checking offers the great advantage of catching errors early And

More information

Why traditional languages are fast. Types tell compiler the shape of o (fields and their offsets)

Why traditional languages are fast. Types tell compiler the shape of o (fields and their offsets) Optimizations Why traditional languages are fast Types tell compiler the shape of o (fields and their offsets) Scripting Languages Have No Types Objects are simply dictionaries from properties to values

More information

Java and C II. CSE 351 Spring Instructor: Ruth Anderson

Java and C II. CSE 351 Spring Instructor: Ruth Anderson Java and C II CSE 351 Spring 2017 Instructor: Ruth Anderson Teaching Assistants: Dylan Johnson Kevin Bi Linxing Preston Jiang Cody Ohlsen Yufang Sun Joshua Curtis Administrivia Lab 5 Due TONIGHT! Fri 6/2

More information

Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 16

Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 16 1 Copyright 2012, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 16 Towards JVM Dynamic Languages Toolchain Insert Picture Here Attila

More information

23/02/15. Compile, execute, debug. Advanced Programming THE JAVA PLATFORM

23/02/15. Compile, execute, debug. Advanced Programming THE JAVA PLATFORM Advanced Programming THE JAVA PLATFORM What do you need to run your java application? G: STARTING A JAVA APPLICATION Compile, execute, debug Safari book collection at UNIBZ: Schildt, H. Java the complete

More information

Correctness of Speculative Optimizations with Dynamic Deoptimization

Correctness of Speculative Optimizations with Dynamic Deoptimization Correctness of Speculative Optimizations with Dynamic Deoptimization Olivier Flückiger, Gabriel Scherer, Ming-Ho Yee, Aviral Goel, Amal Ahmed, Jan Vitek Northeastern University, Boston, USA October 12,

More information

The JavaScriptCore Virtual Machine. Filip Pizlo Apple Inc.

The JavaScriptCore Virtual Machine. Filip Pizlo Apple Inc. The JavaScriptCore Virtual Machine Filip Pizlo Apple Inc. 3 Pizlo Keynotes / Week ICCV 17 Symmetry as the fundamental prior in human 3D vision Zygmunt Pizlo webkit.org https://svn.webkit.org/repository/webkit/trunk

More information

CS558 Programming Languages

CS558 Programming Languages CS558 Programming Languages Fall 2017 Lecture 7b Andrew Tolmach Portland State University 1994-2017 Type Inference Some statically typed languages, like ML (and to a lesser extent Scala), offer alternative

More information

CSE 401/M501 Compilers

CSE 401/M501 Compilers CSE 401/M501 Compilers Code Shape II Objects & Classes Hal Perkins Autumn 2018 UW CSE 401/M501 Autumn 2018 L-1 Administrivia Semantics/type check due next Thur. 11/15 How s it going? Reminder: if you want

More information

Princeton University Computer Science 217: Introduction to Programming Systems. Assembly Language: Function Calls

Princeton University Computer Science 217: Introduction to Programming Systems. Assembly Language: Function Calls Princeton University Computer Science 217: Introduction to Programming Systems Assembly Language: Function Calls 1 Goals of this Lecture Help you learn: Function call problems x86-64 solutions Pertinent

More information

Compiler Design Spring 2017

Compiler Design Spring 2017 Compiler Design Spring 2017 6.0 Runtime system and object layout Dr. Zoltán Majó Compiler Group Java HotSpot Virtual Machine Oracle Corporation 1 Runtime system Some open issues from last time Handling

More information

FTL WebKit s LLVM based JIT

FTL WebKit s LLVM based JIT FTL WebKit s LLVM based JIT Andrew Trick, Apple Juergen Ributzka, Apple LLVM Developers Meeting 2014 San Jose, CA WebKit JS Execution Tiers OSR Entry LLInt Baseline JIT DFG FTL Interpret bytecode Profiling

More information

Announcements. My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM.

Announcements. My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM. IR Generation Announcements My office hours are today in Gates 160 from 1PM-3PM. Programming Project 3 checkpoint due tomorrow night at 11:59PM. This is a hard deadline and no late submissions will be

More information

Just In Time Compilation

Just In Time Compilation Just In Time Compilation JIT Compilation: What is it? Compilation done during execution of a program (at run time) rather than prior to execution Seen in today s JVMs and elsewhere Outline Traditional

More information

INVESTIGATING ANDROID BYTECODE EXECUTION ON JAVA VIRTUAL MACHINES

INVESTIGATING ANDROID BYTECODE EXECUTION ON JAVA VIRTUAL MACHINES INVESTIGATING ANDROID BYTECODE EXECUTION ON JAVA VIRTUAL MACHINES A DISSERTATION SUBMITTED TO THE UNIVERSITY OF MANCHESTER FOR THE DEGREE OF MASTER OF SCIENCE IN THE FACULTY OF ENGINEERING AND PHYSICAL

More information

A Domain-Specific Language for Building Self-Optimizing AST Interpreters

A Domain-Specific Language for Building Self-Optimizing AST Interpreters A Domain-pecific Language for Building elf-optimizing AT nterpreters Christian Humer Christian Wimmer Christian Wirth Andreas Wöß Thomas Würthinger nstitute for ystem oftware, Johannes Kepler University

More information

Parsing Scheme (+ (* 2 3) 1) * 1

Parsing Scheme (+ (* 2 3) 1) * 1 Parsing Scheme + (+ (* 2 3) 1) * 1 2 3 Compiling Scheme frame + frame halt * 1 3 2 3 2 refer 1 apply * refer apply + Compiling Scheme make-return START make-test make-close make-assign make- pair? yes

More information

What is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done

What is a compiler? var a var b mov 3 a mov 4 r1 cmpi a r1 jge l_e mov 2 b jmp l_d l_e: mov 3 b l_d: ;done What is a compiler? What is a compiler? Traditionally: Program that analyzes and translates from a high level language (e.g., C++) to low-level assembly language that can be executed by hardware int a,

More information

CSCI 3136 Principles of Programming Languages

CSCI 3136 Principles of Programming Languages CSCI 3136 Principles of Programming Languages Summer 2013 Faculty of Computer Science Dalhousie University 1 / 100 CSCI 3136 Principles of Programming Languages Summer 2013 Aminul Islam Faculty of Computer

More information

One VM, Many Languages

One VM, Many Languages One VM, Many Languages John Rose Brian Goetz Oracle Corporation 9/20/2010 The following is intended to outline our general product direction. It is intended for information purposes

More information

CS 360 Programming Languages Interpreters

CS 360 Programming Languages Interpreters CS 360 Programming Languages Interpreters Implementing PLs Most of the course is learning fundamental concepts for using and understanding PLs. Syntax vs. semantics vs. idioms. Powerful constructs like

More information

CS 261 Fall Mike Lam, Professor. x86-64 Control Flow

CS 261 Fall Mike Lam, Professor. x86-64 Control Flow CS 261 Fall 2018 Mike Lam, Professor x86-64 Control Flow Topics Condition codes Jumps Conditional moves Jump tables Motivation We cannot translate the following C function to assembly, using only data

More information

Review: Object Diagrams for Inheritance. Type Conformance. Inheritance Structures. Car. Vehicle. Truck. Vehicle. conforms to Object

Review: Object Diagrams for Inheritance. Type Conformance. Inheritance Structures. Car. Vehicle. Truck. Vehicle. conforms to Object Review: Diagrams for Inheritance - String makemodel - int mileage + (String, int) Class #3: Inheritance & Polymorphism Software Design II (CS 220): M. Allen, 25 Jan. 18 + (String, int) + void

More information

MY GOOD FRIEND RUST. Matthias Endler trivago

MY GOOD FRIEND RUST. Matthias Endler trivago MY GOOD FRIEND RUST Matthias Endler trivago How to write the word Mississippi? How to write the word Mississippi? Mississippi Sebastian is stupid. Oh please tell me more about Matthias Endler! } Düsseldorf,

More information

LECTURE 2. Compilers and Interpreters

LECTURE 2. Compilers and Interpreters LECTURE 2 Compilers and Interpreters COMPILATION AND INTERPRETATION Programs written in high-level languages can be run in two ways. Compiled into an executable program written in machine language for

More information

Intermediate Code, Object Representation, Type-Based Optimization

Intermediate Code, Object Representation, Type-Based Optimization CS 301 Spring 2016 Meetings March 14 Intermediate Code, Object Representation, Type-Based Optimization Plan Source Program Lexical Syntax Semantic Intermediate Code Generation Machine- Independent Optimization

More information

Partial Escape Analysis and Scalar Replacement for Java

Partial Escape Analysis and Scalar Replacement for Java Faculty of Engineering and Natural Sciences Partial Escape Analysis and Scalar Replacement for Java DISSERTATION submitted in partial fulfillment of the requirements for the academic degree Doktor der

More information

Generating Efficient Code for Lambdas and Function Types. Fredrik Öhrström Principal Member of Technical Staff JRockit+Hotspot...

Generating Efficient Code for Lambdas and Function Types. Fredrik Öhrström Principal Member of Technical Staff JRockit+Hotspot... Generating Efficient Code for Lambdas and Function Types Fredrik Öhrström Principal Member of Technical Staff JRockit+Hotspot You Have to Grok the MethodHandle MethodHandle Is an opaque reference to a

More information

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End

Semantic Analysis. Outline. The role of semantic analysis in a compiler. Scope. Types. Where we are. The Compiler Front-End Outline Semantic Analysis The role of semantic analysis in a compiler A laundry list of tasks Scope Static vs. Dynamic scoping Implementation: symbol tables Types Static analyses that detect type errors

More information

The Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer.

The Compiler So Far. CSC 4181 Compiler Construction. Semantic Analysis. Beyond Syntax. Goals of a Semantic Analyzer. The Compiler So Far CSC 4181 Compiler Construction Scanner - Lexical analysis Detects inputs with illegal tokens e.g.: main 5 (); Parser - Syntactic analysis Detects inputs with ill-formed parse trees

More information

Dynamically-typed Languages. David Miller

Dynamically-typed Languages. David Miller Dynamically-typed Languages David Miller Dynamically-typed Language Everything is a value No type declarations Examples of dynamically-typed languages APL, Io, JavaScript, Lisp, Lua, Objective-C, Perl,

More information

CSCE 145 Exam 1 Review. This exam totals to 100 points. Follow the instructions. Good luck!

CSCE 145 Exam 1 Review. This exam totals to 100 points. Follow the instructions. Good luck! CSCE 145 Exam 1 Review This exam totals to 100 points. Follow the instructions. Good luck! Chapter 1 This chapter was mostly terms so expect a fill in the blank style questions on definition. Remember

More information

Programs as data first-order functional language type checking

Programs as data first-order functional language type checking Programs as data first-order functional language type checking Copyright 2013-18, Peter Sestoft and Cesare Tinelli. Created by Cesare Tinelli at the University of Iowa from notes originally developed by

More information

CS377P Programming for Performance Leveraging the Compiler for Performance

CS377P Programming for Performance Leveraging the Compiler for Performance CS377P Programming for Performance Leveraging the Compiler for Performance Sreepathi Pai UTCS October 5, 2015 Outline 1 Compiler Performance 2 Compiler Internals 3 Domain-specific Languages (DSLs) Outline

More information

Outline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context

Outline. Introduction Concepts and terminology The case for static typing. Implementing a static type system Basic typing relations Adding context Types 1 / 15 Outline Introduction Concepts and terminology The case for static typing Implementing a static type system Basic typing relations Adding context 2 / 15 Types and type errors Type: a set of

More information

Topic 9: Type Checking

Topic 9: Type Checking Recommended Exercises and Readings Topic 9: Type Checking From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6 and

More information

Topic 9: Type Checking

Topic 9: Type Checking Topic 9: Type Checking 1 Recommended Exercises and Readings From Haskell: The craft of functional programming (3 rd Ed.) Exercises: 13.17, 13.18, 13.19, 13.20, 13.21, 13.22 Readings: Chapter 13.5, 13.6

More information

Running class Timing on Java HotSpot VM, 1

Running class Timing on Java HotSpot VM, 1 Compiler construction 2009 Lecture 3. A first look at optimization: Peephole optimization. A simple example A Java class public class A { public static int f (int x) { int r = 3; int s = r + 5; return

More information

JavaScript and V8 A functional-ish language and implementation in the mainstream

JavaScript and V8 A functional-ish language and implementation in the mainstream JavaScript and V8 A functional-ish language and implementation in the mainstream Andreas Rossberg, Google Munich rossberg@google.com CEFP 2011, Budapest Outline JavaScript Background Functional concepts

More information

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation

9/5/17. The Design and Implementation of Programming Languages. Compilation. Interpretation. Compilation vs. Interpretation. Hybrid Implementation Language Implementation Methods The Design and Implementation of Programming Languages Compilation Interpretation Hybrid In Text: Chapter 1 2 Compilation Interpretation Translate high-level programs to

More information

CS321 Languages and Compiler Design I. Winter 2012 Lecture 1

CS321 Languages and Compiler Design I. Winter 2012 Lecture 1 CS321 Languages and Compiler Design I Winter 2012 Lecture 1 1 COURSE GOALS Improve understanding of languages and machines. Learn practicalities of translation. Learn anatomy of programming languages.

More information

SSA Based Mobile Code: Construction and Empirical Evaluation

SSA Based Mobile Code: Construction and Empirical Evaluation SSA Based Mobile Code: Construction and Empirical Evaluation Wolfram Amme Friedrich Schiller University Jena, Germany Michael Franz Universit of California, Irvine, USA Jeffery von Ronne Universtity of

More information

<Insert Picture Here> Adventures in JSR-292 or How To Be A Duck Without Really Trying

<Insert Picture Here> Adventures in JSR-292 or How To Be A Duck Without Really Trying Adventures in JSR-292 or How To Be A Duck Without Really Trying Jim Laskey Multi-language Lead Java Language and Tools Group The following is intended to outline our general product

More information

Lecture Outline. Code Generation. Lecture 30. Example of a Stack Machine Program. Stack Machines

Lecture Outline. Code Generation. Lecture 30. Example of a Stack Machine Program. Stack Machines Lecture Outline Code Generation Lecture 30 (based on slides by R. Bodik) Stack machines The MIPS assembly language The x86 assembly language A simple source language Stack-machine implementation of the

More information

The Stack & Procedures

The Stack & Procedures The Stack & Procedures CSE 351 Spring 2017 Instructor: Ruth Anderson Teaching Assistants: Dylan Johnson Kevin Bi Linxing Preston Jiang Cody Ohlsen Yufang Sun Joshua Curtis Administrivia Homework 2 due

More information

Using Scala for building DSL s

Using Scala for building DSL s Using Scala for building DSL s Abhijit Sharma Innovation Lab, BMC Software 1 What is a DSL? Domain Specific Language Appropriate abstraction level for domain - uses precise concepts and semantics of domain

More information