Points-to Analysis for Java Using Annotated Constraints*

Size: px
Start display at page:

Download "Points-to Analysis for Java Using Annotated Constraints*"

Transcription

1 Points-to Analysis for Java Using Annotated Constraints* Dr. Barbara G. Ryder Rutgers University *Joint research with Atanas Rountev and Ana Milanova, supported by NSF-CCR Java Poi nts-to, 12/02, BGR 1

2 Outline PROLANGS research projects Points-to analysis for Java Initial constraint-based implementation, OOPSLA 01 Empirical results Object-sensitive analysis, ISSTA 02 Empirical results Related work Summary Java Poi nts-to, 12/02, BGR 2

3 PROLANGS Research projects at boundary of Programming Languages/Compilers and Software Engineering Algorithm design and prototyping Mature research projects Pointer analysis of C programs Side-effect analysis of C systems Semantic software change analysis Studies of Java exception usages PROLANGS Analysis Framework (PAF), version 1.1 released June 1999 Java Poi nts-to, 12/02, BGR 3

4 Ongoing Research Object-oriented systems (C++/Java) Analysis Points-to, side-effect analyses POPL 99, OOPSLA 01, ISSTA 02, ICSM 02 Change impact analysis (with Frank Tip, IBM) PASTE 01 Optimization Profiling framework for feedback-directed optimization PLDI 01 Experience with feedback-directed optimization OOPSLA 02 Static/dynamic analyses of application resource usage (with Rich Martin and Thu Nguyen, Rutgers) Analysis of program fragments FSE 99, CC 01, ICSE 03 Java Poi nts-to, 12/02, BGR 4

5 Points-to Analysis for Java Which objects may reference variable x point to? Builds a points-to graph x = new A(); y = new B(); x.f = y; x o 1 f y o 2 Java Poi nts-to, 12/02, BGR 5

6 Uses of Points-to Information in Compilers Object read-write information Side-effect analysis, dependence analysis Call graph construction Devirtualization & inlining Synchronization removal Stack-based object allocation Java Poi nts-to, 12/02, BGR 6

7 Uses of Points-to Information in Software Engineering Tools Object read-write information Semantic browers Program slicers Debuggers Change impact analysis tools Testing Object relationships (Object relation diagrams) Program-based coverage metrics Java Poi nts-to, 12/02, BGR 7

8 Contributions Points-to Analyses for Java using annotated constraints Initial analysis based on Andersen s analysis for C, OOPSLA 01 Annotations embody OO notions needed Maintained efficient constraint-based implementation Empirical evaluation of cost and precision Java Poi nts-to, 12/02, BGR 8

9 Contributions Object-sensitive analysis, ISSTA 02 Adding context sensitivity Parameterization framework Empirical evaluation demonstrates more precision for same cost Java Poi nts-to, 12/02, BGR 9

10 Points-to Analysis, OOPSLA 01 Handles virtual calls Simulates the run-time method lookup Models the fields of objects Analyzes executable code Ignores unreachable code from libraries Java Poi nts-to, 12/02, BGR 10

11 Points-to Analysis in Action A.m() not analyzed because it s unreachable. class A { void m(x p) {..} } a class B extends A { X f; void m(x q) { this.f=q; } } B b = new B(); X x = new X(); A a = b; a.m(x); b o 1 this B.m f x o 2 q Java Poi nts-to, 12/02, BGR 11

12 Efficient Implementation Constraint-based approach Extends previous work for C pointer analysis using BANE (UC Berkeley) Extended constraint system and resolution rules Define and solve a system of annotated set-inclusion constraints to obtain pointsto sets Java Poi nts-to, 12/02, BGR 12

13 Annotated Constraints Form: L a R L and R denote set expressions Annotation a: additional information (e.g., object fields) Kinds of set expressions L and R Set variables: represent points-to sets ref terms: represent objects Other kinds of expressions Java Poi nts-to, 12/02, BGR 13

14 Set variables and ref terms Set variables represent points-to sets For each reference variable p: V P For each object o: V o Object o is denoted by term ref(o,v o ) p o ref(o,v o ) V P o f 1 o 2 ref(o 2,V o2 ) f V o 1 Java Poi nts-to, 12/02, BGR 14

15 Example: Accessing Fields p = new A(); q = new B(); p.f = q; p o 1 ref(o 1,V O1 ) V p ref(o 2,V O2 ) V q V p proj(ref,w) V q f W q o 2 f Constraint generation Java Poi nts-to, 12/02, BGR 15

16 Example: Solving Constraints ref(o 1,V O1 ) V p Constraint resolution ref(o 2,V O2 ) V q V p proj(ref,w) V q f W W V O1 o 1.f points to o 2 V q f V O 1 ref(o 2,V O2 ) f V O1 Java Poi nts-to, 12/02, BGR 16

17 Example: Virtual Calls p.m(x); V P m lam(v x ) receiver object o ref(o,v O ) V P Actual method called, A.m V x V z ref(o,v O ) V this(a.m) Java Poi nts-to, 12/02, BGR 17

18 Experiments 23 Java programs: user classes Added the necessary library classes Machine: 360 MHz, 512Mb SUN Ultra-60 Cost measured in time and memory Precision (wrt usage in client analyses and tranformations) Object read-write information Call graph construction Synchronization removal and stack allocation Java Poi nts-to, 12/02, BGR 18

19 Analysis Time Seconds proxy compress db jb echo raytrace mtrt jtar jlex javacup rabbit jack jflex jess mpegaudio jjtree sablecc javac creature mindterm soot muffin javacc Java Poi nts-to, 12/02, BGR 19

20 Resolution of Virtual Call Sites % Resolved Call Sites proxy db echo mtrt jlex Points-to rabbit jflex RTA mpegaudio sablecc creature soot javacc Java Poi nts-to, 12/02, BGR 20

21 Thread-local new sites 70% 60% % Thread-local Sites 50% 40% 30% 20% 10% 0% Java Poi nts-to, 12/02, BGR 21

22 Practical Points-to Analyses for Java, ISSTA 02 Existing analyses were flow- and contextinsensitive extensions of C analyses Context insensitivity inherently compromises precision for object-oriented languages Goal: Introduce context sensitivity and remain practical Java Poi nts-to, 12/02, BGR 22

23 Example: Imprecision class Y extends X { } class A { X f; void m(x q) { this.f=q ; } } A a = new A() ; a.m(new X()) ; A aa = new A() ; aa.m(new Y()) ; a this A.m o 1 o 2 aa o 3 f o 4 f f f q Java Poi nts-to, 12/02, BGR 23

24 Imprecision of Context-insensitive Analysis Does not distinguish contexts for instance methods and constructors States of distinct objects are merged Common OO features and idioms Encapsulation Inheritance Containers, maps and iterators Java Poi nts-to, 12/02, BGR 24

25 Object sensitivity Object-sensitive Points-to Analysis Form of context sensitivity for flow-insensitive points-to analysis of OO languages Object-sensitive Andersen s analysis Object sensitivity applicable to other analyses Parameterization framework Cost vs. precision tradeoff Empirical evaluation Vs. context-insensitive OOPSLA 01 analysis Java Poi nts-to, 12/02, BGR 25

26 Details Instance methods and constructors analyzed for different contexts Receiver objects used as contexts Multiple copies of reference variables this.f=q o 1 this o 1 A.m.f=q o 1 Java Poi nts-to, 12/02, BGR 26

27 Example: Object-sensitive Analysis o1 class A { X f; void m(x q) { this o1 o3 o1 A.m this.f=q o3; } } A a = new A() ; a.m(new X()) ; A aa = new A() ; aa.m(new Y()) ; Java Poi nts-to, 12/02, BGR 27 a o this 1 A.m o 1 f o 2 aa o 3 o 4 o q 1 A.m o 3 this A.m o 3 q A.m f

28 Implementation Implemented one instance of parameterization framework this, formals and return variables (effectively) replicated Optimized constraint-based analysis using previous technique Comparison with OOPSLA 01 analysis Java Poi nts-to, 12/02, BGR 28

29 Empirical Results 23 Java programs: user classes Added the necessary library classes Machine: 360 MHz, 512Mb, SUN Ultra-60 Object Sensitive vs. OOPSLA 01 points-to Found comparable cost with better precision Modification side-effect analysis Virtual call resolution Java Poi nts-to, 12/02, BGR 29

30 250 Analysis Time 200 Seconds javacc muffin soot mindterm creature sablecc jjtree mpegaudio jess jflex jack rabbit javacup jlex jtar mtrt raytrace echo jb db compress Object Sensitive OOPSLA'01 Java Poi nts-to, 12/02, BGR 30

31 Side-effect Analysis: Modified Objects Per Statement 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% OBJECT SENSITIVE OOPSLA jb jess sablecc raytrace Average One Two or three Four to nine More than nine Java Poi nts-to, 12/02, BGR 31

32 Improvement in Resolved Calls Percent Avg javacc muffin soot mindterm creature javac sablecc jjtree mpegaudio jess jflex jack rabbit javacup jlex jtar mtrt raytrace echo jb db compress proxy Java Poi nts-to, 12/02, BGR 32

33 Related Work Context-sensitive points-to analysis for OO languages Grove et al. OOPSLA 97, Chatterjee et al. POPL 99, Ruf PLDI 00, Grove-Chambers TOPLAS 01 Context-insensitive points-to analysis for OO languages Liang et al. PASTE 01 0Context-sensitive class analysis Oxhoj et al. ECOOP 92, Agesen SAS 94, Plevyak-Chien OOPSLA 94, Agesen ECOOP 95, Grove et al. OOPSLA 97, Grove-Chambers TOPLAS 01 Java Poi nts-to, 12/02, BGR 33

34 Summary Defined two new points-to analyses for references in OOPLs using annotated constraints Context-insensitive analysis (OOPSLA 01) Based on Andersen s points-to for C Practical cost and good precision wrt client analyses and transformations Java Poi nts-to, 12/02, BGR 34

35 Summary Object-sensitive (context-sensitive) points-to analysis - New kind of context sensitivity for flowinsensitive analysis Parameterization framework allows tunable algorithm choice Practical cost, comparable to OOPSLA 01 analysis Better precision than OOPSLA 01 analysis Java Poi nts-to, 12/02, BGR 35

36 Java Poi nts-to, 12/02, BGR 36

37 Number of new X() whose objects are accessed by p.f 100% 90% 80% 70% 60% 50% 40% 30% 20% 10% 0% proxy db echo mtrt jlex One Two or three More than three javacc rabbit Java Poi nts-to, 12/02, BGR 37 jflex mpegaudio sablecc creature soot

38 Parameterization Goal: tunable analysis Multiple copies for a subset of variables For the other variables a single copy Result: reduces points-to graph size and analysis cost At the expense of precision loss Java Poi nts-to, 12/02, BGR 38

Reference Analyses. VTA - Variable Type Analysis

Reference 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 information

Analysis of Object-oriented Programming Languages

Analysis of Object-oriented Programming Languages Analysis of Object-oriented Programming Languages Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ OOAnalysis, Dagstuhl 2/03, BG Ryder 1 Outline Why

More information

Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages. Outline

Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages. Outline Dimensions of Precision in Reference Analysis of Object-oriented Programming Languages Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ Research supported,

More information

OOPLs - call graph construction. Example executed calls

OOPLs - 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 information

Extra 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 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 information

Advanced Program Analyses for Object-oriented Systems

Advanced Program Analyses for Object-oriented Systems Advanced Program Analyses for Object-oriented Systems Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder http://prolangs.rutgers.edu/ July 2007 ACACES-3 July 2007 BG Ryder 1 Lecture

More information

Annotated Inclusion Constraints for Precise Flow Analysis

Annotated Inclusion Constraints for Precise Flow Analysis Annotated Inclusion Constraints for Precise Flow Analysis Ana Milanova Department of Computer Science Rensselaer Polytechnic Institute milanova@cs.rpi.edu Barbara G. Ryder Department of Computer Science

More information

Context-sensitive points-to analysis: is it worth it?

Context-sensitive points-to analysis: is it worth it? Context-sensitive points-to analysis: is it worth it? Ondřej Lhoták 1,2 and Laurie Hendren 2 olhotak@uwaterloo.ca hendren@sable.mcgill.ca 1 School of Computer Science, University of Waterloo, Waterloo,

More information

Context-sensitive points-to analysis: is it worth it?

Context-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 information

Helping Programmers Debug Code Using Semantic Change Impact Analysis PROLANGS

Helping Programmers Debug Code Using Semantic Change Impact Analysis PROLANGS Helping Programmers Debug Code Using Semantic Change Impact Analysis Dr. Barbara G. Ryder Rutgers University http://www.cs.rutgers.edu/~ryder This research is supported by NSF grants CCR-0204410 & CCR-0331797

More information

Advanced Program Analyses for Object-oriented Systems

Advanced Program Analyses for Object-oriented Systems Advanced Program Analyses for Object-oriented Systems Dr Barbara G Ryder Rutgers University http://wwwcsrutgersedu/~ryder http://prolangsrutgersedu/ July 2007 PROLANGS Languages/Compilers and Software

More information

Scaling Java Points-to Analysis Using Spark

Scaling Java Points-to Analysis Using Spark Scaling Java Points-to Analysis Using Spark Ondřej Lhoták and Laurie Hendren Sable Research Group, McGill University, Montreal, Canada {olhotak,hendren}@sable.mcgill.ca Abstract. Most points-to analysis

More information

Parameterized Object Sensitivity for Points-to Analysis for Java. Authors: Ana Milanova, Atanas Rountev, Barbara G. Ryder Presenter: Zheng Song

Parameterized Object Sensitivity for Points-to Analysis for Java. Authors: Ana Milanova, Atanas Rountev, Barbara G. Ryder Presenter: Zheng Song Parameterized Object Sensitivity for Points-to Analysis for Java Authors: Ana Milanova, Atanas Rountev, Barbara G. Ryder Presenter: Zheng Song Outlines Introduction Existing Method and its limitation Object

More information

Building a Whole-Program Type Analysis in Eclipse

Building a Whole-Program Type Analysis in Eclipse Building a Whole-Program Type Analysis in Eclipse Mariana Sharp Jason Sawin Atanas Rountev ABSTRACT Eclipse has the potential to become a widely-used platform for implementation and dissemination of various

More information

Class Analysis for Testing of Polymorphism in Java Software

Class Analysis for Testing of Polymorphism in Java Software Class Analysis for Testing of Polymorphism in Java Software Atanas Rountev Ana Milanova Barbara G. Ryder Rutgers University, New Brunswick, NJ 08903, USA {rountev,milanova,ryder@cs.rutgers.edu Abstract

More information

Scaling Java Points-To Analysis using Spark

Scaling Java Points-To Analysis using Spark McGill University School of Computer Science Sable Research Group Scaling Java Points-To Analysis using Spark Sable Technical Report No. 2002-9 Ondřej Lhoták and Laurie Hendren October 24, 2002 w w w.

More information

Averroes: Letting go of the library!

Averroes: Letting go of the library! Workshop on WALA - PLDI 15 June 13th, 2015 public class HelloWorld { public static void main(string[] args) { System.out.println("Hello, World!"); 2 public class HelloWorld { public static void main(string[]

More information

Parameterized Object Sensitivity for Points-to Analysis for Java

Parameterized Object Sensitivity for Points-to Analysis for Java Parameterized Object Sensitivity for Points-to Analysis for Java Ana Milanova Dept. Computer Science Rensselaer Polytechnic Institute milanova@cs.rpi.edu Atanas Rountev Dept. Computer Science and Engineering

More information

Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages

Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages Dimensions of Precision in Reference Analysis of Object-Oriented Programming Languages Barbara G. Ryder Division of Computer and Information Sciences Rutgers University New Brunswick, New Jersey 08903

More information

Thread-Sensitive Points-to Analysis for Multithreaded Java Programs

Thread-Sensitive Points-to Analysis for Multithreaded Java Programs Thread-Sensitive Points-to Analysis for Multithreaded Java Programs Byeong-Mo Chang 1 and Jong-Deok Choi 2 1 Dept. of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea chang@sookmyung.ac.kr

More information

Evaluating a Demand Driven Technique for Call Graph Construction

Evaluating a Demand Driven Technique for Call Graph Construction Evaluating a Demand Driven Technique for Call Graph Construction Gagan Agrawal 1,JinqianLi 2, and Qi Su 2 1 Department of Computer and Information Sciences, Ohio State University Columbus, OH 43210 agrawal@cis.ohio-state.edu

More information

OOPLs - call graph construction Compile-time analysis of reference variables and fields. Example

OOPLs - 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 information

Constructing Accurate Application Call Graphs For Java To Model Library Callbacks

Constructing Accurate Application Call Graphs For Java To Model Library Callbacks Constructing Accurate Application Call Graphs For Java To Model Library Callbacks Weilei Zhang, Barbara G Ryder Department of Computer Science Rutgers University Piscataway, NJ 08854 {weileiz,ryder@cs.rutgers.edu

More information

Advanced Compiler Construction

Advanced 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 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

Java without the Coffee Breaks: A Nonintrusive Multiprocessor Garbage Collector

Java without the Coffee Breaks: A Nonintrusive Multiprocessor Garbage Collector Java without the Coffee Breaks: A Nonintrusive Multiprocessor Garbage Collector David F. Bacon IBM T.J. Watson Research Center Joint work with C.R. Attanasio, Han Lee, V.T. Rajan, and Steve Smith ACM Conference

More information

Pointer Analysis in the Presence of Dynamic Class Loading

Pointer Analysis in the Presence of Dynamic Class Loading Pointer Analysis in the Presence of Dynamic Class Loading Martin Hirzel, Amer Diwan University of Colorado at Boulder Michael Hind IBM T.J. Watson Research Center 1 Pointer analysis motivation Code a =

More information

Demand-Driven Points-To Analysis For Java

Demand-Driven Points-To Analysis For Java Demand-Driven Points-To Analysis For Java Manu Sridharan, Ras Bodik Lexin Shan Denis Gopan UC Berkeley Microsoft UW Madison OOPSLA 2005 1 Who needs better pointer analysis? IDEs: for refactoring, program

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

Effec%ve Sta%c Deadlock Detec%on

Effec%ve Sta%c Deadlock Detec%on Effec%ve Sta%c Deadlock Detec%on Mayur Naik, Chang- Seo Park, Koushik Sen and David Gay ICSE 09 Presented by Alex Kogan 27.04.2014 Outline IntroducKon Suggested SoluKon EvaluaKon Related work Conclusions

More information

Escape Analysis. Applications to ML and Java TM

Escape Analysis. Applications to ML and Java TM Escape Analysis. Applications to ML and Java TM Bruno Blanchet INRIA Rocquencourt Bruno.Blanchet@inria.fr December 2000 Overview 1. Introduction: escape analysis and applications. 2. Escape analysis 2.a

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

Demand-Driven Context-Sensitive Alias Analysis for Java

Demand-Driven Context-Sensitive Alias Analysis for Java Demand-Driven Context-Sensitive Alias Analysis for Java Dacong Yan Guoqing Xu Atanas Rountev Ohio State University {yan,xug,rountev}@cse.ohio-state.edu ABSTRACT Software tools for program understanding,

More information

Lecture Notes: Pointer Analysis

Lecture 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 information

Pointer Analysis in the Presence of Dynamic Class Loading

Pointer Analysis in the Presence of Dynamic Class Loading Pointer Analysis in the Presence of Dynamic Class Loading Martin Hirzel University of Colorado Boulder, CO 80309 hirzel@cs.colorado.edu Amer Diwan University of Colorado Boulder, CO 80309 diwan@cs.colorado.edu

More information

Pointer Analysis in the Presence of Dynamic Class Loading

Pointer Analysis in the Presence of Dynamic Class Loading Pointer Analysis in the Presence of Dynamic Class Loading Martin Hirzel 1, Amer Diwan 1, and Michael Hind 2 1 University of Colorado, Boulder, CO 80309, USA {hirzel,diwan}@cs.colorado.edu 2 IBM Watson

More information

Eventrons: A Safe Programming Construct for High-Frequency Hard Real-Time Applications

Eventrons: A Safe Programming Construct for High-Frequency Hard Real-Time Applications Eventrons: A Safe Programming Construct for High-Frequency Hard Real-Time Applications Daniel Spoonhower Carnegie Mellon University Joint work with Joshua Auerbach, David F. Bacon, Perry Cheng, David Grove

More information

On the Structure of Sharing in Open Concurrent Java Programs

On the Structure of Sharing in Open Concurrent Java Programs On the Structure of Sharing in Open Concurrent Java Programs Yin Liu Department of Computer Science Rensselaer Polytechnic Institute liuy@csrpiedu Ana Milanova Department of Computer Science Rensselaer

More information

Free-Me: A Static Analysis for Automatic Individual Object Reclamation

Free-Me: A Static Analysis for Automatic Individual Object Reclamation Free-Me: A Static Analysis for Automatic Individual Object Reclamation Samuel Z. Guyer, Kathryn McKinley, Daniel Frampton Presented by: Jason VanFickell Thanks to Dimitris Prountzos for slides adapted

More information

Interprocedural Analysis with Data-Dependent Calls. Circularity dilemma. A solution: optimistic iterative analysis. Example

Interprocedural 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 information

OOPSLA 2004, Vancouver

OOPSLA 2004, Vancouver Alan Donovan, Adam Kieżun Matthew Tschantz, Michael Ernst MIT Computer Science & AI Lab OOPSLA 2004, Vancouver Introduction: generic types in Java.5 The problem: inferring type arguments Our approach Allocation

More information

CS711 Advanced Programming Languages Pointer Analysis Overview and Flow-Sensitive Analysis

CS711 Advanced Programming Languages Pointer Analysis Overview and Flow-Sensitive Analysis CS711 Advanced Programming Languages Pointer Analysis Overview and Flow-Sensitive Analysis Radu Rugina 8 Sep 2005 Pointer Analysis Informally: determine where pointers (or references) in the program may

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

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures

Chapter 5: Procedural abstraction. Function procedures. Function procedures. Proper procedures and function procedures Chapter 5: Procedural abstraction Proper procedures and function procedures Abstraction in programming enables distinction: What a program unit does How a program unit works This enables separation of

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

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

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

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

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

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

Points-to Analysis using BDDs

Points-to Analysis using BDDs Points-to Analysis using BDDs Marc Berndl, Ondřej Lhoták, Feng Qian, Laurie Hendren and Navindra Umanee Sable Research Group, School of Computer Science McGill University Montreal, Quebec, CANADA H3A 2A7

More information

An Efficient Memory Management Technique That Improves Localities

An Efficient Memory Management Technique That Improves Localities An Efficient Memory Management Technique That Improves Localities Krishna Kavi Mehran Rezaei Dept. of Electrical and Computer Engineering University of Alabama in Huntsville Ron K. Cytron Department of

More information

Removing Unnecessary Synchronization in Java

Removing Unnecessary Synchronization in Java Removing Unnecessary Synchronization in Java Jeff Bogda and Urs Hölzle Department of Computer Science University of California Santa Barbara, CA 93106 {bogda,urs@cs.ucsb.edu Abstract Java programs perform

More information

Alias Analysis. Last time Interprocedural analysis. Today Intro to alias analysis (pointer analysis) CS553 Lecture Alias Analysis I 1

Alias Analysis. Last time Interprocedural analysis. Today Intro to alias analysis (pointer analysis) CS553 Lecture Alias Analysis I 1 Alias Analysis Last time Interprocedural analysis Today Intro to alias analysis (pointer analysis) CS553 Lecture Alias Analysis I 1 Aliasing What is aliasing? When two expressions denote the same mutable

More information

Interprocedural Analysis with Data-Dependent Calls. Circularity dilemma. A solution: optimistic iterative analysis. Example

Interprocedural 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 information

CO444H. Ben Livshits. Datalog Pointer analysis

CO444H. 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 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

Exploiting Prolific Types for Memory Management and Optimizations

Exploiting Prolific Types for Memory Management and Optimizations Exploiting Prolific Types for Memory Management and Optimizations Yefim Shuf Manish Gupta Rajesh Bordawekar Jaswinder Pal Singh IBM T. J. Watson Research Center Computer Science Department P. O. Box 218

More information

Understanding Parallelism-Inhibiting Dependences in Sequential Java

Understanding Parallelism-Inhibiting Dependences in Sequential Java Understanding Parallelism-Inhibiting Dependences in Sequential Java Programs Atanas(Nasko) Rountev Kevin Van Valkenburgh Dacong Yan P. Sadayappan Ohio State University Overview and Motivation Multi-core

More information

Scaling Regression Testing to Large Software Systems

Scaling Regression Testing to Large Software Systems Scaling Regression Testing to Large Software Systems Alessandro Orso Co-authors: Nanjuan Shi, Mary Jean Harrold College of Computing Georgia Institute of Technology Supported in part by National Science

More information

Static Analysis for Dynamic Coupling Measures

Static Analysis for Dynamic Coupling Measures Static Analysis for Dynamic Coupling Measures Yin Liu Ana Milanova Department of Computer Science Rensselaer Polytechnic Institute Troy, NY 12180, USA {liuy,milanova}@cs.rpi.edu Abstract Coupling measures

More information

Lecture Notes: Pointer Analysis

Lecture Notes: Pointer Analysis Lecture Notes: Pointer Analysis 17-355/17-665/17-819: Program Analysis (Spring 2019) Jonathan Aldrich aldrich@cs.cmu.edu 1 Motivation for Pointer Analysis In the spirit of extending our understanding of

More information

Data-Flow Analysis of Program Fragments

Data-Flow Analysis of Program Fragments Data-Flow Analysis of Program Fragments Atanas Rountev 1, Barbara G. Ryder 1, and William Landi 2 1 Department of Computer Science, Rutgers University, Piscataway, NJ 08854, USA {rountev,ryder}@cs.rutgers.edu

More information

Precise Identification of Side-effect-free Methods in Java

Precise Identification of Side-effect-free Methods in Java Precise Identification of Side-effect-free Methods in Java Atanas Rountev Department of Computer Science and Engineering Ohio State University rountev@cis.ohio-state.edu Abstract Knowing which methods

More information

Alias Analysis. Advanced Topics. What is pointer analysis? Last Time

Alias 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 information

Procedure and Object- Oriented Abstraction

Procedure and Object- Oriented Abstraction Procedure and Object- Oriented Abstraction Scope and storage management cs5363 1 Procedure abstractions Procedures are fundamental programming abstractions They are used to support dynamically nested blocks

More information

Calvin Lin The University of Texas at Austin

Calvin Lin The University of Texas at Austin Interprocedural Analysis Last time Introduction to alias analysis Today Interprocedural analysis March 4, 2015 Interprocedural Analysis 1 Motivation Procedural abstraction Cornerstone of programming Introduces

More information

On the Effectiveness of GC in Java

On the Effectiveness of GC in Java On the Effectiveness of GC in Java Ran Shaham Tel-Aviv University and IBM aifa Research aboratory rans@math.tau.ac.il Elliot K. Kolodner IBM aifa Research aboratory kolodner@il.ibm.com Mooly Sagiv Tel-Aviv

More information

Making 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 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 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

A Parameterized Type System for Race-Free Java Programs

A Parameterized Type System for Race-Free Java Programs A Parameterized Type System for Race-Free Java Programs Chandrasekhar Boyapati Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology {chandra, rinard@lcs.mit.edu Data races

More information

The popularity of the Java programming

The popularity of the Java programming BY FRANK TIP, PETER F. SWEENEY, AND CHRIS LAFFRA EXTRACTING LIBRARY-BASED JAVA APPLICATIONS Reducing the size of Java applications by creating an application extractor. The popularity of the Java programming

More information

Interprocedural Analysis. Motivation. Interprocedural Analysis. Function Calls and Pointers

Interprocedural 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 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

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

Lecture 20 Pointer Analysis

Lecture 20 Pointer Analysis Lecture 20 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis (Slide content courtesy of Greg Steffan, U. of Toronto) 15-745:

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 : 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

Combined Static and Dynamic Mutability Analysis

Combined Static and Dynamic Mutability Analysis Combined Static and Dynamic Mutability Analysis Shay Artzi Michael D. Ernst David Glasser Adam Kieżun MIT CSAIL {artzi,mernst,glasser,akiezun}@csail.mit.edu Abstract Knowing which method parameters may

More information

Lecture 27. Pros and Cons of Pointers. Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis

Lecture 27. Pros and Cons of Pointers. Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Pros and Cons of Pointers Lecture 27 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers

More information

Context-Sensitive Pointer Analysis. Recall Context Sensitivity. Partial Transfer Functions [Wilson et. al. 95] Emami 1994

Context-Sensitive Pointer Analysis. Recall Context Sensitivity. Partial Transfer Functions [Wilson et. al. 95] Emami 1994 Context-Sensitive Pointer Analysis Last time Flow-insensitive pointer analysis Today Context-sensitive pointer analysis Emami invocation graphs Partial Transfer Functions The big picture Recall Context

More information

Static and Dynamic Program Analysis: Synergies and Applications

Static and Dynamic Program Analysis: Synergies and Applications Static and Dynamic Program Analysis: Synergies and Applications Mayur Naik Intel Labs, Berkeley CS 243, Stanford University March 9, 2011 Today s Computing Platforms Trends: parallel cloud mobile Traits:

More information

Outline. Object Oriented Programming. Course goals. Staff. Course resources. Assignments. Course organization Introduction Java overview Autumn 2003

Outline. Object Oriented Programming. Course goals. Staff. Course resources. Assignments. Course organization Introduction Java overview Autumn 2003 Outline Object Oriented Programming Autumn 2003 2 Course goals Software design vs hacking Abstractions vs language (syntax) Java used to illustrate concepts NOT a course about Java Prerequisites knowledge

More information

Object Oriented Paradigm

Object Oriented Paradigm Object Oriented Paradigm History Simula 67 A Simulation Language 1967 (Algol 60 based) Smalltalk OO Language 1972 (1 st version) 1980 (standard) Background Ideas Record + code OBJECT (attributes + methods)

More information

Lecture 16 Pointer Analysis

Lecture 16 Pointer Analysis Pros and Cons of Pointers Lecture 16 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis Many procedural languages have pointers

More information

Field Analysis. Last time Exploit encapsulation to improve memory system performance

Field Analysis. Last time Exploit encapsulation to improve memory system performance Field Analysis Last time Exploit encapsulation to improve memory system performance This time Exploit encapsulation to simplify analysis Two uses of field analysis Escape analysis Object inlining April

More information

Estimating the Impact of Heap Liveness Information on Space Consumption in Java

Estimating 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 information

Scalable Flow-Sensitive Pointer Analysis for Java with Strong Updates

Scalable Flow-Sensitive Pointer Analysis for Java with Strong Updates Scalable Flow-Sensitive Pointer Analysis for Java with Strong Updates Arnab De and Deepak D Souza Department of Computer Science and Automation, Indian Institute of Science, Bangalore, India {arnabde,deepakd}@csa.iisc.ernet.in

More information

Lecture 14 Pointer Analysis

Lecture 14 Pointer Analysis Lecture 14 Pointer Analysis Basics Design Options Pointer Analysis Algorithms Pointer Analysis Using BDDs Probabilistic Pointer Analysis [ALSU 12.4, 12.6-12.7] Phillip B. Gibbons 15-745: Pointer Analysis

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

CA Compiler Construction

CA Compiler Construction CA4003 - Compiler Construction Semantic Analysis David Sinclair Semantic Actions A compiler has to do more than just recognise if a sequence of characters forms a valid sentence in the language. It must

More information

Testing of Java Web Services for Robustness. Chen Fu, Ana Milanova, David Wonnacott, Barbara Ryder

Testing of Java Web Services for Robustness. Chen Fu, Ana Milanova, David Wonnacott, Barbara Ryder Testing of Java Web Services for Robustness Chen Fu, Ana Milanova, David Wonnacott, Barbara Ryder Availability of Internet Services Internet Service: New Kid in 24x7 domain v Public Telephone System: 99.999%

More information

Cross-compiling C++ to JavaScript. Challenges in porting the join.me common library to HTML5

Cross-compiling C++ to JavaScript. Challenges in porting the join.me common library to HTML5 Cross-compiling C++ to JavaScript Challenges in porting the join.me common library to HTML5 JUNE 24, 2015 LEVENTE HUNYADI join.me at a glance 2 join.me at a glance 3 join.me characteristics Application

More information

Efficient Separate Compilation of Object-Oriented Languages

Efficient Separate Compilation of Object-Oriented Languages Efficient Separate Compilation of Object-Oriented Languages Jean Privat, Floréal Morandat, and Roland Ducournau LIRMM Université Montpellier II CNRS 161 rue Ada 34392 Montpellier cedex 5, France {privat,morandat,ducour}@lirmm.fr

More information

AspectJ [6] Figure 2: dflow[x, y](q) [8] 1. (q) 6 print. lookup. (p) ) print. p && dflow[x, y](q) lookup p. AspectJ dflow. Java. 2 dflow.

AspectJ [6] Figure 2: dflow[x, y](q) [8] 1. (q) 6 print. lookup. (p) ) print. p && dflow[x, y](q) lookup p. AspectJ dflow. Java. 2 dflow. AspectJ dflow Java dflow dflow AspectJ Java dflow 1 before(string x) : call(void Strm.print(String)) && args(x) && dflow[x, String y] [7] ( call(string Db.lookup(String)) && returns(y) ){ log.info(thisjoinpoint

More information

Secure Virtual Architecture: Using LLVM to Provide Memory Safety to the Entire Software Stack

Secure Virtual Architecture: Using LLVM to Provide Memory Safety to the Entire Software Stack Secure Virtual Architecture: Using LLVM to Provide Memory Safety to the Entire Software Stack John Criswell, University of Illinois Andrew Lenharth, University of Illinois Dinakar Dhurjati, DoCoMo Communications

More information

Run-Time Cohesion Metrics: An Empirical Investigation

Run-Time Cohesion Metrics: An Empirical Investigation Run-Time Cohesion Metrics: An Empirical Investigation Áine Mitchell Department of Computer Science National University of Ireland, Maynooth, Co. Kildare, Ireland ainem@cs.may.ie James F. Power Department

More information

Dynamic Purity Analysis for Java Programs

Dynamic Purity Analysis for Java Programs Dynamic Purity Analysis for Java Programs Haiying Xu Christopher J. F. Pickett Clark Verbrugge School of Computer Science, McGill University Montréal, Québec, Canada H3A 2A7 {hxu31,cpicke,clump}@sable.mcgill.ca

More information

Blended Program Analysis for Improving Reliability of Real-world Applications

Blended Program Analysis for Improving Reliability of Real-world Applications Blended Program Analysis for Improving Reliability of Real-world Applications Dr. Barbara G. Ryder J. Byron Maupin Professor of Engineering Virginia Tech Collaborators: Bruno Dufour (Rutgers), Gary Sevitsky

More information

Static Inference of Universe Types

Static Inference of Universe Types Static Inference of Universe Types Ana Milanova Rensselaer Polytechnic Institute milanova@cs.rpi.edu Abstract The Universe type system is an ownership type system which enforces the owners-as-modifiers

More information

A Type System for Object Initialization In the Java TM Bytecode Language

A Type System for Object Initialization In the Java TM Bytecode Language Electronic Notes in Theoretical Computer Science 10 (1998) URL: http://www.elsevier.nl/locate/entcs/volume10.html 7 pages A Type System for Object Initialization In the Java TM Bytecode Language Stephen

More information