Demand-Driven Context-Sensitive Alias Analysis for Java

Slides:



Advertisements
Similar presentations
A Framework for Unrestricted Whole-Program Optimization Spyridon Triantafyllis, Matthew J. Bridges, Easwaran Raman, Guilherme Ottoni, David I. August The.
Advertisements

R O O T S Field-Sensitive Points-to-Analysis Eda GÜNGÖR
Uncovering Performance Problems in Java Applications with Reference Propagation Profiling PRESTO: Program Analyses and Software Tools Research Group, Ohio.
ASSUMPTION HIERARCHY FOR A CHA CALL GRAPH CONSTRUCTION ALGORITHM JASON SAWIN & ATANAS ROUNTEV.
Context-Sensitive Interprocedural Points-to Analysis in the Presence of Function Pointers Presentation by Patrick Kaleem Justin.
Pointer Analysis – Part I Mayur Naik Intel Research, Berkeley CS294 Lecture March 17, 2009.
Go with the Flow: Profiling Copies to Find Run-time Bloat Guoqing Xu, Matthew Arnold, Nick Mitchell, Atanas Rountev, Gary Sevitsky Ohio State University.
Demand-driven Alias Analysis Implementation Based on Open64 Xiaomi An
Refinement-Based Context-Sensitive Points-To Analysis for JAVA Soonho Kong 17 January Work of Manu Sridharan and Rastislav Bodik, UC Berkeley.
A Fixpoint Calculus for Local and Global Program Flows Swarat Chaudhuri, U.Penn (with Rajeev Alur and P. Madhusudan)
Parameterized Object Sensitivity for Points-to Analysis for Java Presented By: - Anand Bahety Dan Bucatanschi.
Next Section: Pointer Analysis Outline: –What is pointer analysis –Intraprocedural pointer analysis –Interprocedural pointer analysis (Wilson & Lam) –Unification.
Scaling CFL-Reachability-Based Points- To Analysis Using Context-Sensitive Must-Not-Alias Analysis Guoqing Xu, Atanas Rountev, Manu Sridharan Ohio State.
1 Refinement-Based Context-Sensitive Points-To Analysis for Java Manu Sridharan, Rastislav Bodík UC Berkeley PLDI 2006.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Regression Test Selection for AspectJ Software Guoqing Xu and Atanas.
Java Alias Analysis for Online Environments Manu Sridharan 2004 OSQ Retreat Joint work with Rastislav Bodik, Denis Gopan, Jong-Deok Choi.
Role Analysis Victor Kunkac, Patric Lam, Martin Rinard Laboratory for Computer Science, MIT Presentation by George Caragea CMSC631,
Reps Horwitz and Sagiv 95 (RHS) Another approach to context-sensitive interprocedural analysis Express the problem as a graph reachability query Works.
Detecting Inefficiently-Used Containers to Avoid Bloat Guoqing Xu and Atanas Rountev Department of Computer Science and Engineering Ohio State University.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University A Framework for Source-Code- Level Interprocedural Dataflow Analysis.
An Efficient Inclusion-Based Points-To Analysis for Strictly-Typed Languages John Whaley Monica S. Lam Computer Systems Laboratory Stanford University.
Pointer analysis. Pointer Analysis Outline: –What is pointer analysis –Intraprocedural pointer analysis –Interprocedural pointer analysis Andersen and.
Symbolic Path Simulation in Path-Sensitive Dataflow Analysis Hari Hampapuram Jason Yue Yang Manuvir Das Center for Software Excellence (CSE) Microsoft.
Precise Memory Leak Detection for Java Software Using Container Profiling Guoqing Xu, Atanas Rountev Program analysis and software tools group Ohio State.
Impact Analysis of Database Schema Changes Andy Maule, Wolfgang Emmerich and David S. Rosenblum London Software Systems Dept. of Computer Science, University.
Static Control-Flow Analysis for Reverse Engineering of UML Sequence Diagrams Atanas (Nasko) Rountev Ohio State University with Olga Volgin and Miriam.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University STATIC ANALYSES FOR JAVA IN THE PRESENCE OF DISTRIBUTED COMPONENTS AND.
PRESTO Research Group, Ohio State University Interprocedural Dataflow Analysis in the Presence of Large Libraries Atanas (Nasko) Rountev Scott Kagan Ohio.
Introduction to Software Testing Chapter 2.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
Control Flow Resolution in Dynamic Language Author: Štěpán Šindelář Supervisor: Filip Zavoral, Ph.D.
Cs2220: Engineering Software Class 8: Implementing Data Abstractions Fall 2010 University of Virginia David Evans.
Mehdi Kargar Aijun An York University, Toronto, Canada Keyword Search in Graphs: Finding r-cliques.
Understanding Parallelism-Inhibiting Dependences in Sequential Java Programs Atanas (Nasko) Rountev Kevin Van Valkenburgh Dacong Yan P. Sadayappan Ohio.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Merging Equivalent Contexts for Scalable Heap-cloning-based Points-to.
Coverage Criteria for Testing of Object Interactions in Sequence Diagrams Atanas (Nasko) Rountev Scott Kagan Jason Sawin Ohio State University.
Rethinking Soot for Summary-Based Whole- Program Analysis PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Dacong Yan.
1 Graph Coverage (4). Reading Assignment P. Ammann and J. Offutt “Introduction to Software Testing” ◦ Section
Mehdi Kargar Aijun An York University, Toronto, Canada Keyword Search in Graphs: Finding r-cliques.
Mobile Agent Migration Problem Yingyue Xu. Energy efficiency requirement of sensor networks Mobile agent computing paradigm Data fusion, distributed processing.
Static Detection of Loop-Invariant Data Structures Harry Xu, Tony Yan, and Nasko Rountev University of California, Irvine Ohio State University 1.
CBSE'051 Component-Level Dataflow Analysis Atanas (Nasko) Rountev Ohio State University.
1 The System Dependence Graph and its use in Program Slicing.
Introduction to Software Testing (2nd edition) Chapter 7.4 Graph Coverage for Design Elements Paul Ammann & Jeff Offutt
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Efficient Checkpointing of Java Software using Context-Sensitive Capture.
ESEC/FSE-99 1 Data-Flow Analysis of Program Fragments Atanas Rountev 1 Barbara G. Ryder 1 William Landi 2 1 Department of Computer Science, Rutgers University.
PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Merging Equivalent Contexts for Scalable Heap-cloning-based Points-to.
Pointer Analysis Survey. Rupesh Nasre. Aug 24, 2007.
Detecting Inefficiently-Used Containers to Avoid Bloat Guoqing Xu and Atanas Rountev Department of Computer Science and Engineering Ohio State University.
Reachability Analysis for Callbacks 北京大学 唐浩
Escape Analysis for Java Will von Rosenberg Noah Wallace.
Pointer Analysis – Part I CS Pointer Analysis Answers which pointers can point to which memory locations at run-time Central to many program optimization.
Constructing Accurate Application Call Graphs For Java To Model Library Callbacks Weilei Zhang, Barbara Ryder Department of Computer Science Rutgers University.
5/7/03ICSE Fragment Class Analysis for Testing of Polymorphism in Java Software Atanas (Nasko) Rountev Ohio State University Ana Milanova Barbara.
Sept 12ICSM'041 Precise Identification of Side-Effect-Free Methods in Java Atanas (Nasko) Rountev Ohio State University.
Object Naming Analysis for Reverse- Engineered Sequence Diagrams Atanas (Nasko) Rountev Beth Harkness Connell Ohio State University.
1PLDI 2000 Off-line Variable Substitution for Scaling Points-to Analysis Atanas (Nasko) Rountev PROLANGS Group Rutgers University Satish Chandra Bell Labs.
Compositional Pointer and Escape Analysis for Java programs
Static Analysis of Object References in RMI-based Java Software
Atanas (Nasko) Rountev Ohio State University
Handouts Software Testing and Quality Assurance Theory and Practice Chapter 4 Control Flow Testing
Compositional Pointer and Escape Analysis for Java Programs
Harry Xu University of California, Irvine & Microsoft Research
Zhenbo XU, Jian ZHANG, Zhongxing XU
CACHETOR Detecting Cacheable Data to Remove Bloat
Incrementalized Pointer and Escape Analysis
Paul Ammann & Jeff Offutt
Paul Ammann & Jeff Offutt
Hongtao Yu Wei Huo ZhaoQing Zhang XiaoBing Feng
Pointer analysis.
Context Sensitive Points-to Analysis
Presentation transcript:

Demand-Driven Context-Sensitive Alias Analysis for Java Dacong (Tony) Yan Guoqing (Harry) Xu Atanas Rountev Ohio State University PRESTO: Program Analyses and Software Tools Research Group, Ohio State University

Alias Analysis Many static analysis tools need highly precise and efficiently-computed alias information Desirable properties Demand-driven: query “could x and y alias?” Client-driven: client-defined time budget for a query Typical solution: use points-to analysis Compute the objects that x may point to; same for y; are there common objects? Goal: answer alias queries precisely and efficiently, without computing the complete points-to sets

Redundancy in Points-to Analysis m(a) { b = a; x = a.f; y = b.f; } O O points-to? points-to? points-to? points-to? alias f f alias? x a b y alias

Our Approach Alias analysis Symbolic Points-to Graph Demand-driven and client-driven Field-sensitive and calling-context-sensitive Does not require complete points-to set computation Better performance through method summaries Symbolic Points-to Graph A specialized program representation that enables the demand-driven alias analysis Facilitates computation and use of method summaries

Program Representation Intraprocedural Symbolic Points-To Graph Introduce a symbolic object node s for each formal parameter field read a.fld a call site that returns a reference-typed value Compute intraprocedural points-to relationships m(a) { c = new …; // o1 a.f = c; return c.g; } a sa o1 c f g sg ret

Interprocedural Symbolic Points-To Graph Connect the intraprocedural graphs using entry and exit edges f m(a) { c = new …; // o1 a.f = c; return c.g; } sa o1 a c g ret sg entrym exitm o2 d d = new …; // o2 b = m(d); // call m sm b

Alias Analysis Formulation Field-sensitivity and calling-context-sensitivity: matched points-to edges and entry/exit edges Traverses the object nodes (including symbolic ones) and the edges between them o2 d s1 o1 entry1 exit1 f c a b s2 s3 f, entry1, exit1, f may represent the same concrete object? entry1 alias? entry1, exit1 exit1 f f o1 o2 s1 s2 a alias? c s3

Using Method Summaries Several reachability strings for a selected method Each string is a sequence of field points-to edges between boundary objects of the method Selecting methods for summarization Compute a summary for a method only if it is invoked from many different call sites Summarization ratio for method m the number of incoming call graph edges of m, divided by the average number of incoming call graph edges for all methods m(a) { c = new …; // o1 a.f = c; return c.g; } o1 sa f sg g ret c a summary(m): sa f, g sg

Experimental Evaluation 19 Java programs Number of methods in the whole-program call graph ranging from 2344 to 8789 Experiment 1: compare the precision with a field and context-sensitive, demand-driven, client-driven points-to analysis [PLDI’06] Under the same time budget per alias query Result 1: for 14 programs, the number of alias pairs is lower when using our analysis Result 2: summarization leads to better precision Experiment 2: compare running times with and without method summaries

Running Time Reduction When Using Method Summaries Running Time Reduction = (RTno-summ  RTsumm) / RTno-summ 24% average reduction with threshold T=2

Conclusions A demand-driven alias analysis Answers alias queries directly, without computing the complete points-to sets Selects methods for online summarization to reduce analysis running time Outperforms a highly precise state-of-the-art points-to analysis

Thank you