1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai...
-
Upload
jonathan-bradford -
Category
Documents
-
view
226 -
download
0
Transcript of 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai...
![Page 1: 1 Fine Slicing: Theory and Applications for Computation Extraction Aharon Abadi,Ran Ettinger,Yishai A. Feldman IBM Research – Haifa.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/1.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/2.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/3.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/4.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/5.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/6.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/7.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/8.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/9.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/10.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/11.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/12.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/13.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/14.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/15.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/16.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/17.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/18.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/19.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/20.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/21.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/22.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/23.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/24.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/25.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/26.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/27.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/28.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/29.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/30.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/31.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/32.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/33.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/34.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/35.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/36.jpg)
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.](https://reader036.fdocuments.in/reader036/viewer/2022062518/56649ef45503460f94c074f9/html5/thumbnails/37.jpg)
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