Debugging at Full Speed

Size: px
Start display at page:

Download "Debugging at Full Speed"

Transcription

1

2 Oracle Labs Document Debugging at Full Speed Instrumen)ng Truffle- implemented Programs Michael L. Van De Vanter Oracle Labs, VM Research Group July 30, JVM Language Summit Santa Clara, CA July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed

3 Safe Harbor Statement The following is intended to provide some insight into a line of research in Oracle Labs. It is intended for informaron purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or funcronality, and should not be relied upon in making purchasing decisions. Oracle reserves the right to alter its development plans and pracrces at any Rme, and the development, release, and Rming of any features or funcronality described in connecron with any Oracle product or service remains at the sole discreron of Oracle. Any views expressed in this presentaron are my own and do not necessarily reflect the views of Oracle. July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 3

4 The Big Idea Extend the Truffle/Graal playorm, which enables high- performance implementarons of dynamic languages (Ruby, R, JavaScript, Python, Smalltalk) with reduced implementaron effort by building in instrumenta*on support that enables flexible access to Truffle execuron events by many kinds of tools (debuggers, profilers, etc.) with minimal runrme overhead requiring modest implementaron effort. July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 4

5 InstrumenRng Truffle Programs Truffle: ExecuRon Overview Tools: Opportunity, Challenge, Strategy Proof of Concept: Ruby, Ruby debugger Truffle: new InstrumentaRon API ApplicaRons & Status July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 5

6 Truffle node specializaron U Node Rewriting for Profiling Feedback G Compilation using Partial Evaluation G U U Node Transitions I G I G U U U Uninitialized Integer I I I I I AST Interpreter Uninitialized Nodes S String G D Double Generic AST Interpreter Rewritten Nodes Compiled Code T. Würthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One VM to rule them all. In Proceedings of Onward, July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 6

7 Truffle deoprmizaron and rewrirng Deoptimization to AST Interpreter G Node Rewriting to Update Profiling Feedback G Recompilation using Partial Evaluation G G I G I G D G D G I I I D I I I D T. Würthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One VM to rule them all. In Proceedings of Onward, July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 7

8 GraalVM Architecture Guest Language Application Guest Language Implementation Language Parser AST Interpreter Truffle API Framework for Node Rewriting Truffle Optimizer Partial Evaluation using Graal Hosted on any Java VM VM Runtime Services Garbage Collector Graal Compiler Stack Walking Deoptimization AOT Optimization: using Graal for static analysis and AOT compilation OS (slow, for guest language development and debugging only) Hosted on Graal VM (fast, for integration of guest language code with existing Java applications) T. Würthinger, C. Wimmer, A. Wöß, L. Stadler, G. Duboscq, C. Humer, G. Richards, D. Simon, and M. Wolczko. One VM to rule them all. In Proceedings of Onward, July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 8

9 InstrumenRng Truffle Programs Truffle: ExecuRon Overview Tools: Opportunity, Challenge, Strategy Proof of Concept: Ruby, Ruby debugger Truffle: new InstrumentaRon API ApplicaRons & Status July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 9

10 Opportunity: Tool Access to Truffle RunRme Language implementarons relarvely accessible All Java Wrinen as interpreters ExecuRon state represented explicitly: stack, frames, Truffle/Graal op*mizes and deop*mizes Many aggressive oprmizarons down to narve code For its own purposes can deop*mize Reconstruct execuron state completely July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 10

11 Challenge: Blend with Truffle Define language- agnosrc services Automate as much tool support as possible Leverage Truffle/Graal oprmizarons E.g. breakpoint condirons should fully oprmize Unused framework should compile away Minimize disrupron Language implementaron code Truffle oprmizarons Simple API for tool clients July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 11

12 Strategy: Interpose with Node Wrappers Insert addironal nodes into Truffle ASTs (wrappers) Anachment points for tool interposiron SemanRcally transparent during execuron Largely orthogonal to language implementaron Can be composed Focus on language execuron semanrcs No access (for now) to low- level state, e.g. memory July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 12

13 InstrumenRng Truffle Programs Truffle: ExecuRon Overview Tools: Opportunity, Challenge, Strategy Proof of Concept: Ruby, Ruby debugger Truffle: new InstrumentaRon API ApplicaRons & Status July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 13

14 Tools: The Debugger Challenge They are difficult to build Oren Rghtly coupled to narve playorms Cross many levels of system abstracrons Contend with incomplete access to execuron state They present significant producrvity tradeoffs Performance disabled oprmizarons FuncRonality inhibited language features Complexity language implementaron requirements Inconvenience nonstandard context (debug flags) July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 14

15 Wrapper Nodes While Call < Sequence 1""""while"x"<"y" 2""""""x"+="1" 3""""""y"*="1" 4""""end( ReadLocal x ReadLocal y WriteLocal x Call + ReadLocal x FixnumLiteral 1 WriteLocal y Call - ReadLocal y FixnumLiteral 1 July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 15

16 While LineBreakpoint Sequence Call < LineBreakpoint ReadLocal x WriteLocal x ReadLocal y Call + ReadLocal x FixnumLiteral 1 LineBreakpoint WriteLocal y Call - ReadLocal y FixnumLiteral 1 July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 16

17 Ruby Prototype (Chris Seaton) AcRve/InacRve AcRons Inactive assumption check completely elided in compiled code Debug action installed by user inactive active Compile: produces partially evaluated machine code from specialized AST. Deoptimize: transfers control from the machine code back to the AST interpreter. Replace: the inactive node with an active node to install the debug action Compile: produces new machine code from the modified AST and the installed debug action. July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 17

18 Ruby Prototype: set_trace_func 1""""set_trace_func"proc"{" event,"file,"line," 2""""""""id,"binding,"classname " 3""""""puts""We're"at"line"number"#{line}"" 4""""}" Standard Ruby language feature Uses: debuggers, profilers, coverage Enabled and disabled programmarcally Naïve implementaron: check for it every single Rme a bytecode has a different line number Rubinius doesn t support it at all, JRuby has it behind a flag July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 18

19 While InactiveTrace Sequence Call < InactiveTrace ReadLocal x WriteLocal x ReadLocal y Call + ReadLocal x FixnumLiteral 1 InactiveTrace WriteLocal y Call - ReadLocal y FixnumLiteral 1 July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 19

20 While Call trace func ActiveTrace Call < Sequence ActiveTrace ReadLocal x WriteLocal x Call trace func ReadLocal y Call + ReadLocal x FixnumLiteral 1 ActiveTrace WriteLocal y Call trace func Call - ReadLocal y FixnumLiteral 1 July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 20

21 Ruby Prototype: BuilRn Debug OperaRons 1""""100.times"do' 2"""""Debug.break" 3""""end' 1""""Debug.break("test.rb","14)"do( 2"""""puts""The"program"has"reached"line"14"" 3""""end( 1""""Debug.break("test.rb","14)"do" binding " 2""""""if"binding.local_variable_get(:foo)"=="14" 3""""""""Debug.break" 4""""""end' 5""""end' July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 21

22 EvaluaRon general performance Speedup Relative to MRI (s/s) Fannkuch Mandelbrot 0 MRI Rubinius JRuby Topaz JRuby+Truffle Chris Seaton, Michael Van De Vanter, Michael Haupt. Debugging at Full Speed. In Proceedings of DYLA July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 22

23 EvaluaRon summary Self Relative Time (s/s) MRI Rubinius JRuby Topaz JRuby+Truffle 1 n/a Enabling set_trace_func n/a Using set_trace_func n/a Enabling debugger n/a Breakpoint n/a Constant conditional n/a Simple conditional Chris Seaton, Michael Van De Vanter, Michael Haupt. Debugging at Full Speed. In Proceedings of DYLA July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 23

24 InstrumenRng Truffle Programs Truffle: ExecuRon Overview Tools: Opportunity, Challenge, Strategy Proof of Concept: Ruby, Ruby debugger Truffle: new InstrumentaRon API ApplicaRons & Status July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 24

25 Generalize, Scale, Simplify Ruby prototype: Extensions (builrns) to guest language FuncRon- specific wrappers MulRple, chained wrappers Wrappers only added starcally AcRvate tool funcrons via node replacement InstrumentaRon API: Language- agnosrc API for tools General purpose wrappers Single wrapper per locaron Add mulrple tool funcrons dynamically AcRvate tool funcrons by state changes July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 25

26 Language ImplementaRon API Define language- specific wrapper node type(s) Wrap appropriate nodes when ASTs constructed Ensure complete source a3ribu*on By default, Probes are tracked by source locaron AddiRonal tool- specific support (e.g. debugging) E.g. eval July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 26

27 Tool Client API: Overview Disclaimer: work in progress SourceSecRon Text range corresponding to a user- sensible AST node SyntaxTag AnnotaRon to guide tool behavior at an AST node (e.g. STMT) ExecuRonEvent Flow of control into or out of an AST node Instrument Tool- specific receptor of ExecuRonEvents at an AST node Probe Manager for Instruments & SyntaxTags at an AST node July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 27

28 Tool Client API: A Truffle Instrument Interposes in Truffle interpreta)on public abstract class Instrument implements ExecutionEvents { public void enter(node node, Frame frame) { } public void leave(node node, Frame frame) { } public void leave(node node, Frame frame, Object result) { } public void leave(node node, Frame frame, boolean result) { leave(node, frame, (Object) result); }... public void leaveexceptional(node node, Frame frame, Exception e) { } } July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 28

29 Tool Client API: A Truffle Probe Manages Instruments & Tags at an AST loca)on public interface Probe { void addinstrument(instrument newinstrument); void removeinstrument(instrument oldinstrument); void tagas(syntaxtag tag); } public interface ProbeListener { void newprobeinserted(sourcesection location, Probe probe); void probetaggedas(probe probe, SyntaxTag tag); } July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 29

30 Tool Client API: Finding Probes Dynamically public abstract class ExecutionContext { Probe getprobe(sourcesection sourcesection); Collection<Probe> findprobestaggedas(syntaxtag tag); Collection<Probe> findprobesbyline(linelocation linelocation);... } July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 30

31 InstrumenRng Truffle Programs Truffle: ExecuRon Overview Tools: Opportunity, Challenge, Strategy Proof of Concept: Ruby, Ruby debugger Truffle: new InstrumentaRon API ApplicaRons & Status July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 31

32 ApplicaRon: Language ImplementaRon Ruby implementa)on by Chris Seaton Ruby set_trace_function Invokes arbitrary proc at each statement Ruby heap iteraron, possibly filtered ObjectSpace.each_object() ObjectSpace.count_objects() ObjectSpace._id2ref(object_id) Ruby core library thread quiescence Implemented with Instruments July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 32

33 ApplicaRon: Simple Profiling Collabora)on with UC Irvine ZipPy performance oprmizarons Exploratory work to locate hot spots Gathering interpreter- level execuron data Building maps when needed July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 33

34 ApplicaRon: Debugging (1/3) Very limited, but useful func)onality Debugging engine prototype Breakpoints; step in/over/out; show frame vars; backtrace Evaluate string in halted context Language- agnosrc (mostly) Language- specific adaptaron Some language- specific code needed Ruby, JavaScript working at same funcronal level Simple (demonstraron language) underway R just begun July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 34

35 ApplicaRon: Debugging (2/3) public final class DebugBreakInstrument extends DebugInstrument private boolean isenabled = true; public DebugBreakInstrument(DebugInstrumentCallback callback) { super(callback); public void enter(node astnode, VirtualFrame frame) { if (isenabled) { debuggercallback.haltedat(astnode, frame.materialize()); } }... } July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 35

36 ApplicaRon: Debugging (3/3) Command- Line debugger for tesrng & demonstraron Client/server architecture emulated Client is language- agnosrc Server built around a language- specific Debugging Engine IDE integraron Looking at simple experiments with NetBeans July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 36

37 Status InstrumentaRon is part of the public Truffle API Debugging is under internal development July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 37

38 July 30, 2014 Copyright 2014, Oracle and/or its affiliates. All rights reserved. JVM Language Summit- Debugging at Full Speed 38

39

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

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

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

Ruby. JRuby+Truffle and the to JITs. Chris Oracle Labs

Ruby. JRuby+Truffle and the to JITs. Chris Oracle Labs John Tenniel illustra@ons public domain in the UK and US Deop@mizing Ruby JRuby+Truffle and the an@dote to JITs Chris Seaton @ChrisGSeaton Oracle Labs Copyright 2014, Oracle and/or its affiliates. All

More information

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

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

More information

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

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

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

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

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

<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

<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

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

The Java HotSpot VM Under the Hood

The Java HotSpot VM Under the Hood The Java HotSpot VM Under the Hood Tobias Hartmann Zoltán Majó HotSpot Compiler Team Oracle Corpora6on About us Tobias Hartmann MSc ETH Zurich, Switzerland Lives in Rheinfelden, Germany Zoltán Majó PhD

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

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

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

Safe Harbor Statement

Safe Harbor Statement Safe Harbor Statement The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment

More information

LLVM-based dynamic dataflow compila6on for heterogeneous targets

LLVM-based dynamic dataflow compila6on for heterogeneous targets LLVM-based dynamic dataflow compila6on for heterogeneous targets V. Ducrot, K. Juilly, S.Monot, G. Bayle Des Courchamps Donnons de la suite à vos idées AS+ Groupe Eolen T. Goubier CEA List /DACLE /LCE

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

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

Eclipse Enterprise for Java (EE4J)

Eclipse Enterprise for Java (EE4J) Eclipse Enterprise for Java (EE4J) Presenta)on to Java Community Process Execu)ve Commi5ee Will Lyons Senior Director, Oracle WebLogic Server and Java EE Product Management September 29, 2017 2 Safe Harbor

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

Substrate VM. Copyright 2017, Oracle and/or its affiliates. All rights reserved.

Substrate VM. Copyright 2017, Oracle and/or its affiliates. All rights reserved. Substrate VM 1 Safe Harbor Statement 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

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

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

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher

COP4020 Programming Languages. Compilers and Interpreters Robert van Engelen & Chris Lacher COP4020 ming Languages Compilers and Interpreters Robert van Engelen & Chris Lacher Overview Common compiler and interpreter configurations Virtual machines Integrated development environments Compiler

More information

Alan Bateman Java Platform Group, Oracle November Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1

Alan Bateman Java Platform Group, Oracle November Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Alan Bateman Java Platform Group, Oracle November 2018 Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Project Loom Continuations Fibers Tail-calls Copyright 2018, Oracle and/or its

More information

301AA - Advanced Programming

301AA - Advanced Programming 301AA - Advanced Programming Lecturer: Andrea Corradini andrea@di.unipi.it h;p://pages.di.unipi.it/corradini/ Course pages: h;p://pages.di.unipi.it/corradini/dida@ca/ap-18/ AP-2018-18: Lambda Calculus,

More information

Ahead of Time (AOT) Compilation

Ahead of Time (AOT) Compilation Ahead of Time (AOT) Compilation Vaibhav Choudhary (@vaibhav_c) Java Platforms Team https://blogs.oracle.com/vaibhav Copyright 2018, Oracle and/or its affiliates. All rights reserved. Safe Harbor Statement

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

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

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

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

JDK 9/10/11 and Garbage Collection

JDK 9/10/11 and Garbage Collection JDK 9/10/11 and Garbage Collection Thomas Schatzl Senior Member of Technical Staf Oracle JVM Team May, 2018 thomas.schatzl@oracle.com Copyright 2017, Oracle and/or its afliates. All rights reserved. 1

More information

Run-time Program Management. Hwansoo Han

Run-time Program Management. Hwansoo Han Run-time Program Management Hwansoo Han Run-time System Run-time system refers to Set of libraries needed for correct operation of language implementation Some parts obtain all the information from subroutine

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

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

<Insert Picture Here> Multi-language JDI? You're Joking, Right?

<Insert Picture Here> Multi-language JDI? You're Joking, Right? Multi-language JDI? You're Joking, Right? Jim Laskey Multi-language Lead Java Language and Tools Group The following is intended to outline our general product direction. It is intended

More information

Sista: Improving Cog s JIT performance. Clément Béra

Sista: Improving Cog s JIT performance. Clément Béra Sista: Improving Cog s JIT performance Clément Béra Main people involved in Sista Eliot Miranda Over 30 years experience in Smalltalk VM Clément Béra 2 years engineer in the Pharo team Phd student starting

More information

Accelerating Ruby with LLVM

Accelerating Ruby with LLVM Accelerating Ruby with LLVM Evan Phoenix Oct 2, 2009 RUBY RUBY Strongly, dynamically typed RUBY Unified Model RUBY Everything is an object RUBY 3.class # => Fixnum RUBY Every code context is equal RUBY

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

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1

Agenda. CSE P 501 Compilers. Java Implementation Overview. JVM Architecture. JVM Runtime Data Areas (1) JVM Data Types. CSE P 501 Su04 T-1 Agenda CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Summer 2004 Java virtual machine architecture.class files Class loading Execution engines Interpreters & JITs various strategies

More information

Contents in Detail. Who This Book Is For... xx Using Ruby to Test Itself... xx Which Implementation of Ruby?... xxi Overview...

Contents in Detail. Who This Book Is For... xx Using Ruby to Test Itself... xx Which Implementation of Ruby?... xxi Overview... Contents in Detail Foreword by Aaron Patterson xv Acknowledgments xvii Introduction Who This Book Is For................................................ xx Using Ruby to Test Itself.... xx Which Implementation

More information

Multi-Level Virtual Machine Debugging using the Java Platform Debugger Architecture

Multi-Level Virtual Machine Debugging using the Java Platform Debugger Architecture Multi-Level Virtual Machine Debugging using the Java Platform Debugger Architecture Thomas Würthinger 1, Michael L. Van De Vanter 2, and Doug Simon 2 1 Institute for System Software Johannes Kepler University

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

Assumptions. History

Assumptions. History Assumptions A Brief Introduction to Java for C++ Programmers: Part 1 ENGI 5895: Software Design Faculty of Engineering & Applied Science Memorial University of Newfoundland You already know C++ You understand

More information

Untyped Memory in the Java Virtual Machine

Untyped Memory in the Java Virtual Machine Untyped Memory in the Java Virtual Machine Andreas Gal and Michael Franz University of California, Irvine {gal,franz}@uci.edu Christian W. Probst Technical University of Denmark probst@imm.dtu.dk July

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

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

Project Loom Ron Pressler, Alan Bateman June 2018

Project Loom Ron Pressler, Alan Bateman June 2018 Project Loom Ron Pressler, Alan Bateman June 2018 Copyright 2018, Oracle and/or its affiliates. All rights reserved.!1 Safe Harbor Statement The following is intended to outline our general product direction.

More information

Interim Report: Build Your Efficient Programming Language Quickly

Interim Report: Build Your Efficient Programming Language Quickly Interim Report: Build Your Efficient Programming Language Quickly Final Year Project Department of Computer Science University of Hong Kong Xiang Ji Supervisor: Prof. Bruno c.d.s. Oliveira January 24,

More information

Introduction to Java

Introduction to Java Introduction to Java Module 1: Getting started, Java Basics 22/01/2010 Prepared by Chris Panayiotou for EPL 233 1 Lab Objectives o Objective: Learn how to write, compile and execute HelloWorld.java Learn

More information

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc. Chapter 1 GETTING STARTED SYS-ED/ Computer Education Techniques, Inc. Objectives You will learn: Java platform. Applets and applications. Java programming language: facilities and foundation. Memory management

More information

High-Level Language VMs

High-Level Language VMs High-Level Language VMs Outline Motivation What is the need for HLL VMs? How are these different from System or Process VMs? Approach to HLL VMs Evolutionary history Pascal P-code Object oriented HLL VMs

More information

PyPy - How to not write Virtual Machines for Dynamic Languages

PyPy - How to not write Virtual Machines for Dynamic Languages PyPy - How to not write Virtual Machines for Dynamic Languages Institut für Informatik Heinrich-Heine-Universität Düsseldorf ESUG 2007 Scope This talk is about: implementing dynamic languages (with a focus

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

Full file at

Full file at Import Settings: Base Settings: Brownstone Default Highest Answer Letter: D Multiple Keywords in Same Paragraph: No Chapter: Chapter 2 Multiple Choice 1. A is an example of a systems program. A) command

More information

Compiling and Interpreting Programming. Overview of Compilers and Interpreters

Compiling and Interpreting Programming. Overview of Compilers and Interpreters Copyright R.A. van Engelen, FSU Department of Computer Science, 2000 Overview of Compilers and Interpreters Common compiler and interpreter configurations Virtual machines Integrated programming environments

More information

Introduction to Programming (Java) 2/12

Introduction to Programming (Java) 2/12 Introduction to Programming (Java) 2/12 Michal Krátký Department of Computer Science Technical University of Ostrava Introduction to Programming (Java) 2008/2009 c 2006 2008 Michal Krátký Introduction

More information

OpenACC Course. Office Hour #2 Q&A

OpenACC Course. Office Hour #2 Q&A OpenACC Course Office Hour #2 Q&A Q1: How many threads does each GPU core have? A: GPU cores execute arithmetic instructions. Each core can execute one single precision floating point instruction per cycle

More information

code://rubinius/technical

code://rubinius/technical code://rubinius/technical /GC, /cpu, /organization, /compiler weeee!! Rubinius New, custom VM for running ruby code Small VM written in not ruby Kernel and everything else in ruby http://rubini.us git://rubini.us/code

More information

Chapter 4 Java Language Fundamentals

Chapter 4 Java Language Fundamentals Chapter 4 Java Language Fundamentals Develop code that declares classes, interfaces, and enums, and includes the appropriate use of package and import statements Explain the effect of modifiers Given an

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

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

Programming Languages and Techniques (CIS120)

Programming Languages and Techniques (CIS120) Programming Languages and Techniques (CIS120) Lecture 9 Jan 30, 2013 Abstract Types: Sets Announcements Homework 3 is available on the web Due MONDAY, February 4 th at 11:59:59pm PracRce with BSTs, generic

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

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

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

JiST Java in Simulation Time An efficient, unifying approach to simulation using virtual machines

JiST Java in Simulation Time An efficient, unifying approach to simulation using virtual machines JiST Java in Simulation Time An efficient, unifying approach to simulation using virtual machines Rimon Barr, Zygmunt Haas, Robbert van Renesse rimon@acm.org haas@ece.cornell.edu rvr@cs.cornell.edu. Cornell

More information

The Z Garbage Collector Low Latency GC for OpenJDK

The Z Garbage Collector Low Latency GC for OpenJDK The Z Garbage Collector Low Latency GC for OpenJDK Per Lidén & Stefan Karlsson HotSpot Garbage Collection Team Jfokus VM Tech Summit 2018 Safe Harbor Statement The following is intended to outline our

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

JAVA PERFORMANCE. PR SW2 S18 Dr. Prähofer DI Leopoldseder

JAVA PERFORMANCE. PR SW2 S18 Dr. Prähofer DI Leopoldseder JAVA PERFORMANCE PR SW2 S18 Dr. Prähofer DI Leopoldseder OUTLINE 1. What is performance? 1. Benchmarking 2. What is Java performance? 1. Interpreter vs JIT 3. Tools to measure performance 4. Memory Performance

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

Welcome to the session...

Welcome to the session... Welcome to the session... Copyright 2013, Oracle and/or its affiliates. All rights reserved. 02/22/2013 1 The following is intended to outline our general product direction. It is intended for information

More information

Program Dynamic Analysis. Overview

Program Dynamic Analysis. Overview Program Dynamic Analysis Overview Dynamic Analysis JVM & Java Bytecode [2] A Java bytecode engineering library: ASM [1] 2 1 What is dynamic analysis? [3] The investigation of the properties of a running

More information

3/15/18. Overview. Program Dynamic Analysis. What is dynamic analysis? [3] Why dynamic analysis? Why dynamic analysis? [3]

3/15/18. Overview. Program Dynamic Analysis. What is dynamic analysis? [3] Why dynamic analysis? Why dynamic analysis? [3] Overview Program Dynamic Analysis Dynamic Analysis JVM & Java Bytecode [2] A Java bytecode engineering library: ASM [1] 2 What is dynamic analysis? [3] The investigation of the properties of a running

More information

Method-Level Phase Behavior in Java Workloads

Method-Level Phase Behavior in Java Workloads Method-Level Phase Behavior in Java Workloads Andy Georges, Dries Buytaert, Lieven Eeckhout and Koen De Bosschere Ghent University Presented by Bruno Dufour dufour@cs.rutgers.edu Rutgers University DCS

More information

Foundations of Software Engineering

Foundations of Software Engineering Foundations of Software Engineering Dynamic Analysis Christian Kästner 1 15-313 Software Engineering Adminstrativa Midterm Participation Midsemester grades 2 15-313 Software Engineering How are we doing?

More information

What a Year! Java 10 and 10 Big Java Milestones

What a Year! Java 10 and 10 Big Java Milestones What a Year! Java 10 and 10 Big Java Milestones Java has made tremendous strides in the past 12 months, with exciting new features and capabilities for developers of all kinds. Table of Contents INTRODUCTION

More information

Bytecode Manipulation Techniques for Dynamic Applications for the Java Virtual Machine

Bytecode Manipulation Techniques for Dynamic Applications for the Java Virtual Machine Bytecode Manipulation Techniques for Dynamic Applications for the Java Virtual Machine Eugene Kuleshov, Terracotta Tim Eck, Terracotta Tom Ware, Oracle Corporation Charles Nutter, Sun Microsystems, Inc.

More information

The Z Garbage Collector Scalable Low-Latency GC in JDK 11

The Z Garbage Collector Scalable Low-Latency GC in JDK 11 The Z Garbage Collector Scalable Low-Latency GC in JDK 11 Per Lidén (@perliden) Consulting Member of Technical Staff Java Platform Group, Oracle October 24, 2018 Safe Harbor Statement The following is

More information

Zing Vision. Answering your toughest production Java performance questions

Zing Vision. Answering your toughest production Java performance questions Zing Vision Answering your toughest production Java performance questions Outline What is Zing Vision? Where does Zing Vision fit in your Java environment? Key features How it works Using ZVRobot Q & A

More information

SDK/RTE for Debian Linux on Intel Itanium Processors Release Notes

SDK/RTE for Debian Linux on Intel Itanium Processors Release Notes SDK/RTE 1.4.2.09 for Debian Linux on Intel Itanium Processors Release Notes HP Part Number: 5900-1453 Published: December 2010 Edition: 1.0 Copyright 2010 Hewlett-Packard Development Company, L.P. Legal

More information

Continuous delivery of Java applications. Marek Kratky Principal Sales Consultant Oracle Cloud Platform. May, 2016

Continuous delivery of Java applications. Marek Kratky Principal Sales Consultant Oracle Cloud Platform. May, 2016 Continuous delivery of Java applications using Oracle Cloud Platform Services Marek Kratky Principal Sales Consultant Oracle Cloud Platform May, 2016 Safe Harbor Statement The following is intended to

More information

Lab5. Wooseok Kim

Lab5. Wooseok Kim Lab5 Wooseok Kim wkim3@albany.edu www.cs.albany.edu/~wooseok/201 Question Answer Points 1 A or B 8 2 A 8 3 D 8 4 20 5 for class 10 for main 5 points for output 5 D or E 8 6 B 8 7 1 15 8 D 8 9 C 8 10 B

More information

Submitted to the Onward track of OOPSLA-03 ABSTRACT. Keywords

Submitted to the Onward track of OOPSLA-03 ABSTRACT. Keywords GUI Environments for Functional Languages Daniel J. Pless & George F. Luger University of New Mexico, Computer Science Ferris Engineering Center Albuquerque, NM 87131 (505) 277-9424 {dpless,luger}@cs.unm.edu

More information

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1

CSE P 501 Compilers. Java Implementation JVMs, JITs &c Hal Perkins Winter /11/ Hal Perkins & UW CSE V-1 CSE P 501 Compilers Java Implementation JVMs, JITs &c Hal Perkins Winter 2008 3/11/2008 2002-08 Hal Perkins & UW CSE V-1 Agenda Java virtual machine architecture.class files Class loading Execution engines

More information

SABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine p. 1

SABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine p. 1 SABLEJIT: A Retargetable Just-In-Time Compiler for a Portable Virtual Machine David Bélanger dbelan2@cs.mcgill.ca Sable Research Group McGill University Montreal, QC January 28, 2004 SABLEJIT: A Retargetable

More information

Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior

Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior Andrew J. Ko and Brad A. Myers School of Computer Science, Carnegie Mellon University Presenter: Shaosong Li

More information

Dynamic Memory Alloca/on: Basic Concepts

Dynamic Memory Alloca/on: Basic Concepts Dynamic Memory Alloca/on: Basic Concepts Fall 2015 Instructor: James Griffioen Adapted from slides by R. Bryant and D. O Hallaron (hip://csapp.cs.cmu.edu/public/instructors.html) 1 Today Basic concepts

More information

Efficient and Thread-Safe Objects for Dynamically-Typed Languages

Efficient and Thread-Safe Objects for Dynamically-Typed Languages *Evaluated*OOPSLA*Artifact*AEC Efficient and Thread-Safe Objects for Dynamically-Typed Languages toreuse* Consistent*Complete*WellDocumented*Easy Benoit Daloze Johannes Kepler University Linz, Austria

More information

Bugloo: A Source Level Debugger for Scheme Programs Compiled into JVM Bytecode

Bugloo: A Source Level Debugger for Scheme Programs Compiled into JVM Bytecode Bugloo: A Source Level Debugger for Scheme Programs Compiled into JVM Bytecode Damien Ciabrini Manuel Serrano firstname.lastname@sophia.inria.fr INRIA Sophia Antipolis 2004 route des Lucioles - BP 93 F-06902

More information

Ghostscript and MuPDF Status OpenPrinting Summit May Michael Vrhel, Ph.D. Artifex Software Inc. San Rafael CA

Ghostscript and MuPDF Status OpenPrinting Summit May Michael Vrhel, Ph.D. Artifex Software Inc. San Rafael CA Ghostscript and MuPDF Status OpenPrinting Summit May 2017 Michael Vrhel, Ph.D. Artifex Software Inc. San Rafael CA 1 Outline GS/MuPDF Overview Ghostscript or MuPDF Recent Updates to Ghostscript Work underway

More information

Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications

Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications M. Dmitriev Sun Microsystems Laboratories, 901 San Antonio Road, Palo Alto, CA 94303, USA Email: Mikhail.Dmitriev@Sun.COM

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

The G1 GC in JDK 9. Erik Duveblad Senior Member of Technical Staf Oracle JVM GC Team October, 2017

The G1 GC in JDK 9. Erik Duveblad Senior Member of Technical Staf Oracle JVM GC Team October, 2017 The G1 GC in JDK 9 Erik Duveblad Senior Member of Technical Staf racle JVM GC Team ctober, 2017 Copyright 2017, racle and/or its affiliates. All rights reserved. 3 Safe Harbor Statement The following is

More information