Atanas (Nasko) Rountev Barbara G. Ryder Rutgers University

Slides:



Advertisements
Similar presentations
ASSUMPTION HIERARCHY FOR A CHA CALL GRAPH CONSTRUCTION ALGORITHM JASON SAWIN & ATANAS ROUNTEV.
Advertisements

Chapter 7 User-Defined Methods. Chapter Objectives  Understand how methods are used in Java programming  Learn about standard (predefined) methods and.
Assembly Code Verification Using Model Checking Hao XIAO Singapore University of Technology and Design.
1 Practical Object-sensitive Points-to Analysis for Java Ana Milanova Atanas Rountev Barbara Ryder Rutgers University.
Parameterized Object Sensitivity for Points-to Analysis for Java Presented By: - Anand Bahety Dan Bucatanschi.
 2006 Pearson Education, Inc. All rights reserved Introduction to Classes and Objects.
ISBN Chapter 11 Abstract Data Types and Encapsulation Concepts.
Telescoping Languages: A Compiler Strategy for Implementation of High-Level Domain-Specific Programming Systems Ken Kennedy Rice University.
Overview of program analysis Mooly Sagiv html://
1 Program Analysis Systematic Domain Design Mooly Sagiv Tel Aviv University Textbook: Principles.
1 ES 314 Advanced Programming Lec 2 Sept 3 Goals: Complete the discussion of problem Review of C++ Object-oriented design Arrays and pointers.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Abstract Data Types and Encapsulation Concepts
Pointer analysis. Pointer Analysis Outline: –What is pointer analysis –Intraprocedural pointer analysis –Interprocedural pointer analysis Andersen and.
Design Synopsys System Verilog API Donations to Accellera João Geada.
Procedure Optimizations and Interprocedural Analysis Chapter 15, 19 Mooly Sagiv.
Exploiting Domain-Specific High-level Runtime Support for Parallel Code Generation Xiaogang Li Ruoming Jin Gagan Agrawal Department of Computer and Information.
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.
chap13 Chapter 13 Programming in the Large.
Dale Roberts Procedural Programming using Java Dale Roberts, Lecturer Computer Science, IUPUI Department of Computer and.
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
Rethinking Soot for Summary-Based Whole- Program Analysis PRESTO: Program Analyses and Software Tools Research Group, Ohio State University Dacong Yan.
CBSE'051 Component-Level Dataflow Analysis Atanas (Nasko) Rountev Ohio State University.
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.
1 © AdaCore under the GNU Free Documentation License Franco Gasperoni
Introduction to OOP CPS235: Introduction.
Chapter 12: Programming in the Large By: Suraya Alias 1-1.
CSE SW Metrics and Quality Engineering Copyright © , Dennis J. Frailey, All Rights Reserved CSE8314M37 8/20/2001Slide 1 SMU CSE 8314 /
5/7/03ICSE Fragment Class Analysis for Testing of Polymorphism in Java Software Atanas (Nasko) Rountev Ohio State University Ana Milanova Barbara.
Week 6: Software Design HNDIT Software Engineering Software Design Learning Outcomes  Understand the activities involved in the Design process.
Unit1: Modeling & Simulation Module5: Logic Simulation Topic: Unknown Logic Value.
Sept 12ICSM'041 Precise Identification of Side-Effect-Free Methods in Java Atanas (Nasko) Rountev Ohio State University.
Andrey Karaulov, Alexander Strabykin Institute for System Programming Russian Academy of Sciences SYRCoSE: Spring Young Researchers Colloquium on Software.
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.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (2/2)
Credible Compilation With Pointers Martin Rinard and Darko Marinov Laboratory for Computer Science Massachusetts Institute of Technology.
A Single Intermediate Language That Supports Multiple Implemtntation of Exceptions Delvin Defoe Washington University in Saint Louis Department of Computer.
Introduction to Algorithms
Static Analysis of Object References in RMI-based Java Software
Code Optimization.
Visit for more Learning Resources
Abstract Data Types and Encapsulation Concepts
Compiler Construction (CS-636)
6.001 SICP Compilation Context: special purpose vs. universal machines
ECE 551: Digital System Design & Synthesis
OOP What is problem? Solution? OOP
Topic: Functions – Part 2
11.1 The Concept of Abstraction
Building a Whole-Program Type Analysis in Eclipse
Object-Orientated Programming
Combining Abstract Interpreters
Points-to Analysis for Java Using Annotated Constraints
Interprocedural Analysis Chapter 19
Abstract Data Types and Encapsulation Concepts
VISUAL BASIC.
Abstract Data Types and Encapsulation Concepts
MSIS 655 Advanced Business Applications Programming
Code Architecture View
Introduction to Classes and Objects
Software Design Lecture : 14.
An Introduction to Software Architecture
CIS601: Object-Oriented Programming in C++
Introduction to Algorithms
Java Methods: A Deeper Look Academic 2019 Class: BIT23/BCS10 Chapter 06 Abdulaziz Yasin Nageye Faculty of Computing Java How to Program, 10/e 1 © Co py.
11.1 The Concept of Abstraction
Chapter 11 Abstraction - The concept of abstraction is fundamental in
Introduction to Classes and Objects
Presentation transcript:

Atanas (Nasko) Rountev Barbara G. Ryder Rutgers University Points-to and Side-effect Analyses for Programs Built with Precompiled Libraries Atanas (Nasko) Rountev Barbara G. Ryder Rutgers University April 2, 2001 CC 2001

Whole-program Analysis Static analysis Optimizing compilers and SE tools Whole-program analysis Complex “global” properties Aggressive optimizations Helps humans Large body of work April 2, 2001 CC 2001

Weaknesses Need the whole program Incomplete programs Parts not implemented yet Separate compilation Precompiled components, no source Limited applicability April 2, 2001 CC 2001

Our Target Problem Goal: handle incompleteness and separation Specific instance C programs with precompiled libraries Points-to analysis and side-effect analysis Importance Points-to and side-effect info is necessary Techniques useful for similar problems April 2, 2001 CC 2001

Overview Introduction Analysis for Programs with Libraries Analysis of Libraries Library Summary Information Analysis of Library Clients Empirical Results Summary April 2, 2001 CC 2001

Programs Built with Libraries Library module Write the library Create library binary Client module Write the client Compile and link with library binary No library source Need separate analyses April 2, 2001 CC 2001

Separate Analysis of a Library Module Unknown client modules Simulated by an abstract client Abstract Client Whole-program Analyzer Library Solution Library Module April 2, 2001 CC 2001

Separate Analysis of a Client Module Use precomputed summary information Enables precise analysis Client Module Whole-program Analyzer Client Solution Library Summary April 2, 2001 CC 2001

Library Summary Information Used later to analyze client modules Enclosed with library binary, reusable Abstract Client Library Module Whole-program Analyzer Solution Summary Generator Library April 2, 2001 CC 2001

Points-to and Side-effect Analyses What variables may *p refer to? Andersen’s analysis What variables may be modified? MOD set for each statement Pointer resolution: *p=0 Procedure calls: backward propagation Wide range of applications April 2, 2001 CC 2001

Overview Introduction Analysis for Programs with Libraries Analysis of Libraries Library Summary Information Analysis of Library Clients Empirical Results Summary April 2, 2001 CC 2001

Separate Analysis of Libraries Unknown clients Access through library interface Abstract client Placeholder variable v0 Placeholder procedure p0 Apply whole-program analyses Reuse of implementation April 2, 2001 CC 2001

Abstract Client proc p0(v1,...,vn) returns ret0 { v0 = vi; v0 = &v; (v  interface) v0 = &v0; v0 = &p0; v0 = *v0; *v0 = v0; v0 = (*v0)(v0,...,v0); ret0 = v0; } April 2, 2001 CC 2001

Library Example global g; proc p1(p,fp) { proc p2(r) local s, t, q; { *r = -(*r); } t = p; q = &s; p2(q); *t = s; (*fp)(t,g); } fp p0 p1 t p g v0 s1: MOD(s1) = {v0,g} April 2, 2001 CC 2001

Overview Introduction Analysis for Programs with Libraries Analysis of Libraries Library Summary Information Analysis of Library Clients Empirical Results Summary April 2, 2001 CC 2001

Library Summary Information Used for separate analysis of clients Enclosed with library binary, reusable Input to whole-program analyzers Best possible precision Basic summary Precision-preserving optimizations Reduce summary size Reduce cost of separate analysis of clients April 2, 2001 CC 2001

Basic Summary proc p1(p,fp) *t=s t=p (*fp)(t,g) q=&s proc p2(r) p2(q) global g; proc p1(p,fp) { local s=1, t, q; t = p; q = &s; p2(q); *t = s; (*fp)(t,g); } proc p2(r) { *r = -(*r); } proc p1(p,fp) *t=s t=p (*fp)(t,g) q=&s proc p2(r) p2(q) Mod(p1): (t,I) Call(p1) : (p2,D) (fp,I) Mod(p2): (r,I) April 2, 2001 CC 2001

Summary Optimizations Replace sets of equivalent variables Have the same points-to sets Replace with a set representative Remove irrelevant summary elements Smaller points-to and MOD sets in clients Inactive variables Inaccessible variables Use solution from separate library analysis April 2, 2001 CC 2001

Optimized Summary proc p1(p,fp) *t=s t=p (*fp)(t,g) q=&s proc p2(r) p2(q) proc p1(rep1,fp) (*fp)(rep1,g) Mod(p1): (t,I) Call(p1) : (p2,D) (fp,I) Mod(p2): (r,I) Mod(p1): (rep1,I) Call(p1) : (fp,I) April 2, 2001 CC 2001

Overview Introduction Analysis for Programs with Libraries Analysis of Libraries Library Summary Information Analysis of Library Clients Empirical Results Summary April 2, 2001 CC 2001

Experiments Library and client points-to analyses BANE toolkit (UC Berkeley) Summary generation and optimization Publicly available C programs Include general-purpose libraries Sun Ultra-60, 360MHz, 512K memory April 2, 2001 CC 2001

Data Programs April 2, 2001 CC 2001

Cost of Library Analysis April 2, 2001 CC 2001

Cost of Client Analysis April 2, 2001 CC 2001

Cost Reduction for Client Analysis April 2, 2001 CC 2001

Summary Challenges for whole-program analysis Programs with precompiled libraries Points-to and side-effect analyses Separate analysis of libraries and clients Summary construction Future work Other points-to analyses Client analyses April 2, 2001 CC 2001