Top Banner
1 Control Flow Analysis Mooly Sagiv http://www.math.tau.ac.il/~sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 http://www.cs.berkeley.edu/Research/ ~Aiken/bane.html http://www.cs.washington.edu/research/pr ojects/cecil Assign 3 (11/7)
48

1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

Dec 20, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

1

Control Flow AnalysisMooly Sagiv

http://www.math.tau.ac.il/~sagiv/courses/pa01.html

Tel Aviv University

640-6706

Textbook Chapter 3

http://www.cs.berkeley.edu/Research/~Aiken/bane.html

http://www.cs.washington.edu/research/projects/cecil

Assign 3 (11/7)

Page 2: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

2

Goals

Understand the problem of Control Flow Analysis– in Functional Languages

– In Object Oriented Languages

– Function Pointers

Learn Constraint Based Program Analysis Technique– General

– Usage for Control Flow Analysis

– Algorithms

– Systems

Similarities between Problems &Techniques

Page 3: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

4

A Motivating Exampleclass Vehicle Object { int position = 10; void move (int x1) { position = position + x1 ;}}class Car extends Vehicle { int passengers;

void await(Vehicle v) { if (v.position < position) then v.move(position - v.position); else this.move(10); }}class Truck extends Vehicle {

void move(int x2) { if (x2 < 55) position += x2; }}void main { Car c; Truck t; Vehicle v1;

new c; new t; v1 := c;c.passangers := 2;c.move(60);v1.move(70);c.await(t) ;}

Page 4: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

5

A Motivating Exampleclass Vehicle Object { int position = 10; static void move (Vehicle this1 {Car} , int x1) { position = position + x1 ;}}class Car extends Vehicle { int passengers;

static void await(Car this2 {Car} , Vehicle v {Truck}) { if (v.position < position) then v.move(v, position - v.position); else this2.move(this2, 10); }}class Truck extends Vehicle {

static void move(Truck this3 {Truck}, int x2) { if (x2 < 55) position += x2; }}void main { Car c; Truck t; Vehicle v1;

new c; new t; v1 := c;c.passangers := 2;c.move(c, 60);v1.move(v1, 70);c.await(c, t) ;}

Page 5: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

6

The Control Flow Analysis (CFA) Problem

Given a program in a functional programming language with higher order functions(functions can serve as parameters and return values)

Find out for each function invocation which functions may be applied

Obvious in C without function pointers Difficult in C++, Java and ML The Dynamic Dispatch Problem

Page 6: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

7

An ML Example

let f = fn x => x 1 ;

g = fn y => y + 2 ;

h = fn z => z + 3;

in (f g) + (f h)

Page 7: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

8

An ML Example

let f = fn x => /* {g, h} */ x 1 ;

g = fn y => y + 2 ;

h = fn z => z + 3;

in (f g) + (f h)

Page 8: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

9

The Language FUN Notations

– e Exp // expressions (or labeled terms)

– t Term // terms (or unlabeled terms)

– f, x Var // variables

– c Const // Constants

– op Op // Binary operators

– l Lab // Labels

Abstract Syntax– e ::= tl

– t ::= c | x | fn x e // function definition | fun f x e // recursive function definition | e1 e2 // function applications | if e0 then e1 else e2 | let x = e1 in e2 | e1 op e2

Page 9: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

10

A Simple Example

((fn x x1)2 (fn y y3)4)5

Page 10: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

11

Factorial

(let fact = fun f n (if (n = 0)1 then 12

else ((n3 * (f4 (n5 – 16)7)8)9

)10

Page 11: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

12

An Example which Always Loops

(let g = fun f x (f1 (fn y y2)3)4

)5

(g6 (fn z z7)8)9

)10

Page 12: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

13

The 0-CFA Problem Control flow analysis without contexts Compute for every program a pair (C, ) where:

– C is the abstract cache associating abstract values with labeled program points

is the abstract environment associating abstract values with program variables

Abstract Values– v Val = P(Term) // Abstract values Env = Var Val // Abstract environment

– C Cache =Lab Val // Abstract Cache

– For function application (t1l1 t2

l2)l

C(l1) determines the function that can be applied

– Formally …

Page 13: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

14

Possible Solutions for ((fn x x1)2 (fn y y3)4)5

1 {fn y y3} {fn y y3}

2 {fn x x1} {fn x x1}

3 {} {}

4 {fn y y3} {fn y y3}

5 {fn y y3} {fn y y3}

x {fn y y3} {}

y {} {}

Page 14: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

15

(let g = fun f x (f1 (fn y y2)3)4

)5

(g6 (fn z z7)8)9

Shorthands

sf fun f x (f1 (fn y y2)3)4

idy fn y y2

idz fn z z7

C(1) = {sf} C(2) = {} C(3) = {idy}

C(4) = {} C(5) = {sf} C(6) = {sf}

C(7) = {} C(8) = {idz} C(9) = {}

C(10) = {} (x) = {idy , idz } (y) = {}

(z) = {}

Page 15: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

16

Relationship to Dataflow Analysis

Expressions are side effect free– no entry/exit

A single environment Represents information at different points via

maps A single value for all occurrences of a variable Function applications act similar to assignments

– “Definition” - Function abstraction is created

– “Use” - Function is applied

Page 16: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

17

A Formal Specification of 0-CFA

A Boolean function define when a solution is acceptable

(C, ) e means that (C, ) is acceptable for the expression e

Define by structural induction on e Every function is analyzed once Every acceptable solution is sound (conservative) Many acceptable solutions Generate a set of constraints Obtain the least acceptable solution by solving the

constraints

Page 17: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

18

Solving 0-CFA (1)

Define a concrete semantics Define a Galois connection between the concrete

and the abstract semantics Define abstract meaning for statements Show local soundness Implement Chaotic iterations

Page 18: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

19

Solving 0-CFA (2)

Generate a system of set of constraints – lhs rhs

– {t} rhs’ lhs rhs (conditional constraint)

Show that any solution to the set of constraints is sound

Find the minimal solution Systems for finding the minimal solution exist Applicable to different programming languages

Page 19: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

20

Set Constraints

A set of rules of the form:– lhs rhs

– {t} rhs’ lhs rhs (conditional constraint)

– lhs, rhs, rhs’ are» terms

» C(l)(x)

The least solution (C, ) can be found iteratively– start with empty sets

– add terms when needed

Efficient cubic graph based solution

Page 20: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

21

Syntax Directed Constraint Generation (Part I)

C* cl = {}C* xl = {r (x) C (l)}

C* (fn x e)l = C* e { {fn x e} C(l)}C* (fun f x e)l = C* e { {fun f x e} C(l)} {{fun f x e} r( f)}

C* (t1l1 t2

l2)l = C* t1l1 C* t2

l2 {{t} C(l) C (l2) r (x) | t=fn x t0

l0 Term* } {{t} C(l) C (l0) C (l) | t=fn x t0

l0 Term* } {{t} C(l) C (l2) r (x) | t=fun x t0

l0 Term* } {{t} C(l) C (l0) C (l) | t=fun x t0

l0 Term* }

Page 21: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

22

Syntax Directed Constraint Generation (Part II)

C* (if t0l0 then t1

l1 else t2l2)l = C* t0

l0 C* t1l1 C* t2

l2 {C(l1) C (l)} {C(l2) C (l)}

C* (let x = t1l1 in t2

l2)l = C* t1l1 C* t2

l2 {C(l1) r (x)} {C(l2) C(l)}

C* (t1l1 op t2

l2)l = C* t1l1 C* t2

l2

Page 22: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

23

Set Constraints for ((fn x x1)2 (fn y y3)4)5

Page 23: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

24

Iterative Solution to the Set Constraints for ((fn x x1)2 (fn y y3)4)5

step Constraint 1 2 3 4 x y

Page 24: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

25

Graph Based Solution toConstraint Systems

Construct a directed graph– Nodes

» Set variables

– Edges» u v

The set variable v may depend on u

Iteratively traverse the graph– Every operation adds a term

– Must terminate

Read the solution from the graph

Page 25: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

26

The Constraint Graph for 0-CFA Nodes

– C(l)– r(x)

Edges – p1 p2

» Construct p1 p2

– {t} p p1 p2» Construct p1 p2» Construct p p2

Dependencies– D[v]

» The set of terms that must be included in v

Page 26: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

27

WL :=

For all nodes v:

D[v] :=

E[v] :=

For all constraints c:

case c {t} p:

add(p, {t})

case c p1 p2:

E[p1] := E[p1] {c}

case c={t} p p1 p2

E[p] := E[p] {c}

E[p1] := E[p1] {c}

procedure add(q, s)

if (s D(q)) then

D[q] : = D[q] s

WL := WL {q}

while WL do

select and remove an element v from WL

for all c E[v] do

case c p1 p2: add(p2, D[p1])

case c={t} p p1 p2

if t D[p] then add(p2, D[p1])

Page 27: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

28

Adding Data Flow Information

Dataflow values can affect control flow analysis Example

(let f = (fn x (if (x1 > 02)3 then (fn y y4)5

else (fn z 56)7

)8

)9

in ((f10 311)12 013)14)15

Page 28: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

29

Adding Data Flow Information Add a finite set of “abstract” values per program

Data Update Val = P(TermData)

Env = Var Val // Abstract environment

– C Cache - Lab Val // Abstract Cache

Generate extra constraints for data Obtained a more precise solution A special of case of product domain (4.4) The combination of two analyses may be more

precise than both For some programs may even be more efficient

Page 29: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

30

Adding Dataflow Information (Sign Analysis)

Sign analysis Add a finite set of “abstract” values per program

Data = {P, N, TT, FF} Update Val = P(TermData) dc is the abstract value that represents a constant c

– d3 = {p}

– d-7= {n}

– dtrue= {tt}

– dfalse= {ff}

Every operator is conservatively interpreted

Page 30: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

31

Syntax Directed Constraint Generation (Part I)

C* cl = dc C (l)}C* xl = {r (x) C (l)}

C* (fn x e)l = C* e { {fn x e} C(l)}C* (fun f x e)l = C* e { {fun f x e} C(l)} {{fun f x e} r( f)}

C* (t1l1 t2

l2)l = C* t1l1 C* t2

l2 {{t} C(l) C (l2) r (x) | t=fn x t0

l0 Term* } {{t} C(l) C (l0) C (l) | t=fn x t0

l0 Term* } {{t} C(l) C (l2) r (x) | t=fun x t0

l0 Term* } {{t} C(l) C (l0) C (l) | t=fun x t0

l0 Term* }

Page 31: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

32

Syntax Directed Constraint Generation (Part II)

C* (if t0l0 then t1

l1 else t2l2)l = C* t0

l0 C* t1l1 C* t2

l2 {dt C (l0) C(l1) C (l)} {df C (l0) C(l2) C (l)}

C* (let x = t1l1 in t2

l2)l = C* t1l1 C* t2

l2 {C(l1) r (x)} {C(l2) C(l)}

C* (t1l1 op t2

l2)l = C* t1l1 C* t2

l2 {C(l1) op C(l2) C(l)}

Page 32: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

33

Adding Context Information The analysis does not distinguish between different

occurrences of a variable(Monovariant analysis)

Example(let f = (fn x x1) 2

in ((f3 f4)5 (fn y y6) 7)8)9

Source to source can help (but may lead to code explosion)

Example rewrittenlet f1 = fn x1 x1 in let f2 = fn x2 x2

in (f1 f2) (fn y y)

Page 33: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

34

Simplified K-CFA

Records the last k dynamic calls (for some fixed k)

Similar to the call string approach Remember the context in which expression is

evaluated Val is now P(Term)Contexts

Env = Var Contexts Val

– C Cache - LabContexts Val

Page 34: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

35

1-CFA (let f = (fn x x1) 2 in ((f3 f4)5 (fn y y6) 7)8)9

Contexts– [] - The empty context

– [5] The application at label 5

– [8] The application at label 8

Polyvariant Control FlowC(1, [5]) = (x, 5)= C(2, []) = C(3, []) = (f, []) = ({(fn x x1)}, [] )C(1, [8]) = (x, 8)= C(7, []) = C(8, []) = C(9, []) = ({(fn y y6)}, [] )

Page 35: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

36

A Motivating Exampleclass Vehicle Object { int position = 10; static void move (Vehicle this1 {Car} , int x1) { position = position + x1 ;}}class Car extends Vehicle { int passengers;

static void await(Car this2 {Car} , Vehicle v {Truck}) { if (v.position < position) then v.move(v, position - v.position); else this2.move(this2, 10); }}class Truck extends Vehicle {

static void move(Truck this3 {Truck}, int x2) { if (x2 < 55) position += x2; }}void main { Car c; Truck t; Vehicle v1;

new c; new t; v1 := c;c.passangers := 2;c.move(c, 60);v1.move(v1, 70);c.await(c, t) ;}

Page 36: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

37

class Vehicle Object { int position = 10; static void move (Vehicle t1 , int x1) { position = position + x1 ;}}class Car extends Vehicle { int passengers;

static void await(Car t2 , Vehicle v) { if (v.position < position) then v.move(v, position - v.position); else t2.move(t2, 10); }}class Truck extends Vehicle {

static void move(Truck t3, int x2) { if (x2 < 55) position += x2; }}void main { Car c; Truck t; Vehicle v1;

new c; new t; v1 := c;c.passangers := 2;c.move(c, 60);v1.move(v1, 70);c.await(c, t) ;}

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

Page 37: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

38

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

Page 38: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

39

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

Page 39: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

40

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

t

Page 40: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

41

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

t

Page 41: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

42

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

t

Page 42: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

43

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

t

Page 43: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

44

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

t

Page 44: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

45

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

WL

c

t

c

c

c

t

t

Page 45: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

46

{V} cl(v) cl(v)cl(t1)

{T} cl(v) cl(v)cl(t3)

{C} cl(v) cl(v)cl(t1)

{C} cl(t2) cl(t2)cl(t1)

{C} cl(c)

{T} cl(t)

cl(c) cl(v1)

{C} cl(c) cl(c)cl(t1)

{V} cl(v1) cl(v1)cl(t1)

{T} cl(v1) cl(v1)cl(t3)

{C} cl(v1) cl(v1)cl(t1)

{C} cl(c) cl(t)cl(v)

{C} cl(c) cl(c)cl(t2)

cl(c)

cl(t1)

cl(t2)

cl(t3)

cl(v)

cl(t)

cl(v1)

c

t

c

c

c

t

t

Page 46: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

47

A Motivating Exampleclass Vehicle Object { int position = 10; static void move (Vehicle this1 {Car} , int x1) { position = position + x1 ;}}class Car extends Vehicle { int passengers;

static void await(Car this2 {Car} , Vehicle v {Truck}) { if (v.position < position) then v.move(v, position - v.position); else this2.move(this2, 10); }}class Truck extends Vehicle {

static void move(Truck this3 {Truck}, int x2) { if (x2 < 55) position += x2; }}void main { Car c; Truck t; Vehicle v1;

new c; new t; v1 := c;c.passangers := 2;c.move(c, 60);v1.move(v1, 70);c.await(c, t) ;}

Page 47: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

48

Missing Material Efficient Cubic Solution to Set Constraints

www.cs.berkeley.edu/Research/Aiken/bane.html Experimental results for OO

www.cs.washington.edu/research/projects/cecil Operational Semantics for FUN (3.2.1) Defining acceptability of set constraints Using general lattices as Dataflow values

instead of powersets (3.5.2) Lower-bounds

– Decidability of JOP– Polynomiality

Page 48: 1 Control Flow Analysis Mooly Sagiv sagiv/courses/pa01.html Tel Aviv University 640-6706 Textbook Chapter 3 Aiken/bane.html.

49

Conclusions

Set constraints are quite useful– A Uniform syntax

– Can even deal with pointers

But semantic foundation is still based on abstract interpretation

Techniques used in functional and imperative (OO) programming are similar

Control and data flow analysis are related