Effective Static Race Detection for Java. Part I. Chord. Chord. Chord. Chord - Overview. Problems addressed
|
|
- Daniella Allen
- 6 years ago
- Views:
Transcription
1 Eective Static Race Detection or Java Mayer Naik, Alex Aiken, John Whaley Part I Introduction to Chord and Preliminaries presented by Matt McGill Chord Chord Chord is a static (data) race detection tool or Java Problems addressed Open Programs Precision - minimizing alse positives Scalability - handling large programs Synchronization Idioms Counterexamples - making debugging less painul Chord Chord - Overview Input - OriginalPairs Synchronization Idioms supported lexically-scoped lock-based synchronization ork/join synchronization relying partially on user-supplied annotations wait/notiy synchronization reduces to lock-based synchronization in Java
2 Input - OriginalPairs Chord - Overview What are alias analysis/call-graph construction? Preliminaries: Data Flow Analyses Call-graph construction Alias analysis For each method, which other methods call it? Doesn t sound so bad? Undecidable. For each abstract memory location, determine the set o L-value expressions that alias it at each program point. Also undecidable. We calculate approximations Preliminaries: Data Flow Analyses Call-graph construction Alias analysis For each method, which other methods may call it? For each abstract memory location, determine the set o L-value expressions that may alias it at each program point. There are many techniques or solving these problems with varying degrees o precision Intraprocedural Analyses Intraprocedural analyses examine individual procedures using control low graphs (CFG) List map(f, List lst) { List nlst = new ArrayList(); or (int i=0; i<lst.size(); i++) { Object arg = lst.get(i); Object result =.apply(arg); nlst.add(result); return nlst; alse Entry List nlst=new ArrayList(); or (int i=0; i<lst.size(); Object arg = lst.get(i); Object result=.apply(arg); nlst.add(result); i++; true return nlst; Exit Intraprocedural Analysis Interprocedural Analyses Data low analysis represents the low o data between program points as a system o equations Provided the equations meet certain criteria, the equations can be solved using an iterative method For call-graph construction/alias analysis to be remotely useul, we must identiy and utilize relationships among procedures alse Entry List nlst=new ArrayList(); or (int i=0; i<lst.size(); true Object obj = lst.get(i); Object nobj=.apply(obj); nlst.add(nobj); i++; return nlst; Exit Interprocedural analysis techniques can be categorized according to: low sensitivity - does the analysis make use o control low within procedures? context sensitivity - does the analysis compute dierent results or methods based on context inormation (typically call sites)?
3 Chord Object Sensitivity Chord is low-insensitive Chord is context-sensitive Not in the traditional way! Chord instead uses k-object sensitivity, a relatively recent notion o context tailored to the needs objectoriented programs class X {... class Y { X ; void set(x x) { 1: this. = x; public static void 2: X x1 = new X(); //s1 3: X x2 = new X(); //s2 4: Y y1 = new Y(); //s3 5: Y y2 = new Y(); //s4 6: y1.set(x1); 7: y2.set(x2); Flow-insensitive, contextinsensitive alias analysis might iner: x1 x x2 y1 y2 this o1 o3 o2 o4 Object Sensitivity Object Sensitivity For an allocation site si in a method m, an object name oij is created or every allocation site sj that creates an object that m could be called on. Each object name is equated with a context. Each method m is analyzed separately or each context in which it could be called. class W {... class X {... class Y { void oo(x x) { 1: W w = new W(); //s5 2: w.bar(x); public static void 3: X x1 = new X(); //s1 4: X x2 = new X(); //s2 5: Y y1 = new Y(); //s3 6: Y y2 = new Y(); //s4 7: y1.oo(x1); 8: y2.oo(x2); Object names are used as contexts in which to analyze methods o1! o2! Contexts bar contexts o3! o4! o53 o54 oo contexts k-object Sensitivity We just described k-object sensitivity or k=1 For higher k, increase the maximum length o the allocation-site chain (i.e. the number o subscripts on your object names, or the number o levels o indirection you re ollowing) Common OO design patterns such as Visitor harm precision or k=1 Authors ound k=3 to be suitable balance or detecting data races with useul precision Eicient k-object Sensitivity Publicly available k-object sensitivity tools ran out o memory or k=1 Authors expressed k-object sensitive alias analysis (and other analyses, and race detection algorithm) in Datalog, a logic programming language similar to Prolog Used Datalog implementation bddbddb based on Binary Decision Diagrams to achieve scalability
4 Overview Input - OriginalPairs Part II Four Stages o the Race Detection Algorithm Closing Open Programs Closing Open Programs 1. Declare a local variable o each type allowed as argument or return value o any method in the interaces to be checked 2. Assign an object to each reerence variable 3. Invoke each method in external interace on each legal combination o local reerence variables Problems with closing open programs: missing callees missing callers The method described is unsound (but in practice that s OK!) Question: how does this aect useulness the authors stated goal o adding low sensitivity at a later point? public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); + (new A()).wr(1); Running Example i (*) a=new A(); public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); + (new A()).wr(1); OriginalPairs Intuitively, we start with every pair o memory accesses to the same ield/array element that aren t immediately ruled out by Java s typing rules
5 OriginalPairs i (*) a=new A(); public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); + (new A()).wr(1); Prune all pairs o memory accesses (e1, e2) that cannot take place in dierent threads We ll cover this stage in detail, look at examples or the others OriginalPairs=((r,w),(w,w),(r,w ),(w, w ),(w, w )) We start with: a unction rom call sites (and accesses) to containing methods A unction rom call sites and contexts to pairs o callee methods and contexts A set o call sites that spawn threads Next we deine thread insensitive and sensitive relations rom call sites/contexts to methods/ contexts directly... And do something similar to transitive closure to obtain relations rom call sites/contexts to methods/contexts indirectly: Next, compute the roots, thread-spawning call sites reachable rom main: Finally, retain pairs only i each access is reachable, without switching threads, rom a root:
6 i (*) a=new A(); //ca! public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); =((r,w),(w,w),(r,w ),(w, w ),(w, w )) Why? = ((r,ca!,w,ca!), (r,ca!,w,cba) (w,ca!,w,ca!) (w,ca!,w,cba) (w,cba,w,ca!)(w,cba,w,cba)) AliasingPairs Intuitively: remove all pairs that alias analysis shows cannot access the same abstract object as is commonly done, all reerences to static ield reerences are treated as i perormed on a single dummy object individual elements in arrays are merged AliasingPairs i (*) a=new A(); //ca! public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); AliasingPairs=((r,w),(w,w)) AliasingPairs = ((r,ca!,w,ca!), (r,ca!,w,cba) (w,ca!,w,ca!) (w,ca!,w,cba) (w,cba,w,ca!)(w,cba,w,cba)) EscapingPairs Intuitively: prune pairs that do not access thread-shared data Implemented in 3(!!) lines o Datalog EscapingPairs i (*) a=new A(); //ca! public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); EscapingPairs=((r,w),(w,w)) EscapingPairs = ((r,ca!,w,ca!),(w,ca!,w,ca!),(w,cba,w,cba)) UnlockedPairs Intuitively: prune pairs o accesses that are always protected by a common lock Can be thought o as a static approximation o the Lockset technique To do this soundly requires a must-alias analysis, but they substitute their may-alias analysis Authors reported that no alse negatives resulted rom this simpliication during their testing
7 UnlockedPairs=((r,w),(w,w)) UnlockedPairs = ((r,ca!,w,ca!),(w,ca!,w,ca!)) UnlockedPairs i (*) a=new A(); //ca! public A() { this.=0; //w private int rd() { return this.; //r return x; public int get() { return this.rd(); Reporting Races Paths through context-sensitive call graph are used to provide a stack trace or each potential data race Races are classiied by ield and by (abstract) object Identiication o the allocation site or objects involved in races should aid debugging Sources o Unsoundness Part III Evaluation may-analysis instead o must-analysis in ourth stage method o closing open programs does not model all possibilities potential races in constructors/initializers are ignored no attempt to deal with relection or dynamic class loading Perormance runtime was typically around one minute Apache Derby (~640KLOC) took 26 minutes memory consumption was unreported; test machine had 4GB was Derby pushing the complexity limits o the BDD solver, or did that analysis suer rom disk paging perormance hits? Observations Number o reported problems was very reasonable given program sizes escape analysis had negligible impact in about hal o the analyses the ability to check parts o programs at an arbitrary level o granularity makes Chord a very scalable tool
A Classification System and Analysis for Aspect-Oriented Programs
A Classiication System and Analysis or Aspect-Oriented Programs Martin Rinard, Alexandru Sălcianu, and Suhabe Bugrara Massachusetts Institute o Technology Cambridge, MA 02139 ABSTRACT We present a new
More informationInterprocedural Analysis with Data-Dependent Calls. Circularity dilemma. A solution: optimistic iterative analysis. Example
Interprocedural Analysis with Data-Dependent Calls Circularity dilemma In languages with function pointers, first-class functions, or dynamically dispatched messages, callee(s) at call site depend on data
More informationThe Java Memory Model
Jeremy Manson 1, William Pugh 1, and Sarita Adve 2 1 University of Maryland 2 University of Illinois at Urbana-Champaign Presented by John Fisher-Ogden November 22, 2005 Outline Introduction Sequential
More informationOOPLs - call graph construction. Example executed calls
OOPLs - call graph construction Compile-time analysis of reference variables and fields Problem: how to resolve virtual function calls? Need to determine to which objects (or types of objects) a reference
More informationIntroduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt www.introsoftwaretesting.com OO Software and Designs Emphasis on modularity and reuse puts complexity
More informationAdvanced Compiler Construction
CS 526 Advanced Compiler Construction http://misailo.cs.illinois.edu/courses/cs526 INTERPROCEDURAL ANALYSIS The slides adapted from Vikram Adve So Far Control Flow Analysis Data Flow Analysis Dependence
More informationEFFECTIVE STATIC RACE DETECTION FOR JAVA
EFFECTIVE STATIC RACE DETECTION FOR JAVA A DISSERTATION SUBMITTED TO THE DEPARTMENT OF COMPUTER SCIENCE AND THE COMMITTEE ON GRADUATE STUDIES OF STANFORD UNIVERSITY IN PARTIAL FULFILLMENT OF THE REQUIREMENTS
More informationStatic Program Analysis Part 9 pointer analysis. Anders Møller & Michael I. Schwartzbach Computer Science, Aarhus University
Static Program Analysis Part 9 pointer analysis Anders Møller & Michael I. Schwartzbach Computer Science, Aarhus University Agenda Introduction to points-to analysis Andersen s analysis Steensgaards s
More informationCA Compiler Construction
CA4003 - Compiler Construction David Sinclair When procedure A calls procedure B, we name procedure A the caller and procedure B the callee. A Runtime Environment, also called an Activation Record, is
More informationMaking Context-sensitive Points-to Analysis with Heap Cloning Practical For The Real World
Making Context-sensitive Points-to Analysis with Heap Cloning Practical For The Real World Chris Lattner Apple Andrew Lenharth UIUC Vikram Adve UIUC What is Heap Cloning? Distinguish objects by acyclic
More informationInterprocedural Analysis with Data-Dependent Calls. Circularity dilemma. A solution: optimistic iterative analysis. Example
Interprocedural Analysis with Data-Dependent Calls Circularity dilemma In languages with function pointers, first-class functions, or dynamically dispatched messages, callee(s) at call site depend on data
More information10. SOPC Builder Component Development Walkthrough
10. SOPC Builder Component Development Walkthrough QII54007-9.0.0 Introduction This chapter describes the parts o a custom SOPC Builder component and guides you through the process o creating an example
More informationPre-defined class JFrame. Object & Class an analogy
CS1M Lecture 17 Mar 29, 25 1 Announcements: Project 4 due Sunda 4/3 at 6pm Use Keboard class or reading input Section in classrooms this week Previous Lecture: Selection statement Reading input using Keboard
More informationCO444H. Ben Livshits. Datalog Pointer analysis
CO444H Ben Livshits Datalog Pointer analysis 1 Call Graphs Class analysis: Given a reference variable x, what are the classes of the objects that x refers to at runtime? We saw CHA and RTA Deal with polymorphic/virtual
More informationCompositional Pointer and Escape Analysis for Java Programs
Compositional Pointer and Escape Analysis for Java Programs based on the paper by John Whaley and Martin Rinard presented by Natalia Prytkova 28.06.2010 Universität des Saarlandes Motivation The aim: Optimization
More informationWritten by John Bell for CS 342, Spring 2018
Advanced OO Concepts Written by John Bell for CS 342, Spring 2018 Based on chapter 3 of The Object-Oriented Thought Process by Matt Weisfeld, with additional material from other sources. Constructors Constructors
More informationDavid Glasser Michael D. Ernst CSAIL, MIT
static dynamic intraprocedural interprocedural Shay Artzi, Adam Kiezun, David Glasser Michael D. Ernst CSAIL, MIT Parameter P of method M is: Mutable if some execution of M can change the state of P s
More informationOptimistic Hybrid Analysis
Optimistic Hybrid Analysis David Devecsery, Peter M. Chen, Satish Narayanasamy, Jason Flinn University of Michigan Motivation Problem Dynamic analysis is essential Memory errors Buffer overflow, use-after-free,
More informationComputing Approximate Happens-Before Order with Static and Dynamic Analysis
Department of Distributed and Dependable Systems Technical report no. D3S-TR-2013-06 May 7, 2018 Computing Approximate Happens-Before Order with Static and Dynamic Analysis Pavel Parízek, Pavel Jančík
More informationStatic Analysis of Embedded C
Static Analysis of Embedded C John Regehr University of Utah Joint work with Nathan Cooprider Motivating Platform: TinyOS Embedded software for wireless sensor network nodes Has lots of SW components for
More informationConnecting Definition and Use? Tiger Semantic Analysis. Symbol Tables. Symbol Tables (cont d)
Tiger source program Tiger Semantic Analysis lexical analyzer report all lexical errors token get next token parser construct variable deinitions to their uses report all syntactic errors absyn checks
More informationR O O T S Interprocedural Analysis
R O O T S Interprocedural Analysis Aleksandra Biresev s6albire@cs.uni-bonn.de Interprocedural Analysis An interprocedural analysis operates across an entire program, flowing information from call sites
More informationMethod Invocation. Zheng-Liang Lu Java Programming 189 / 226
Method Invocation Note that the input parameters are sort of variables declared within the method as placeholders. When calling the method, one needs to provide arguments, which must match the parameters
More informationCloning-Based Context-Sensitive Pointer Alias Analysis using BDDs
More Pointer Analysis Last time Flow-Insensitive Pointer Analysis Inclusion-based analysis (Andersen) Today Class projects Context-Sensitive analysis March 3, 2014 Flow-Insensitive Pointer Analysis 1 John
More informationEscape Analysis for Java
Escape Analysis for Java Michael Bohn Based on the paper by Jong-Deok Choi, Manish Gupta, Mauricio Serrano, Vugranam Sreedhar and Sam Midkiff Escape Analysis? What is Escape Analysis and why do I need
More informationStatic Analysis Basics II
Systems and Internet Infrastructure Security Network and Security Research Center Department of Computer Science and Engineering Pennsylvania State University, University Park PA Static Analysis Basics
More informationExtra notes on Field- sensitive points- to analysis with inclusion constraints Sept 9, 2015
Extra notes on Field- sensitive points- to analysis with inclusion constraints Sept 9, 2015 Week 3 CS6304 The Rountev et al. paper at OOPSLA 2000 extended Andersen s points- to analysis for C programs
More informationStatic Methods. Why use methods?
Static Methods A method is just a collection of code. They are also called functions or procedures. It provides a way to break a larger program up into smaller, reusable chunks. This also has the benefit
More informationCSE 501 Midterm Exam: Sketch of Some Plausible Solutions Winter 1997
1) [10 pts] On homework 1, I asked about dead assignment elimination and gave the following sample solution: 8. Give an algorithm for dead assignment elimination that exploits def/use chains to work faster
More informationScalable Program Analysis Using Boolean Satisfiability: The Saturn Project
Scalable Program Analysis Using Boolean Satisfiability: The Saturn Project Alex Aiken Stanford University Saturn 1 The Idea Verify properties of large systems! Doesn t {SLAM, BLAST, CQual, ESP} already
More informationAP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS
AP COMPUTER SCIENCE JAVA CONCEPTS IV: RESERVED WORDS PAUL L. BAILEY Abstract. This documents amalgamates various descriptions found on the internet, mostly from Oracle or Wikipedia. Very little of this
More informationCIT Week13 Lecture
CIT 3136 - Week13 Lecture Runtime Environments During execution, allocation must be maintained by the generated code that is compatible with the scope and lifetime rules of the language. Typically there
More informationCompiler construction
This lecture Compiler construction Lecture 5: Project etensions Magnus Mreen Spring 2018 Chalmers Universit o Technolog Gothenburg Universit Some project etensions: Arras Pointers and structures Object-oriented
More informationJavarifier: inference of reference immutability
print(object x) { print(@readonly Object x) { Javarifier: inference of reference immutability Jaime Quinonez Matthew S. Tschantz Michael D. Ernst MIT Security code in JDK 1.1 class Class { private Object[]
More informationCombined Static and Dynamic Mutability Analysis 1/31
Combined Static and Dynamic Mutability Analysis SHAY ARTZI, ADAM KIEZUN, DAVID GLASSER, MICHAEL D. ERNST ASE 2007 PRESENTED BY: MENG WU 1/31 About Author Program Analysis Group, Computer Science and Artificial
More informationCompilers. 8. Run-time Support. Laszlo Böszörmenyi Compilers Run-time - 1
Compilers 8. Run-time Support Laszlo Böszörmenyi Compilers Run-time - 1 Run-Time Environment A compiler needs an abstract model of the runtime environment of the compiled code It must generate code for
More informationUsing VCS with the Quartus II Software
Using VCS with the Quartus II Sotware December 2002, ver. 1.0 Application Note 239 Introduction As the design complexity o FPGAs continues to rise, veriication engineers are inding it increasingly diicult
More informationReference Analyses. VTA - Variable Type Analysis
Reference Analyses Variable Type Analysis for Java Related points-to analyses for C Steengaard Andersen Field-sensitive points-to for Java Object-sensitive points-to for Java Other analysis approaches
More informationCOMP1008 Exceptions. Runtime Error
Runtime Error COMP1008 Exceptions Unexpected error that terminates a program. Undesirable Not detectable by compiler. Caused by: Errors in the program logic. Unexpected failure of services E.g., file server
More informationTracking Pointers with Path and Context Sensitivity for Bug Detection in C Programs. {livshits,
Tracking Pointers with Path and Context Sensitivity for Bug Detection in C Programs {livshits, lam}@cs.stanford.edu 2 Background Software systems are getting bigger Harder to develop Harder to modify Harder
More informationSection III. Advanced Programming Topics
Section III. Advanced Programming Topics This section provides inormation about several advanced embedded programming topics. It includes the ollowing chapters: Chapter 8, Exception Handling Chapter 9,
More informationCMSC 433 Section 0101 Fall 2012 Midterm Exam #1
Name: CMSC 433 Section 0101 Fall 2012 Midterm Exam #1 Directions: Test is closed book, closed notes. Answer every question; write solutions in spaces provided. Use backs of pages for scratch work. Good
More informationLecture Notes: Pointer Analysis
Lecture Notes: Pointer Analysis 15-819O: Program Analysis Jonathan Aldrich jonathan.aldrich@cs.cmu.edu Lecture 9 1 Motivation for Pointer Analysis In programs with pointers, program analysis can become
More informationAlias Analysis. Advanced Topics. What is pointer analysis? Last Time
Advanced Topics Last Time Experimental Methodology Today What s a managed language? Alias Analysis - dealing with pointers Focus on statically typed managed languages Method invocation resolution Alias
More informationIntroduction to Object-Oriented Programming
Introduction to Object-Oriented Programming Recursion Christopher Simpkins chris.simpkins@gatech.edu CS 1331 (Georgia Tech) Recursion 1 / 11 Recursion A recursive processes or data structure is defined
More informationSharing is the Key. Lecture 25: Parallelism. Canonical Example. Bad Interleavings. Common to have: CS 62 Fall 2016 Kim Bruce & Peter Mawhorter
Sharing is the Key Lecture 25: Parallelism CS 62 Fall 2016 Kim Bruce & Peter Mawhorter Some slides based on those from Dan Grossman, U. of Washington Common to have: Different threads access the same resources
More informationInstance keys: A technique for sharpening whole-program pointer analyses with intraprocedural information
McGill University School of Computer Science Sable Research Group Instance keys: A technique for sharpening whole-program pointer analyses with intraprocedural information Sable Technical Report No. 2007-8
More informationInterprocedural Analysis. CS252r Fall 2015
Interprocedural Analysis CS252r Fall 2015 Procedures So far looked at intraprocedural analysis: analyzing a single procedure Interprocedural analysis uses calling relationships among procedures Enables
More informationOperational Semantics of Cool
Operational Semantics of Cool Key Concepts semantics: the meaning of a program, what does program do? how the code is executed? operational semantics: high level code generation steps of calculating values
More informationStructured Parallel Programming with Deterministic Patterns
Structured Parallel Programming with Deterministic Patterns May 14, 2010 USENIX HotPar 2010, Berkeley, Caliornia Michael McCool, Sotware Architect, Ct Technology Sotware and Services Group, Intel Corporation
More informationFunctional Programming in Java. CSE 219 Department of Computer Science, Stony Brook University
Functional Programming in Java CSE 219, Stony Brook University What is functional programming? There is no single precise definition of functional programming (FP) We should think of it as a programming
More informationCMPSC 497: Static Analysis
CMPSC 497: Static Analysis Trent Jaeger Systems and Internet Infrastructure Security (SIIS) Lab Computer Science and Engineering Department Pennsylvania State University Page 1 Our Goal In this course,
More informationContext-sensitive points-to analysis: is it worth it?
McGill University School of Computer Science Sable Research Group Context-sensitive points-to analysis: is it worth it? Sable Technical Report No. 2005-2 Ondřej Lhoták Laurie Hendren October 21, 2005 w
More information9.3 Transform Graphs of Linear Functions Use this blank page to compile the most important things you want to remember for cycle 9.
9. Transorm Graphs o Linear Functions Use this blank page to compile the most important things you want to remember or cycle 9.: Sec Math In-Sync by Jordan School District, Utah is licensed under a 6 Function
More informationStatic Analysis of Embedded C Code
Static Analysis of Embedded C Code John Regehr University of Utah Joint work with Nathan Cooprider Relevant features of C code for MCUs Interrupt-driven concurrency Direct hardware access Whole program
More informationStatus. We ll do code generation first... Outline
Status Run-time Environments Lecture 11 We have covered the ront-end phases Lexical analysis Parsin Semantic analysis Next are the back-end phases Optimization Code eneration We ll do code eneration irst...
More informationAgenda. 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 informationW4118: concurrency error. Instructor: Junfeng Yang
W4118: concurrency error Instructor: Junfeng Yang Goals Identify patterns of concurrency errors (so you can avoid them in your code) Learn techniques to detect concurrency errors (so you can apply these
More informationCS1150 Principles of Computer Science Methods
CS1150 Principles of Computer Science Methods Yanyan Zhuang Department of Computer Science http://www.cs.uccs.edu/~yzhuang CS1150 UC. Colorado Springs Opening Problem Find the sum of integers from 1 to
More informationThe return Statement
The return Statement The return statement is the end point of the method. A callee is a method invoked by a caller. The callee returns to the caller if the callee completes all the statements (w/o a return
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Memory Management and Garbage Collection CMSC 330 - Spring 2013 1 Memory Attributes! Memory to store data in programming languages has the following lifecycle
More informationFlow-sensitive rewritings and Inliner improvements for the Graal JIT compiler
1 / 25 Flow-sensitive rewritings and for the Graal JIT compiler Miguel Garcia http://lampwww.epfl.ch/~magarcia/ 2014-07-07 2 / 25 Outline Flow-sensitive rewritings during HighTier Example Rewritings in
More informationWrite Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, rinard@lcs.mit.edu ABSTRACT We present
More informationCS 4120 Lecture 31 Interprocedural analysis, fixed-point algorithms 9 November 2011 Lecturer: Andrew Myers
CS 4120 Lecture 31 Interprocedural analysis, fixed-point algorithms 9 November 2011 Lecturer: Andrew Myers These notes are not yet complete. 1 Interprocedural analysis Some analyses are not sufficiently
More informationEstimating the Impact of Heap Liveness Information on Space Consumption in Java
Estimating the Impact of Heap Liveness Information on Space Consumption in Java by R. Shaham, E. Kolodner and M. Sagiv first presented at ISSM'02 presentation: Adrian Moos Contents what is this about?
More informationReflection and Refraction
Relection and Reraction Object To determine ocal lengths o lenses and mirrors and to determine the index o reraction o glass. Apparatus Lenses, optical bench, mirrors, light source, screen, plastic or
More informationADVANCED SOFTWARE ENGINEERING CS561 Danny Dig
ADVANCED SOFTWARE ENGINEERING CS561 TUE/THU @4PM, Danny Dig QUIZ #1 - Write down your name - Grad Program (e.g., EECS PhD, EECS MS) and year of study - What are your expectations from the class? 2 Software
More informationConditional Must Not Aliasing for Static Race Detection
Conditional Must Not Aliasing for Static Race Detection Mayur Naik Alex Aiken Computer Science Department Stanford University {mhn,aiken}@cs.stanford.edu Abstract Race detection algorithms for multi-threaded
More informationRefinement-Based Context-Sensitive Points-To Analysis for Java
Refinement-Based Context-Sensitive Points-To Analysis for Java Manu Sridharan University of California, Berkeley manu_s@cs.berkeley.edu Rastislav Bodík University of California, Berkeley bodik@cs.berkeley.edu
More informationOOPLs - call graph construction Compile-time analysis of reference variables and fields. Example
OOPLs - call graph construction Compile-time analysis of reference variables and fields Determines to which objects (or types of objects) a reference variable may refer during execution Primarily hierarchy-based
More informationLecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Lecture 13. Notation. The rules. Evaluation Rules So Far
Lecture Outline Operational Semantics of Cool Lecture 13 COOL operational semantics Motivation Notation The rules Prof. Aiken CS 143 Lecture 13 1 Prof. Aiken CS 143 Lecture 13 2 Motivation We must specify
More informationCSC 2400: Computer Systems. Using the Stack for Function Calls
CSC 24: Computer Systems Using the Stack for Function Calls Lecture Goals Challenges of supporting functions! Providing information for the called function Function arguments and local variables! Allowing
More informationStatic Versioning of Global State for Race Condition Detection
Static Versioning of Global State for Race Condition Detection Steffen Keul Dept. of Programming Languages and Compilers Institute of Software Technology University of Stuttgart 15 th International Conference
More informationProgramming Languages
Programming Languages Tevfik Koşar Lecture - VIII February 9 th, 2006 1 Roadmap Allocation techniques Static Allocation Stack-based Allocation Heap-based Allocation Scope Rules Static Scopes Dynamic Scopes
More informationDynamic Data Structures. John Ross Wallrabenstein
Dynamic Data Structures John Ross Wallrabenstein Recursion Review In the previous lecture, I asked you to find a recursive definition for the following problem: Given: A base10 number X Assume X has N
More informationRegion Analysis for Imperative Languages
Region Analysis for Imperative Languages Radu Rugina and Sigmund Cherem Computer Science Department Cornell University Ithaca, NY 14853 {rugina,siggi}@cs.cornell.edu Abstract This paper presents a region
More informationDefinition. Pointers. Outline. Why pointers? Definition. Memory Organization Overview. by Ziad Kobti. Definition. Pointers enable programmers to:
Pointers by Ziad Kobti Deinition When you declare a variable o any tye, say: int = ; The system will automatically allocated the required memory sace in a seciic location (tained by the system) to store
More informationPrinciples of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004
Principles of Programming Languages Topic: Scope and Memory Professor Louis Steinberg Fall 2004 CS 314, LS,BR,LTM: Scope and Memory 1 Review Functions as first-class objects What can you do with an integer?
More informationCompilers. Cool Semantics II. Alex Aiken
Compilers Informal semantics of new T Allocate locations to hold all attributes of an object of class T Essentially, allocate a new object Set attributes with their default values Evaluate the initializers
More informationFaculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology
Faculty of Electrical Engineering, Mathematics, and Computer Science Delft University of Technology exam Compiler Construction in4020 July 5, 2007 14.00-15.30 This exam (8 pages) consists of 60 True/False
More informationType Checking Binary Operators
Type Checking Binary Operators binaryopnode expr tree expr tree Type checking steps: 1. Type check left and right operands. 2. Check that left and right operands are both scalars. 3. binaryopnode.kind
More informationChapter 6 Parallel Loops
Chapter 6 Parallel Loops Part I. Preliminaries Part II. Tightly Coupled Multicore Chapter 6. Parallel Loops Chapter 7. Parallel Loop Schedules Chapter 8. Parallel Reduction Chapter 9. Reduction Variables
More informationCS240: Programming in C
CS240: Programming in C Lecture 5: Functions. Scope. 1 Functions: Explicit declaration Declaration, definition, use, order matters. Declaration: defines the interface of a function; i.e., number and types
More informationThe Procedure Abstraction
The Procedure Abstraction Procedure Abstraction Begins Chapter 6 in EAC The compiler must deal with interface between compile time and run time Most of the tricky issues arise in implementing procedures
More informationChapter 4 Defining Classes I
Chapter 4 Defining Classes I This chapter introduces the idea that students can create their own classes and therefore their own objects. Introduced is the idea of methods and instance variables as the
More informationScreaming Fast Declarative Pointer Analysis
Screaming Fast Declarative Pointer Analysis http://doop.program-analysis.org Martin Bravenboer and Yannis Smaragdakis University of Massachusetts Amherst University of Oregon NEPLS March 5, 2008 overview
More informationUNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division. P. N. Hilfinger
UNIVERSITY OF CALIFORNIA Department of Electrical Engineering and Computer Sciences Computer Science Division CS 164 Spring 2010 P. N. Hilfinger CS 164: Final Examination (revised) Name: Login: You have
More informationField Flow Sensitive Pointer and Escape Analysis for Java using Heap Array SSA
Field Flow Sensitive Pointer and Escape Analysis for Java using Heap Array SSA Prakash Prabhu and Priti Shankar Department of Computer Science and Automation, Indian Institute of Science, Bangalore 560012,
More information1 Lexical Considerations
Massachusetts Institute of Technology Department of Electrical Engineering and Computer Science 6.035, Spring 2013 Handout Decaf Language Thursday, Feb 7 The project for the course is to write a compiler
More informationApplying fair queueing and traffic shaping for Internet applications on top of ATM The LB_SCFQ algorithm
Applying air queueing and traic shaping or Internet applications on top o ATM The LB_SCFQ algorithm Abstract Fair queueing mechanisms give very promising results or ATM networks. Combining a air queueing
More informationException-Handling Overview
م.عبد الغني أبوجبل Exception Handling No matter how good a programmer you are, you cannot control everything. Things can go wrong. Very wrong. When you write a risky method, you need code to handle the
More informationCMSC 330: Organization of Programming Languages
CMSC 330: Organization of Programming Languages Memory Management and Garbage Collection CMSC 330 Spring 2017 1 Memory Attributes Memory to store data in programming languages has the following lifecycle
More informationException Handling. Sometimes when the computer tries to execute a statement something goes wrong:
Exception Handling Run-time errors The exception concept Throwing exceptions Handling exceptions Declaring exceptions Creating your own exception Ariel Shamir 1 Run-time Errors Sometimes when the computer
More informationLecture Outline. COOL operational semantics. Operational Semantics of Cool. Motivation. Notation. The rules. Evaluation Rules So Far.
Lecture Outline Operational Semantics of Cool COOL operational semantics Motivation Adapted from Lectures by Profs. Alex Aiken and George Necula (UCB) Notation The rules CS781(Prasad) L24CG 1 CS781(Prasad)
More informationRun-Time Environments
CS308 Run-Time Environments Li Jiang Department of Computer Science and Engineering Shanghai Jiao Tong University Current Progress Source Language Lexical Analyzer Syntax Analyzer Semantic Analyzer Intermediate
More informationRuntime Environments I. Basilio B. Fraguela
Runtime Environments I Basilio B. Fraguela Runtime System Responsibilities Allocation of storage for program data Sometimes also deallocation Garbage collection Management of data structures the compiled
More informationSeparate compilation. Topic 6: Runtime Environments p.1/21. CS 526 Topic 6: Runtime Environments The linkage convention
Runtime Environment The Procedure Abstraction and Separate Compilation Topics we will cover The procedure abstraction and linkage conventions Runtime storage convention Non-local data access (brief) These
More informationInterprocedural Analysis. Motivation. Interprocedural Analysis. Function Calls and Pointers
Interprocedural Analysis Motivation Last time Introduction to alias analysis Today Interprocedural analysis Procedural abstraction Cornerstone of programming Introduces barriers to analysis Example x =
More informationException Handling. Run-time Errors. Methods Failure. Sometimes when the computer tries to execute a statement something goes wrong:
Exception Handling Run-time errors The exception concept Throwing exceptions Handling exceptions Declaring exceptions Creating your own exception 22 November 2007 Ariel Shamir 1 Run-time Errors Sometimes
More informationLearning from Bad Examples. CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014
Learning from Bad Examples CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014 1 Goals Demonstrate techniques to design for shared mutability Build on an example where multiple threads
More information