Interprocedural Heap Analysis using Access Graphs and Value Contexts
with applications to liveness-based garbage collection Rohan Padhye
under the guidance of
- Prof. Uday Khedker
Interprocedural Heap Analysis using Access Graphs and Value Contexts - - PowerPoint PPT Presentation
Interprocedural Heap Analysis using Access Graphs and Value Contexts with applications to liveness-based garbage collection Rohan Padhye under the guidance of Prof. Uday Khedker Department of Computer Science & Engineering Indian
under the guidance of
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 2 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 3 / 32
1 How to perform a precise alias analysis for arbitrary access paths in
2 How to implement whole-program heap reference analysis in an
3 How to use the resulting access graphs to improve garbage
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 4 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 5 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 6 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 7 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 8 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 9 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 10 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 11 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 11 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
x · · · n n n n a b y z
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
x · · · n n n n a b y z
PTOUT6 = PTIN7 = PTIN8: x S2 n a b y S0 z S1
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
x · · · n n n n a b y z
PTOUT6 = PTIN7 = PTIN8: x S2 n a b y S0 z S1
LVIN9 = LVOUT7 = LVOUT8: x n9 LVIN7 (considering a
may
= x): a x n9 y , , LVIN8 (considering b
may
= x): b x n9 z , , LVOUT6 = LVIN7 ∪ LVIN8: a b x n9 y , , , z ,
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
x · · · n n n n a b y z
PTOUT6 = PTIN7 = PTIN8: x S2 n a b y S0 z S1
PTOUT6 = PTIN7 = PTIN8: x S2 S2 S2
x, a x/n9, b −
n n n a b y S0
y
z S1
z
LVIN9 = LVOUT7 = LVOUT8: x n9 LVIN7 (considering a
may
= x): a x n9 y , , LVIN8 (considering b
may
= x): b x n9 z , , LVOUT6 = LVIN7 ∪ LVIN8: a b x n9 y , , , z ,
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
x · · · n n n n a b y z
PTOUT6 = PTIN7 = PTIN8: x S2 n a b y S0 z S1
PTOUT6 = PTIN7 = PTIN8: x S2 S2 S2
x, a x/n9, b −
n n n a b y S0
y
z S1
z
LVIN9 = LVOUT7 = LVOUT8: x n9 LVIN7 (considering a
may
= x): a x n9 y , , LVIN8 (considering b
may
= x): b x n9 z , , LVOUT6 = LVIN7 ∪ LVIN8: a b x n9 y , , , z ,
LVIN9 = LVOUT7 = LVOUT8: x n9 LVIN7 (considering a must = x): x y , LVIN8 (considering b = x): x n9 LVOUT6 = LVIN7 ∪ LVIN8: x n9 y ,
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
y = new S0 z = new S1 t = new S2 t.n = x S3 x = t S4 a = x S5 b = a.n S6 a.n = y S7 b.n = z S8 use x.n S9 exit S10
x · · · n n n n a b y z
PTOUT6 = PTIN7 = PTIN8: x S2 n a b y S0 z S1
PTOUT6 = PTIN7 = PTIN8: x S2 S2 S2
x, a x/n9, b −
n n n a b y S0
y
z S1
z
LVIN9 = LVOUT7 = LVOUT8: x n9 LVIN7 (considering a
may
= x): a x n9 y , , LVIN8 (considering b
may
= x): b x n9 z , , LVOUT6 = LVIN7 ∪ LVIN8: a b x n9 y , , , z ,
LVIN9 = LVOUT7 = LVOUT8: x n9 LVIN7 (considering a must = x): x y , LVIN8 (considering b = x): x n9 LVOUT6 = LVIN7 ∪ LVIN8: x n9 y ,
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 12 / 32
1
2
1
2
3
4
5
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 13 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 14 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 14 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 15 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 15 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 16 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 16 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 17 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 17 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 18 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 18 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 18 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 18 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 19 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 20 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 21 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 22 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X1, a+b−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X1, a+b−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X1, a+b−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X1, a+b− X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X1, a+b− X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X1, a+b− X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+ X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+ X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X3, a−b+ X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X3, a−b+ X3, a−b+c− X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X3, a−b+ X3, a−b+c− X2, u+
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X3, a−b+ X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X3, a−b+ X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X3, a−b+c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X1, a+b−c− X3, a−b+c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X3, a−b+c− X1, a+b−c− X3, a−b+c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X0, p+q− X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X0, p+q− X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X0, p+q− X0, p+q−r− X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
X0, ⊤ X0, p+ X0, p+q− X0, p+q−r− X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b− X3, a−b+ X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X1, a+b−c− X3, a−b+c− X2, u+ X2, u+v−
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 23 / 32
Context<M,N,A> + getMethod(): M + getEntryValue() : A + getExitValue() : A + getValueBefore(N) : A + getValueAfter(N) : A InterProceduralAnalysis<M,N,A> + topValue() : A + boundaryValue(M) : A + copy(A) : A + meet(A,A) : A + normalFlowFunction(Context<M,N,A>, N, A) : A + callEntryFlowFunction(Context<M,N,A>, M, N, A) : A + callExitFlowFunction(Context<M,N,A>, M, N, A) : A + callLocalFlowFunction(Context<M,N,A>, N, A) : A + programRepresentation() : ProgramRepresentation<M,N> + doAnalysis() : void + getContexts() : Map<M,List<Context<M,N,A>>> + getMeetOverPathsSolution() : DataFlowSolution<M,N,A> ForwardInterProceduralAnalysis<M,N,A> + doAnalysis() : void BackwardInterProceduralAnalysis<M,N,A> + doAnalysis() : void ProgramRepresentation<M,N> + getEntryPoints() : List<M> + getControlFlowGraph(M) : DirectedGraph<N> + isCall(N) : boolean + resolveTargets(M, N) : List<M>
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 24 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 25 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 26 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 26 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 26 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 26 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 26 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 26 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 27 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths. Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
2 Augment garbage collector to traverse access graphs. Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
2 Augment garbage collector to traverse access graphs.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
2 Augment garbage collector to traverse access graphs.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
2 Augment garbage collector to traverse access graphs.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
2 Augment garbage collector to traverse access graphs.
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
1 Assign null to dead access paths.
2 Augment garbage collector to traverse access graphs.
3 Dynamic heap pruning - a hybrid approach. Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 28 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
4
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
4
5
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
4
5
3 For each labelled object in the heap do: Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
4
5
3 For each labelled object in the heap do: 1
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
4
5
3 For each labelled object in the heap do: 1
2
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
1 Pause a running program when pruning has to be performed. 2 For each frame on the call stack do: 1
2
3
4
5
3 For each labelled object in the heap do: 1
2
4 Resume the program. Let garbage collection run as normal. Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 29 / 32
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 30 / 32
1 A liveness-driven heap abstraction for precise alias analysis. 2 A generic access graph library implemented in Java. 3 A generic inter-procedural data flow analysis framework implemented
4 A flow- and context-sensitive points-to analysis implemented in Soot
5 A technique for performing dynamic heap pruning implemented using
Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 31 / 32
1 Implementation of an inter-procedural liveness-driven heap points-to
2 Performance analysis of dynamic heap pruning on real benchmarks. 3 Shape analysis using accessor relationship graphs. Rohan Padhye (IIT Bombay) Interprocedural Heap Analysis MTP 32 / 32