Mixed Mode Execution with Context Threading

Size: px
Start display at page:

Download "Mixed Mode Execution with Context Threading"

Transcription

1 Mixed Mode Execution with Context Threading Mathew Zaleski, Marc Berndl, Angela Demke Brown University of Toronto (CASCON 2005, Oct 19/2005.)

2 Overview Introduction Background: Interpretation Traces Our Approach Selecting Regions Results and Conclusion 2

3 VM performance Native code performs better than an interpreter. Ahead-of-time compilation not always possible. High-performance VMs interpret and compile. Hence term mixed-mode execution. Typically method-based. Perl, python, php, Tcl, JavaScript and many others do not run mixed-mode. Why? 3

4 VM complexity Switch interpreter Context Threaded interpreter Simple what about here? optimizing inlined method nests Complicated Much up-front effort needed before method-based JIT works JIT must be able to compile complete inlined method nests before performance benefit accrues. We aim to create a more incremental approach to building a mixed-mode system. 4

5 Vision of virtual machine lifecycle Begin with a high performance interpreter. Deploy modest system that compiles slow, hot, simple regions. Incrementally increase the size and generality of the regions. Requires flexible region shape. Should be able to fall back on interpretation To reduce complexity of compiler. 5

6 Incremental VM lifecycle Switch interpreter Context Threaded interpreter Basic Blocks Traces Partial methods? optimized inlined method nests Complexity of Compiled Code Regions Step up to more ambitious regions as required 6

7 Overview Introduction Background: Interpretation Traces Our Approach Selecting Regions Results and Conclusion 7

8 Where does bytecode come from? Java Source Java Bytecode int f(boolean parm){ if (parm){ return 42; }else{ return 0; } } Javac compiler int f(boolean); Code: 0: iload_1 1: ifeq 7 4: bipush 42 6: ireturn 7: iconst_0 8: ireturn 8

9 Interpreter Loaded Program fetch dispatch execute Load Parms Internal Representation Execution Cycle Bytecode bodies 9

10 Switched Interpreter while(1){ switch(*vpc++){ case iload_1:.. break; } }; case ifeq:.. break; //and many more.. slow. burdened by switch and loop overhead 10

11 Threading Dispatch int f(boolean); Code: 0: iload_1 1: ifeq 7 4: bipush 42 6: ireturn 7: iconst_0 8: ireturn iload_1:.. goto *vpc++; ifeq: if () vpc= goto *vpc++; bipush:.. goto *vpc++; ireturn:.. goto *vpc++; iconst_0:.. goto *vpc++; execution of virtual program threads through bodies (as in needle & thread) ireturn:.. goto *vpc++; No switch overhead. Still nasty indirect branch. 11

12 Direct Threaded Interpreter iload_1 ifeq 7 bipush 42 ireturn iconst_0 ireturn Virtual vpc Program DTT &&iload_1 &&ifeq 4 &&bipush 42 &&ireturn &&iconst_0 &&ireturn DTT - Direct Threading Table iload_1:.. goto *vpc++; ifeq: if () vpc= goto *vpc++; bipush:.. goto *vpc++; C implementation of each body Target of computed goto is data-driven 12

13 Essence of Subroutine Threading DTT 4 42 Context ThreadingTable CTT call iload_1 call ifeq call bipush call ireturn call iconst_0 call ireturn Bytecode bodies (ret terminated) iload_1:.. ret; ifeq: vpc=.. goto *vpc; We recently reported (CGO 2005) that on modern hardware (Pentium 4 and Power PC) dispatching virtual instruction bodies by calling them reduces branch mispredictions significantly. Package bodies as subroutines and call them 13

14 Generating specialized code in CTT vpc 4 if(eq) goto target: call bipush call target: target: Wayness Prediction also mobilized DTT Branch Inlined Into the CTT Specialized bodies can also be generated in CTT! 14

15 HP Dynamo Trace-oriented dynamic optimization system. HP PA-8000 computers. Counter-Intuitive approach: Don t execute optimized binary -- interpret it. Count transits of each reverse branch. Trace-generate straightened code. Dispatch traces when encountered. Soon, essentially all execution from cache. faster than binary! 15

16 Trace with if-then-else //c => b2 if (c) b1; else b2; b3; b1 c b3 c texit b1 b2 b3 b2 Trace contains path followed by conditional branches taken by program Conditional branches turn into assertions, or trace exits. Expect trace exits to be not taken. 16

17 Other Related work Ertl & Gregg Piumarta & Riccardi Vitale & Abdelrahman Bala, Duesterwald and Banerjia Whaley Many JIT authors 17

18 Overview Introduction Background: Interpretation & traces Our Approach Why Context Threading? Case study: Forward Branch. Selecting Regions Results and Conclusion 18

19 Technical Focus of this work Much research exists on dynamically generating high performance code from Java bytecode. Relatively little investigation of how to JIT variously shaped regions of a running program. Region selection; Dispatch and execution; Code generation. We concentrate on how to extend a CT interpreter to detect, translate and execute basic blocks and traces. 19

20 Context Threading was easy to program Three main reasons: 1. Bodies organized as callable routines. 2. The DTT always points to implementation. 3. CTT callsites provide a convenient interposition opportunity. 20

21 1. Bodies are callable Packaging bytecode bodies as lightweight subroutines call iload_1 call iload_1 specialized code for iadd call istore_1 iload_1:.. ret; istore:.. ret; Easy to intersperse generated code and dispatch. 21

22 2. DTT always points to implementation..of corresponding region of virtual program pc goto *pc //branches to iadd DTT CTT call iload_1 call iload_1 specialized code for iadd call istore_1 iload_1:.. ret; istore:.. ret; DTT/CTT correspondence enables soft link to dispatch code or body for a virtual instruction. 22

23 3. CTT provides for efficient interposition An Interposer is a generated trampoline DTT iload_1 call pre iload_1:.. ret; call iload_1 call post preworker(){ //instrument //or debug } postworker(){ //instrument //or debug } Regular C functions called between every dispatch 23

24 CT as basis for light-weight JIT Code can be generated: Inline in CTT. As new dynamically generated callable region. Interposers support profiling: Discover interesting regions at runtime. Rewrite DTT to soft link new code into program. 24

25 Overview Introduction Background: Interpretation & traces Our Approach Why Context Threading? Case study: Forward Branch. Selecting Regions Results and Conclusion 25

26 Case Study: Forward Branch Java Source Java Bytecode int f(boolean parm){ if (parm){ return 42; }else{ return 0; } } Javac compiler int f(boolean); Code: 0: iload_1 1: ifeq 7 4: bipush 42 6: ireturn 7: iconst_0 8: ireturn Address of destination needed to load branch 26

27 Loading Forward Branches CTT call iload_1 call jmp l0 lazy_inter call bipush 42 call ireturn l0: call iconst_0 call ireturn iload_1:; call ifeq ifeq:..pc=.. ret; call lazy lazy(){ //rewrite ctt //to relative } Runtime -- lazily rewrite code as relative branch 27

28 Overview Introduction Background: Interpretation & traces Our Approach Selecting Regions Basic Blocks Traces Results and Conclusion 28

29 Detecting basic blocks Detect basic blocks lazily. A virtual branch always ends a basic block Detect in post-worker of virtual branch. A basic block is always the destination of a virtual branch. Detect in pre-worker called before every nonbranching virtual instruction. 29

30 Detecting basic blocks ifeq: DTT call ifeq call post jmp *pc ifeq 4 iconst_0: post(){ curr_bb = 0; } iconst_0 ireturn call pre call iconst_0 ret pre(){ if (!curr_bb){ curr_bb = new_bb() } append_bb(); } 30

31 Generated code for a basic block DTT pre(){ //profile basic block } ifeq 4 call pre call bb1 jmp *pc iconst_0 ireturn mini-ctt-b1 call iconst_0 call ireturn ret Basic block is a run-time superinstruction 31

32 Overview Introduction Background: Interpretation & traces Our Approach Selecting Regions Basic Blocks Traces Results and Conclusion 32

33 Detecting Traces Use Dynamo s SPECL trace detection heuristic. Instrument reverse branches until they are hot. in postworker of virtual branch. Then trace generate in preworker of each basic block region 33

34 Traces DTT bb1 pre(){//profile trace} call pre call bb1 trace exit call bb2 jmp *pc bb2 mini-ctt-b1 call iconst_0 call ireturn ret mini-ctt-b2 call iconst_0 call ireturn ret A Trace is a run-time super-super-instruction 34

35 Code Generation The code generation as we have described it today is preliminary. We are actively working on a JIT that compiles basic blocks and traces into register allocated native code. Meanwhile, what can we learn from the current system? 35

36 Overview Introduction Background: Interpretation & traces Our Approach Selecting Regions Results and Conclusion 36

37 Run Time performance We built our system into two VMs (Pentium 4). Sablevm Ocaml 3.08 Region selection overhead is reasonable. VM Benchmark Suite Elapsed time to run whole suite Direct Threaded (sec) CT-trace (sec) Sablevm SpecJvm Ocaml shootout

38 Incremental VM lifecycle Context Threaded interpreter Basic Blocks Switch interpreter Traces Complexity of Compiled Code Regions Ready for a better code generator.. 38

39 Discussion Our system detects and executes basic blocks and traces. Paper discusses other shapes. Preliminary code generator shows: Flexible shapes are doable. Overheads are reasonable. Interesting to see how a better code generator effects performance. 39

40 Java histogram javac/methods % loaded code compress db mpegaudio scimark mtrt raytrace jess soot jack javac compress db mpegaudio scimark mtrt raytrace jess soot jack javac compress db mpegaudio scimark mtrt raytrace jess soot jack javac compress db mpegaudio scimark mtrt raytrace jess soot jack javac Benchmark and Region Shape compress db mpegaudio scimark mtrt raytrace jess soot jack javac bb cached method partial trace 40

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters : A flexible and efficient dispatch technique for virtual machine interpreters Marc Berndl Benjamin Vitale Mathew Zaleski Angela Demke Brown Research supported by IBM CAS, NSERC, CITO 1 Interpreter performance

More information

YETI. GraduallY Extensible Trace Interpreter VEE Mathew Zaleski, Angela Demke Brown (University of Toronto) Kevin Stoodley (IBM Toronto)

YETI. GraduallY Extensible Trace Interpreter VEE Mathew Zaleski, Angela Demke Brown (University of Toronto) Kevin Stoodley (IBM Toronto) YETI GraduallY Extensible Trace Interpreter Mathew Zaleski, Angela Demke Brown (University of Toronto) Kevin Stoodley (IBM Toronto) VEE 2007 1 Goal Create a VM that is more easily extended with a just

More information

YETI: a gradually Extensible Trace Interpreter

YETI: a gradually Extensible Trace Interpreter Thesis Proposal: YETI: a gradually Extensible Trace Interpreter Mathew Zaleski (for advisory committee meeting Jan 17/2007) 1 2 Contents 1 Introduction 7 1.1 Challenges of Efficient Interpretation.......................

More information

YETI: A GRADUALLY EXTENSIBLE TRACE INTERPRETER. Mathew Zaleski

YETI: A GRADUALLY EXTENSIBLE TRACE INTERPRETER. Mathew Zaleski YETI: A GRADUALLY EXTENSIBLE TRACE INTERPRETER by Mathew Zaleski A thesis submitted in conformity with the requirements for the degree of Doctor of Philosophy Graduate Department of Computer Science University

More information

YETI: A GRADUALLY EXTENSIBLE TRACE INTERPRETER. Mathew Zaleski

YETI: A GRADUALLY EXTENSIBLE TRACE INTERPRETER. Mathew Zaleski YETI: A GRADUALLY EXTENSIBLE TRACE INTERPRETER by Mathew Zaleski A thesis submitted in conformity with the requirements for the degree of Doctor of Philosophy Graduate Department of Computer Science University

More information

SUB SUB+BI SUB+BI+AR TINY. nucleic. genlex kb. Ocaml benchmark. (a) Pentium 4 Mispredicted Taken Branches. genlex. nucleic.

SUB SUB+BI SUB+BI+AR TINY. nucleic. genlex kb. Ocaml benchmark. (a) Pentium 4 Mispredicted Taken Branches. genlex. nucleic. 5.2. INTERPRETING THE DATA 69 +BI +BI+AR TINY MPT relative to Direct boyer fft fib genlex kb nucleic quicksort sieve Ocaml benchmark soli takc taku geomean (a) Pentium 4 Mispredicted Taken Branches LR/CTR

More information

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters

Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters Context Threading: A flexible and efficient dispatch technique for virtual machine interpreters Marc Berndl, Benjamin Vitale, Mathew Zaleski and Angela Demke Brown University of Toronto, Systems Research

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

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

Compiler construction 2009

Compiler construction 2009 Compiler construction 2009 Lecture 3 JVM and optimization. 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

More information

CS577 Modern Language Processors. Spring 2018 Lecture Interpreters

CS577 Modern Language Processors. Spring 2018 Lecture Interpreters CS577 Modern Language Processors Spring 2018 Lecture Interpreters 1 MAKING INTERPRETERS EFFICIENT VM programs have an explicitly specified binary representation, typically called bytecode. Most VM s can

More information

Compiler-guaranteed Safety in Code-copying Virtual Machines

Compiler-guaranteed Safety in Code-copying Virtual Machines Compiler-guaranteed Safety in Code-copying Virtual Machines Gregory B. Prokopski Clark Verbrugge School of Computer Science Sable Research Group McGill University Montreal, Canada International Conference

More information

Limits of Parallel Marking Garbage Collection....how parallel can a GC become?

Limits of Parallel Marking Garbage Collection....how parallel can a GC become? Limits of Parallel Marking Garbage Collection...how parallel can a GC become? Dr. Fridtjof Siebert CTO, aicas ISMM 2008, Tucson, 7. June 2008 Introduction Parallel Hardware is becoming the norm even for

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

Compiling Techniques

Compiling Techniques Lecture 10: Introduction to 10 November 2015 Coursework: Block and Procedure Table of contents Introduction 1 Introduction Overview Java Virtual Machine Frames and Function Call 2 JVM Types and Mnemonics

More information

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler

A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler A Trace-based Java JIT Compiler Retrofitted from a Method-based Compiler Hiroshi Inoue, Hiroshige Hayashizaki, Peng Wu and Toshio Nakatani IBM Research Tokyo IBM Research T.J. Watson Research Center April

More information

Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences

Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences Effective Inline-Threaded Interpretation of Java Bytecode Using Preparation Sequences Etienne Gagnon 1 and Laurie Hendren 2 1 Sable Research Group Université du Québec à Montréal, etienne.gagnon@uqam.ca

More information

CSc 453 Interpreters & Interpretation

CSc 453 Interpreters & Interpretation CSc 453 Interpreters & Interpretation Saumya Debray The University of Arizona Tucson Interpreters An interpreter is a program that executes another program. An interpreter implements a virtual machine,

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

Virtual Machine Showdown: Stack Versus Registers

Virtual Machine Showdown: Stack Versus Registers Virtual Machine Showdown: Stack Versus Registers 21 YUNHE SHI 1 and KEVIN CASEY Trinity College Dublin M. ANTON ERTL Technische Universität Wien and DAVID GREGG Trinity College Dublin Virtual machines

More information

H.-S. Oh, B.-J. Kim, H.-K. Choi, S.-M. Moon. School of Electrical Engineering and Computer Science Seoul National University, Korea

H.-S. Oh, B.-J. Kim, H.-K. Choi, S.-M. Moon. School of Electrical Engineering and Computer Science Seoul National University, Korea H.-S. Oh, B.-J. Kim, H.-K. Choi, S.-M. Moon School of Electrical Engineering and Computer Science Seoul National University, Korea Android apps are programmed using Java Android uses DVM instead of JVM

More information

Reducing the Overhead of Dynamic Compilation

Reducing the Overhead of Dynamic Compilation Reducing the Overhead of Dynamic Compilation Chandra Krintz y David Grove z Derek Lieber z Vivek Sarkar z Brad Calder y y Department of Computer Science and Engineering, University of California, San Diego

More information

Java On Steroids: Sun s High-Performance Java Implementation. History

Java On Steroids: Sun s High-Performance Java Implementation. History Java On Steroids: Sun s High-Performance Java Implementation Urs Hölzle Lars Bak Steffen Grarup Robert Griesemer Srdjan Mitrovic Sun Microsystems History First Java implementations: interpreters compact

More information

An Introduction to Multicodes. Ben Stephenson Department of Computer Science University of Western Ontario

An Introduction to Multicodes. Ben Stephenson Department of Computer Science University of Western Ontario An Introduction to Multicodes Ben Stephenson Department of Computer Science University of Western Ontario ben@csd csd.uwo.ca Outline Java Virtual Machine Background The Current State of the Multicode Art

More information

Eliminating Exception Constraints of Java Programs for IA-64

Eliminating Exception Constraints of Java Programs for IA-64 Eliminating Exception Constraints of Java Programs for IA-64 Kazuaki Ishizaki, Tatsushi Inagaki, Hideaki Komatsu,Toshio Nakatani IBM Research, Tokyo Research

More information

Swift: A Register-based JIT Compiler for Embedded JVMs

Swift: A Register-based JIT Compiler for Embedded JVMs Swift: A Register-based JIT Compiler for Embedded JVMs Yuan Zhang, Min Yang, Bo Zhou, Zhemin Yang, Weihua Zhang, Binyu Zang Fudan University Eighth Conference on Virtual Execution Environment (VEE 2012)

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

Experiences with Multi-threading and Dynamic Class Loading in a Java Just-In-Time Compiler

Experiences with Multi-threading and Dynamic Class Loading in a Java Just-In-Time Compiler , Compilation Technology Experiences with Multi-threading and Dynamic Class Loading in a Java Just-In-Time Compiler Daryl Maier, Pramod Ramarao, Mark Stoodley, Vijay Sundaresan TestaRossa JIT compiler

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

JOVE. An Optimizing Compiler for Java. Allen Wirfs-Brock Instantiations Inc.

JOVE. An Optimizing Compiler for Java. Allen Wirfs-Brock Instantiations Inc. An Optimizing Compiler for Java Allen Wirfs-Brock Instantiations Inc. Object-Orient Languages Provide a Breakthrough in Programmer Productivity Reusable software components Higher level abstractions Yield

More information

Reducing the Overhead of Dynamic Compilation

Reducing the Overhead of Dynamic Compilation Reducing the Overhead of Dynamic Compilation Chandra Krintz David Grove Derek Lieber Vivek Sarkar Brad Calder Department of Computer Science and Engineering, University of California, San Diego IBM T.

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

Trace-based JIT Compilation

Trace-based JIT Compilation Trace-based JIT Compilation Hiroshi Inoue, IBM Research - Tokyo 1 Trace JIT vs. Method JIT https://twitter.com/yukihiro_matz/status/533775624486133762 2 Background: Trace-based Compilation Using a Trace,

More information

Towards future method hotness prediction for Virtual Machines

Towards future method hotness prediction for Virtual Machines Towards future method hotness prediction for Virtual Machines Manjiri A. Namjoshi Submitted to the Department of Electrical Engineering & Computer Science and the Faculty of the Graduate School of the

More information

Project. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace

Project. there are a couple of 3 person teams. a new drop with new type checking is coming. regroup or see me or forever hold your peace Project there are a couple of 3 person teams regroup or see me or forever hold your peace a new drop with new type checking is coming using it is optional 1 Compiler Architecture source code Now we jump

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

Portable Resource Control in Java The J-SEAL2 Approach

Portable Resource Control in Java The J-SEAL2 Approach Portable Resource Control in Java The J-SEAL2 Approach Walter Binder w.binder@coco.co.at CoCo Software Engineering GmbH Austria Jarle Hulaas Jarle.Hulaas@cui.unige.ch Alex Villazón Alex.Villazon@cui.unige.ch

More information

A Quantitative Evaluation of the Contribution of Native Code to Java Workloads

A Quantitative Evaluation of the Contribution of Native Code to Java Workloads A Quantitative Evaluation of the Contribution of Native Code to Java Workloads Walter Binder University of Lugano Switzerland walter.binder@unisi.ch Jarle Hulaas, Philippe Moret EPFL Switzerland {jarle.hulaas,philippe.moret}@epfl.ch

More information

Portable Resource Control in Java: Application to Mobile Agent Security

Portable Resource Control in Java: Application to Mobile Agent Security Portable Resource Control in Java: Application to Mobile Agent Security Walter Binder CoCo Software Engineering GmbH Austria Jarle Hulaas, Alex Villazón, Rory Vidal University of Geneva Switzerland Requirements

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

FIST: A Framework for Instrumentation in Software Dynamic Translators

FIST: A Framework for Instrumentation in Software Dynamic Translators FIST: A Framework for Instrumentation in Software Dynamic Translators Naveen Kumar, Jonathan Misurda, Bruce R. Childers, and Mary Lou Soffa Department of Computer Science University of Pittsburgh Pittsburgh,

More information

Approximation of the Worst-Case Execution Time Using Structural Analysis. Matteo Corti and Thomas Gross Zürich

Approximation of the Worst-Case Execution Time Using Structural Analysis. Matteo Corti and Thomas Gross Zürich Approximation of the Worst-Case Execution Time Using Structural Analysis Matteo Corti and Thomas Gross Zürich Goal Worst-case execution time estimation of softreal time Java applications. We focus on semantic

More information

VM instruction formats. Bytecode translator

VM instruction formats. Bytecode translator Implementing an Ecient Java Interpreter David Gregg 1, M. Anton Ertl 2 and Andreas Krall 2 1 Department of Computer Science, Trinity College, Dublin 2, Ireland. David.Gregg@cs.tcd.ie 2 Institut fur Computersprachen,

More information

The Use of Traces in Optimization

The Use of Traces in Optimization The Use of Traces in Optimization by Borys Jan Bradel A thesis submitted in conformity with the requirements for the degree of Master of Applied Science Edward S. Rogers Sr. Department of Electrical and

More information

BEAMJIT: An LLVM based just-in-time compiler for Erlang. Frej Drejhammar

BEAMJIT: An LLVM based just-in-time compiler for Erlang. Frej Drejhammar BEAMJIT: An LLVM based just-in-time compiler for Erlang Frej Drejhammar 140407 Who am I? Senior researcher at the Swedish Institute of Computer Science (SICS) working on programming languages,

More information

A Quantitative Analysis of Java Bytecode Sequences

A Quantitative Analysis of Java Bytecode Sequences A Quantitative Analysis of Java Bytecode Sequences Ben Stephenson Wade Holst Department of Computer Science, University of Western Ontario, London, Ontario, Canada 1 Introduction A variety of studies have

More information

The Potentials and Challenges of Trace Compilation:

The Potentials and Challenges of Trace Compilation: Peng Wu IBM Research January 26, 2011 The Potentials and Challenges of Trace Compilation: Lessons learned from building a trace-jit on top of J9 JVM (Joint work with Hiroshige Hayashizaki and Hiroshi Inoue,

More information

Instrumentation in Software Dynamic Translators for Self-Managed Systems

Instrumentation in Software Dynamic Translators for Self-Managed Systems Instrumentation in Software Dynamic Translators for Self-Managed Systems Naveen Kumar, Jonathan Misurda, Bruce R. Childers Department of Computer Science University of Pittsburgh Pittsburgh, PA 15260 {naveen,jmisurda,childers}@cs.pitt.edu

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

ShortCut: Architectural Support for Fast Object Access in Scripting Languages

ShortCut: Architectural Support for Fast Object Access in Scripting Languages Jiho Choi, Thomas Shull, Maria J. Garzaran, and Josep Torrellas Department of Computer Science University of Illinois at Urbana-Champaign http://iacoma.cs.uiuc.edu ISCA 2017 Overheads of Scripting Languages

More information

JVM. What This Topic is About. Course Overview. Recap: Interpretive Compilers. Abstract Machines. Abstract Machines. Class Files and Class File Format

JVM. What This Topic is About. Course Overview. Recap: Interpretive Compilers. Abstract Machines. Abstract Machines. Class Files and Class File Format Course Overview What This Topic is About PART I: overview material 1 Introduction 2 Language processors (tombstone diagrams, bootstrapping) 3 Architecture of a compiler PART II: inside a compiler 4 Syntax

More information

Dynamic Selection of Application-Specific Garbage Collectors

Dynamic Selection of Application-Specific Garbage Collectors Dynamic Selection of Application-Specific Garbage Collectors Sunil V. Soman Chandra Krintz University of California, Santa Barbara David F. Bacon IBM T.J. Watson Research Center Background VMs/managed

More information

point in worrying about performance. The goal of our work is to show that this is not true. This paper is organised as follows. In section 2 we introd

point in worrying about performance. The goal of our work is to show that this is not true. This paper is organised as follows. In section 2 we introd A Fast Java Interpreter David Gregg 1, M. Anton Ertl 2 and Andreas Krall 2 1 Department of Computer Science, Trinity College, Dublin 2, Ireland. David.Gregg@cs.tcd.ie 2 Institut fur Computersprachen, TU

More information

The Segregated Binary Trees: Decoupling Memory Manager

The Segregated Binary Trees: Decoupling Memory Manager The Segregated Binary Trees: Decoupling Memory Manager Mehran Rezaei Dept. of Electrical and Computer Engineering University of Alabama in Huntsville Ron K. Cytron Department of Computer Science Washington

More information

Phase-based Adaptive Recompilation in a JVM

Phase-based Adaptive Recompilation in a JVM Phase-based Adaptive Recompilation in a JVM Dayong Gu Clark Verbrugge Sable Research Group, School of Computer Science McGill University, Montréal, Canada {dgu1, clump}@cs.mcgill.ca April 7, 2008 Sable

More information

IMPLEMENTING PARSERS AND STATE MACHINES IN JAVA. Terence Parr University of San Francisco Java VM Language Summit 2009

IMPLEMENTING PARSERS AND STATE MACHINES IN JAVA. Terence Parr University of San Francisco Java VM Language Summit 2009 IMPLEMENTING PARSERS AND STATE MACHINES IN JAVA Terence Parr University of San Francisco Java VM Language Summit 2009 ISSUES Generated method size in parsers Why I need DFA in my parsers Implementing DFA

More information

Recap: Printing Trees into Bytecodes

Recap: Printing Trees into Bytecodes Recap: Printing Trees into Bytecodes To evaluate e 1 *e 2 interpreter evaluates e 1 evaluates e 2 combines the result using * Compiler for e 1 *e 2 emits: code for e 1 that leaves result on the stack,

More information

The case for virtual register machines

The case for virtual register machines Science of Computer Programming 57 (2005) 319 338 www.elsevier.com/locate/scico The case for virtual register machines David Gregg a,,andrew Beatty a, Kevin Casey a,briandavis a, Andy Nisbet b a Department

More information

Exercise 7 Bytecode Verification self-study exercise sheet

Exercise 7 Bytecode Verification self-study exercise sheet Concepts of ObjectOriented Programming AS 2018 Exercise 7 Bytecode Verification selfstudy exercise sheet NOTE: There will not be a regular exercise session on 9th of November, because you will take the

More information

For our next chapter, we will discuss the emulation process which is an integral part of virtual machines.

For our next chapter, we will discuss the emulation process which is an integral part of virtual machines. For our next chapter, we will discuss the emulation process which is an integral part of virtual machines. 1 2 For today s lecture, we ll start by defining what we mean by emulation. Specifically, in this

More information

Deriving Code Coverage Information from Profiling Data Recorded for a Trace-based Just-in-time Compiler

Deriving Code Coverage Information from Profiling Data Recorded for a Trace-based Just-in-time Compiler Deriving Code Coverage Information from Profiling Data Recorded for a Trace-based Just-in-time Compiler Christian Häubl Institute for System Software Johannes Kepler University Linz Austria haeubl@ssw.jku.at

More information

SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE

SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE 1 SOFTWARE ARCHITECTURE 7. JAVA VIRTUAL MACHINE Tatsuya Hagino hagino@sfc.keio.ac.jp slides URL https://vu5.sfc.keio.ac.jp/sa/ Java Programming Language Java Introduced in 1995 Object-oriented programming

More information

Jazz: A Tool for Demand-Driven Structural Testing

Jazz: A Tool for Demand-Driven Structural Testing Jazz: A Tool for Demand-Driven Structural Testing J. Misurda, J. A. Clause, J. L. Reed, P. Gandra, B. R. Childers, and M. L. Soffa Department of Computer Science University of Pittsburgh Pittsburgh, Pennsylvania

More information

Lecture 9 Dynamic Compilation

Lecture 9 Dynamic Compilation Lecture 9 Dynamic Compilation I. Motivation & Background II. Overview III. Compilation Policy IV. Partial Method Compilation V. Partial Dead Code Elimination VI. Escape Analysis VII. Results Partial Method

More information

CS229 Project: TLS, using Learning to Speculate

CS229 Project: TLS, using Learning to Speculate CS229 Project: TLS, using Learning to Speculate Jiwon Seo Dept. of Electrical Engineering jiwon@stanford.edu Sang Kyun Kim Dept. of Electrical Engineering skkim38@stanford.edu ABSTRACT We apply machine

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

Intelligent Compilation

Intelligent Compilation Intelligent Compilation John Cavazos Department of Computer and Information Sciences University of Delaware Autotuning and Compilers Proposition: Autotuning is a component of an Intelligent Compiler. Code

More information

New Challenges in Microarchitecture and Compiler Design

New Challenges in Microarchitecture and Compiler Design New Challenges in Microarchitecture and Compiler Design Contributors: Jesse Fang Tin-Fook Ngai Fred Pollack Intel Fellow Director of Microprocessor Research Labs Intel Corporation fred.pollack@intel.com

More information

Code Generation Introduction

Code Generation Introduction Code Generation Introduction i = 0 LF w h i l e i=0 while (i < 10) { a[i] = 7*i+3 i = i + 1 lexer i = 0 while ( i < 10 ) source code (e.g. Scala, Java,C) easy to write Compiler (scalac, gcc) parser type

More information

JAM 16: The Instruction Set & Sample Programs

JAM 16: The Instruction Set & Sample Programs JAM 16: The Instruction Set & Sample Programs Copyright Peter M. Kogge CSE Dept. Univ. of Notre Dame Jan. 8, 1999, modified 4/4/01 Revised to 16 bits: Dec. 5, 2007 JAM 16: 1 Java Terms Java: A simple,

More information

Heuristics for Profile-driven Method- level Speculative Parallelization

Heuristics for Profile-driven Method- level Speculative Parallelization Heuristics for Profile-driven Method- level John Whaley and Christos Kozyrakis Stanford University Speculative Multithreading Speculatively parallelize an application Uses speculation to overcome ambiguous

More information

An Analysis of Basic Blocks within SPECjvm98 Applications

An Analysis of Basic Blocks within SPECjvm98 Applications An Analysis of Basic Blocks within SPECjvm98 Applications Jonathan Lambert Computer Science Dept. National University of Ireland Maynooth, Co. Kildare, Ireland jonathan@cs.nuim.ie James F. Power Computer

More information

On the Design of the Local Variable Cache in a Hardware Translation-Based Java Virtual Machine

On the Design of the Local Variable Cache in a Hardware Translation-Based Java Virtual Machine On the Design of the Local Variable Cache in a Hardware Translation-Based Java Virtual Machine Hitoshi Oi The University of Aizu June 16, 2005 Languages, Compilers, and Tools for Embedded Systems (LCTES

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

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

BEAMJIT, a Maze of Twisty Little Traces

BEAMJIT, a Maze of Twisty Little Traces BEAMJIT, a Maze of Twisty Little Traces A walk-through of the prototype just-in-time (JIT) compiler for Erlang. Frej Drejhammar 130613 Who am I? Senior researcher at the Swedish Institute

More information

Joeq Analysis Framework. CS 243, Winter

Joeq Analysis Framework. CS 243, Winter Joeq Analysis Framework CS 243, Winter 2009-2010 Joeq Background Compiler backend for analyzing and optimizing Java bytecode Developed by John Whaley and others Implemented in Java Research project infrastructure:

More information

Course Overview. PART I: overview material. PART II: inside a compiler. PART III: conclusion

Course Overview. PART I: overview material. PART II: inside a compiler. PART III: conclusion Course Overview PART I: overview material 1 Introduction (today) 2 Language Processors (basic terminology, tombstone diagrams, bootstrapping) 3 The architecture of a Compiler PART II: inside a compiler

More information

Phases in Branch Targets of Java Programs

Phases in Branch Targets of Java Programs Phases in Branch Targets of Java Programs Technical Report CU-CS-983-04 ABSTRACT Matthias Hauswirth Computer Science University of Colorado Boulder, CO 80309 hauswirt@cs.colorado.edu Recent work on phase

More information

Interaction of JVM with x86, Sparc and MIPS

Interaction of JVM with x86, Sparc and MIPS Interaction of JVM with x86, Sparc and MIPS Sasikanth Avancha, Dipanjan Chakraborty, Dhiral Gada, Tapan Kamdar {savanc1, dchakr1, dgada1, kamdar}@cs.umbc.edu Department of Computer Science and Electrical

More information

Debunking Dynamic Optimization Myths

Debunking Dynamic Optimization Myths Debunking Dynamic Optimization Myths Michael Hind (Material borrowed from 3 hr PLDI 04 Tutorial by Stephen Fink, David Grove, and Michael Hind. See those slides for more details.) September 15, 2004 Future

More information

Normalized Execution Time

Normalized Execution Time Architectural Issues in Java Runtime Systems R. Radhakrishnany, N. Vijaykrishnanz, L. K. Johny, A. Sivasubramaniamz ylaboratory for Computer Architecture Dept. of Electrical and Computer Engineering The

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

Phase-Based Adaptive Recompilation in a JVM

Phase-Based Adaptive Recompilation in a JVM Phase-Based Adaptive Recompilation in a JVM Dayong Gu dgu@cs.mcgill.ca School of Computer Science, McGill University Montréal, Québec, Canada Clark Verbrugge clump@cs.mcgill.ca ABSTRACT Modern JIT compilers

More information

Inlining Java Native Calls at Runtime

Inlining Java Native Calls at Runtime Inlining Java Native Calls at Runtime (CASCON 2005 4 th Workshop on Compiler Driven Performance) Levon Stepanian, Angela Demke Brown Computer Systems Group Department of Computer Science, University of

More information

Automatic Object Colocation Based on Read Barriers

Automatic Object Colocation Based on Read Barriers See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/221644818 Automatic Object Colocation Based on Read Barriers Conference Paper September 2006

More information

Alternative dispatch techniques for the Tcl VM Interpreter

Alternative dispatch techniques for the Tcl VM Interpreter Alternative dispatch techniques for the Tcl VM Interpreter Benjamin Vitale and Mathew Zaleski University of Toronto, Systems Research Lab {bv,matz}@cs.toronto.edu Abstract We compare the performance of

More information

HydraVM: Mohamed M. Saad Mohamed Mohamedin, and Binoy Ravindran. Hot Topics in Parallelism (HotPar '12), Berkeley, CA

HydraVM: Mohamed M. Saad Mohamed Mohamedin, and Binoy Ravindran. Hot Topics in Parallelism (HotPar '12), Berkeley, CA HydraVM: Mohamed M. Saad Mohamed Mohamedin, and Binoy Ravindran Hot Topics in Parallelism (HotPar '12), Berkeley, CA Motivation & Objectives Background Architecture Program Reconstruction Implementation

More information

Topics. Block Diagram of Mic-1 Microarchitecture. Review Sheet. Microarchitecture IJVM ISA

Topics. Block Diagram of Mic-1 Microarchitecture. Review Sheet. Microarchitecture IJVM ISA Topics Review Sheet Microarchitecture IJVM ISA 1 Block Diagram of Mic-1 Microarchitecture Datapath Part of CPU containing ALU, its inputs, and its outputs Purpose Implement the ISA level above it (macroarchitecture)

More information

Towards Parallel, Scalable VM Services

Towards Parallel, Scalable VM Services Towards Parallel, Scalable VM Services Kathryn S McKinley The University of Texas at Austin Kathryn McKinley Towards Parallel, Scalable VM Services 1 20 th Century Simplistic Hardware View Faster Processors

More information

CSE 237B Fall 2009 Virtualization, Security and RTOS. Rajesh Gupta Computer Science and Engineering University of California, San Diego.

CSE 237B Fall 2009 Virtualization, Security and RTOS. Rajesh Gupta Computer Science and Engineering University of California, San Diego. CSE 237B Fall 2009 Virtualization, Security and RTOS Rajesh Gupta Computer Science and Engineering University of California, San Diego. Overview What is virtualization? Types of virtualization and VMs

More information

Java byte code verification

Java byte code verification Java byte code verification SOS Master Science Informatique U. Rennes 1 Thomas Jensen SOS Java byte code verification 1 / 26 Java security architecture Java: programming applications with code from different

More information

Static Program Analysis

Static Program Analysis Static Program Analysis Thomas Noll Software Modeling and Verification Group RWTH Aachen University https://moves.rwth-aachen.de/teaching/ws-1617/spa/ Recap: Taking Conditional Branches into Account Extending

More information

Reducing Branch Costs via Branch Alignment

Reducing Branch Costs via Branch Alignment Reducing Branch Costs via Branch Alignment Brad Calder and Dirk Grunwald Department of Computer Science Campus Box 30 University of Colorado Boulder, CO 80309 030 USA fcalder,grunwaldg@cs.colorado.edu

More information

Software Speculative Multithreading for Java

Software Speculative Multithreading for Java Software Speculative Multithreading for Java Christopher J.F. Pickett and Clark Verbrugge School of Computer Science, McGill University {cpicke,clump}@sable.mcgill.ca Allan Kielstra IBM Toronto Lab kielstra@ca.ibm.com

More information

Adaptive Optimization using Hardware Performance Monitors. Master Thesis by Mathias Payer

Adaptive Optimization using Hardware Performance Monitors. Master Thesis by Mathias Payer Adaptive Optimization using Hardware Performance Monitors Master Thesis by Mathias Payer Supervising Professor: Thomas Gross Supervising Assistant: Florian Schneider Adaptive Optimization using HPM 1/21

More information

Performance Profiling

Performance Profiling Performance Profiling Minsoo Ryu Real-Time Computing and Communications Lab. Hanyang University msryu@hanyang.ac.kr Outline History Understanding Profiling Understanding Performance Understanding Performance

More information

Lecture 2: The Art of Emulation

Lecture 2: The Art of Emulation CSCI-GA.3033-015 Virtual Machines: Concepts & Applications Lecture 2: The Art of Emulation Mohamed Zahran (aka Z) mzahran@cs.nyu.edu http://www.mzahran.com Disclaimer: Many slides of this lecture are based

More information

Under the Hood: The Java Virtual Machine. Lecture 23 CS2110 Fall 2008

Under the Hood: The Java Virtual Machine. Lecture 23 CS2110 Fall 2008 Under the Hood: The Java Virtual Machine Lecture 23 CS2110 Fall 2008 Compiling for Different Platforms Program written in some high-level language (C, Fortran, ML,...) Compiled to intermediate form Optimized

More information