+ All Categories
Home > Documents > 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai...

1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai...

Date post: 13-Jan-2016
Category:
Upload: jonathan-bradford
View: 234 times
Download: 0 times
Share this document with a friend
Popular Tags:
37
1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa
Transcript
Page 1: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

1

Fine Slicing:Theory and Applications for Computation Extraction

Aharon Abadi,Ran Ettinger,Yishai A. FeldmanIBM Research – Haifa

Page 2: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

2

Program Slicing

Program

x := expStart Slice x := exp

Slice

The same sequence of values

Page 3: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

3

Example

x := 6y := 3f(x,y)x := 9y : = 2w : = x*y

x := 9y : = 2w : = x*y

x := 6y := 3

w : = x*y

w := 18x := 6y := 2f(x,y)x := 9y : = 2w : = x*yz := w

x := 9y : = 2w : = x*yz := w

w := 18

z := w

Page 4: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

4

A:Z0A:Z0

Control-Flow Path Compression

go-to Bgo-to B

if-zero-go-to A

test X

Work in two stages:- Compute the ‘traditional’ slice

- Control dependences- Data Dependences

- Compute the necessary branches to prevent infeasible control paths

test X

if-zero-go-to A

. . .

L:test Y

if-zero-

. . .

go-to L

B:

. . .

B:

Page 5: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

5

A:Z0

go-to B

if-zero-go-to A

test X

This algorithm:- preserves behavior- yields a sub-program

- one version may turn conditional branches into unconditional ones (“rhetorization”)

B:go-to Bgo-to B

test X test X

. . .

L:test Y

if-zero-

. . .

go-to L

B:

. . .

if-zero-go-to A

A:Z0

Control-Flow Path Compression

Page 6: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

6

Data-Flow Path Compression

The result is too large

The value of R7 does not depend on the loop

R7:=exp1Out: R0:=R7 + 1

Out: R0:= R7 + 1

Start:R2:=0

R7:=exp1

Loop: R2:=R2 + 1

compare R2, R9

if-not-less-go-to Out

use R7

Temp:=R7; spill R7 to memory

… ; code that uses

; all registers

R7:=Temp; restore R7

go-to Loop

Start:R2:=0 R7:=exp1Loop: R2:=R2 + 1 compare R2, R9 if-not-less-go-to Out Temp:=R7 R7:=Temp go-to Loop Out: R0:=R7 + 1

Page 7: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

7

Control-Flow Path Compressionx<11

F T

x:=x+1 goto A4

goto A2

y<TT F

y:=y-1

goto A

print(x)

x<9T F

x:=x-1x:=x+2

goto A2

goto A3

if (x<11)

x := x+1

goto A2

A1: if (y<T)

y := y–1

goto A1

goto A2

goto A4

x := x-1

A4: if (x<9) goto A3

A3: x := x+2

A2: print(x)

Page 8: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

8

Compute the ‘Traditional’ Slicex<11

F T

x:=x+1 goto A4

goto A2

y<TT F

y:=y-1

goto A

print(x)

x<9T F

x:=x-1x:=x+2

goto A2

goto A3

if (x<11)

x := x+1

goto A2

A1: if (y<T)

y := y–1

goto A1

goto A2

goto A4

x := x-1

A4: if (x<9) goto A3

A3: x := x+2

print(x)

A2: print(x)

x:=x+1

x:=x+2 x:=x-1

x<11

x<9

y<T

Page 9: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

9

Completing Control Flow Paths:Main Lemma

• precisely identifies the possible sets of branches that may be added to the slice

• any path in the original program can be chosen

• optimizations can be performed

All paths from the same point in the slice enter the slice at a single point

Page 10: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

10

Compute the Necessary Branchesx<11

F T

x:=x+1 goto A4

goto A2

y<TT F

y:=y-1

goto A

print(x)

x<9T F

x:=x-1x:=x+2

goto A2

goto A3

if(x<11)

x:=x+1

goto A2

A1: if(y<T)

y:=y–1

goto A1

goto A2

goto A4

x:=x-1

A4: if(x<9) goto A3

A3: x:=x+2

A2: print(x)

Page 11: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

11

Start:R2:=0 R7:=exp1Loop: R2:=R2 + 1 compare R2, R9 if-not-less-go-to Out use R7 Temp:=R7; spill R7 to ;memory … ; code that uses ;all registers R7:=Temp; restore R7 go-to Loop Out: R0:=R7 + 1

Data-Flow Path Compression

R7:=exp1Out:R0:=R7 + 1 +1

R7:=exp1

exit

R0:=R7+1

R2:=0

R2:=R2+1

compare R2,R9

if-not-less

use R7

Temp:=R7

R7:=Temp

goto Loop

go-to Out

Page 12: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

12

++

++

exp1

Data-Flow Path Compression

R7:=exp1

exit

R7:=R7+1

R2:=0

R2:=R2+1

compare R2,R9

if-not-less

use R7

Temp:=R7

R7:=Temp

goto-Loop

• R7,Temp carry the value of exp1

• Use data edges instead of variables

go-to Out

out data portholds the last valuein data port

holds the next value

d1 d2

d1

Start:R2:=0 R7:=exp1Loop: R2:=R2 + 1 compare R2, R9 if-not-less-go-to Out use R7 Temp:=R7; spill R7 to ; memory … ; code that uses ; all registers R7:=Temp; restore R7 go-to Loop Out: R0:=R7+1

0

• The Plan Calculus:The Programmer’s Apprentice,Rich and Waters, 1990

Page 13: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

13

exp1

entry

0

exit

++

R7

R0

R9

R2

++

R2

T F

compare R2,R9

R7:= exp1R0:=R7 + 1

Start:R2:=0

Loop: R2:=R2 + 1 compare R2, R9 if-not-less-go-to Out use R7 Temp:=R7; spill R7 to ; memory … ; code that uses ; all registers R7:=Temp; restore R7 go-to Loop Out: R0:=R7 + 1

R7:=exp1

Out: R0:=R7 + 1

R7:=exp1

if-not-less

use R7

Page 14: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

14

exp1

0

exit

++

R7

R0

R9

R2

++

R2

T F

compare R2,R9

Start:R2:=0

Loop:R2:=R2 + 1 compare R2, R9 if-not-less- use R7 ; spill R7 to ; memory … ; code that uses ; all registers ; restore R7 go-to Loop Out: R0:=R7 + 1

R7:=exp1

if-not-less

use R7

Decompression

go-to Out

Temp:=R7

R7:=Temp

R7:=exp1

R0:=R7 + 1

go-to Out

entry

Out:

Page 15: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

15

If(q)

print(x)

If(i>10)

+

If(q)

If(q) goto Skip

x := 1

goto Outx := 2Skip:

Out: print(x)

x := 1

If(i>10) goto Out

i := i + 1

goto loop

x := 2

If(q) goto Skip

print(x)

Loop:

Skip:

Out: print(x)

2

1

goto Skip

goto out x := 2

x := 1

0ix := 1

x := 2

x := 1

i := 0i := 0

i := 0

Page 16: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

16

out.println("<table border=0>");

int start = page * 20;

int end = start + 20;

end = Math.min(end,

album.getPictures().size());

for (int i = start; i < end; i++) {

Picture picture = album.getPicture(i);

printPicture(out, picture);

}

out.println("</table>");

int start = page * 20;int end = start + 20;end = Math.min(end,

album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; I < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); }display(out, start, end, pictures);

void display(PrintStream out, int start,

int end, Queue<Picture> pictures) {

out.println("<table border=0>");

for (int i = start; i < end; i++) {

printPicture(out,pictures.remove());

}

out.println("</table>");

}

Fine Slicing Motivating Example

Automatically extracts Out computation (The view model)

Page 17: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

17

slice (v.): to cut with or as if with a knife

Merriam-Webster

slice (n.): a thin flat piece cut from something

Page 18: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

18

Fine Slicing

• A generalization of traditional program slicing• Fine slices can be precisely bounded

– Slicing criteria include set of data and control dependences to ignore

• Fine slices are executable and extractable• Complement slices (co-slices) are also fine

slices• Oracle-based semantics for fine slices• Algorithm for computing data-structure

representing the oracle

Page 19: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

19

Extract Computation

• A new refactoring• Extracts a fine slice into contiguous code• Computes the co-slice• Computation can then be extracted into a

separate method using Extract Method• Passes necessary “oracle” variables between

slice and co-slice• Generates new containers if series of values

need to be passed

Page 20: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

20++

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); printPicture(out, picture);}out.println("</table>");

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

p1

p1

p2

p2

Token Semantics

Page 21: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

21++

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); printPicture(out, picture);}out.println("</table>");

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

printPicture

Fine Slicing

Page 22: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

22++

out.println("<table border=0>");for (int i = start; i < end; i++) { printPicture(out, picture);}out.println("</table>");

entry

println

out

out

T F

>

i

out

end

printPicture

out

out

println

i

"<table border=0>"

"</table>"

exit

printPicture

startpicture

The Fine Slice

p1 p2 p3

Page 23: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

23++

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); printPicture(out, picture);}out.println("</table>");

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

printPicture

Co-Slicing

Page 24: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

24++

int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); }

entry

*

album

getPictures

size

page

min

+

start

end

T F

>

getPicture

i

end

out

i

20

exit

startpicture

The Co-Slice

Page 25: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

25++

entry

*

album

getPictures

size

page

min

+

start

end

T F

>

getPicture

i

end

out

i

20

exit

startpicture

++

entry

println

out

T F

>

end

out

println

i

"<table border=0>"

"</table>"

exit

printPicture

startpicture

Fine slice Co-slice

out

p1 p2 p3

A place forThe call

Page 26: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

26

How do we distinguish between sequence of values and single value?

++

entry

println

out

out

T F

>

i

out

end

printPicture

out

out

println

i

"<table border=0>"

"</table>"

exit

printPicture

startpicture

++

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

Every cycle of controlthat passes through din does not pass through dout

Therefore

din requires singlevalue

Page 27: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

27

++

entry

println

out

out

T F

>

i

out

end

printPicture

out

out

println

i

"<table border=0>"

"</table>"

exit

printPicture

startpicture

++

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

There is a cycle of control that passes through din and dout

Thereforedin may require multiplesingle value

How do we distinguish between sequence of values and single value?

Page 28: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

28

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); printPicture(out, picture);}out.println("</table>");

Adding Container

void display(PrintStream out, int start,

int end, Picture picture) {

out.println("<table border=0>");

for (int i = start; i < end; i++) {

printPicture(out,picture);

}

out.println("</table>");

}

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); printPicture(out,pictures.remove());}out.println("</table>");

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); printPicture(out,pictures.remove());}out.println("</table>");

void display(PrintStream out, int start,

int end, Queue<Picture> pictures) {

out.println("<table border=0>");

for (int i = start; i < end; i++) {

printPicture(out,pictures.remove());

}

out.println("</table>");

}

Page 29: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

29

Adding Containerout.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); printPicture(out,pictures.remove());}out.println("</table>");

void display(PrintStream out, int start,

int end, Queue<Picture> pictures) {

out.println("<table border=0>");

for (int i = start; i < end; i++) {

printPicture(out,pictures.remove());

}

out.println("</table>");

}

int start = page * 20;int end = start + 20;end = Math.min(end,

album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; I < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); }display(out, start, end, pictures);

Page 30: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

30++

println

>

remove

printPicture println

++

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); printPicture(out,pictures.remove());}out.println("</table>");

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

new

remove

add

picture

pictures

picture

pictures

pictures

Adding a Container

pictures

Page 31: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

31++

println

<

remove

printPicture println

++

void display(PrintStream out, int start, int end, Queue<Picture> pictures){ out.println("<table border=0>"); for (int i = start; i < end; i++) { printPicture(out, pictures.remove()); } out.println("</table>");}

entry

println

out

out

start

T F

>

out

end

printPicture

out

println

i

"<table border=0>"

"</table>"

exit

pictures

remove

entry

i

out

The Fine Slice

pictures

pictures

picture

Page 32: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

32++

println

>

remove

printPicture println

++

entry

println

out

*

album

getPictures

size

page

min

+ out

start

end

T F

>

getPicture

i

out

end

printPicture

out

out

println

i

"<table border=0>"

20

"</table>"

exit

new

remove

add

out.println("<table border=0>");int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); printPicture(out,pictures.remove());}out.println("</table>");

Program with

Container

pictures

pictures

pictures

pictures

picture

picture

Page 33: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

33++

>

++

int start = page * 20;int end = start + 20;end = Math.min(end, album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; i < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); }display(out, start, end, pictures);

entry

*

album

getPictures

size

page

min

+

out

start

end

T F

>

getPicture

i

end

i

20

exit

newpictures

add

display

pictures

start

out

The Co-Slice

pictures

pictures

pictures

picture

Page 34: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

34

out.println("<table border=0>");

int start = page * 20;

int end = start + 20;

end = Math.min(end,

album.getPictures().size());

for (int i = start; i < end; i++) {

Picture picture = album.getPicture(i);

printPicture(out, picture);

}

out.println("</table>");

int start = page * 20;int end = start + 20;end = Math.min(end,

album.getPictures().size());Queue<Picture> pictures = new LinkedList<Picture>();for (int i = start; I < end; i++) { Picture picture = album.getPicture(i); pictures.add(picture); }display(out, start, end, pictures);

void display(PrintStream out, int start,

int end, Queue<Picture> pictures) {

out.println("<table border=0>");

for (int i = start; i < end; i++) {

printPicture(out,pictures.remove());

}

out.println("</table>");

}

Fine Slicing Motivating Example

Automatically extracts Out computation (The view model)

Page 35: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

35

Fine Slicing Algorithm

• Compute the core slice by following unfiltered data and control dependence relations backwards in the plan.

• (Semantic Restoration) Add necessary tests to make the slice executable.

out.println("<table border=0>");

int start = page * 20;

int end = start + 20;

end = Math.min(end,

album.getPictures().size());

for (int i = start; i < end; i++) {

Picture picture = album.getPicture(i);

printPicture(out, picture);

}

out.println("</table>");

Page 36: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

36

Stat1;

if(q){

x = x + 1;;

}else{

y = x + 2;

}

Fine Slicing Algorithm

• Compute the core slice by following unfiltered data and control dependence relations backwards in the plan.

• (Semantic Restoration) Add necessary tests to make the slice executable.

stat1;

x = x + 1;;

y = x + 2;

Stat1;

if(q){

x = x + 1;;

}else{

y = x + 2;

}

Page 37: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.

37

Extract Computation

• Get as input the program (P) and slicing criteria (SC)

• Compute the fine slice (FS) corresponding to P and SC

• Compute the Co-Slice:– Compute fine slice starting from P\FS – Disconnect the return values according to SC

• Add containers to the fine slice and co-slice• Add the call from co-slice to the fine slice


Recommended