Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
George Kastrinis ~ Yannis SmaragdakisUniversity of Athens
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
● Significant speedup from coarsening exceptions
● Type-based merging as an effective coarsening
● No trade-off in precision (in “normal” code)
● Datalog formalism makes changes clear
● Also excellent implementation platform
EXECUTIVE SUMMARY
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
What objects may a variable point to?(statically, object = allocation site)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
void foo (...) throws AnException {try {
...
throw new MyException();...
}
catch (OtherException e) { ... }}
REFRESHER ON EXCEPTIONS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
SIGNIFICANCE OF EXCEPTIONS
● Exceptions are non-local control flow
● They are also regular objects with data fields
● How significant is the data-flow of exceptions?
● Our research indirectly answers this
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
FLOW OF OBJECTS
method
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
NORMAL FLOW OF OBJECTS
methodarguments
return
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXCEPTIONAL FLOW OF OBJECTS
methodarguments
return
throw
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
methodarguments
return
throw
Normal Flow
Exceptional Flow
VS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
Normal Flow VS Exceptional Flow
Which one do you think dominates?
● i.e., for the average method are there more objects that may be thrown outof it or that may be passed into/out
of it as args/returns?
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
Normal Flow VS Exceptional Flow
normal flow exceptional flow
Which one do you think dominates?
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
NEED PRECISE EXCEPTIONS?
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
Not per se
NEED PRECISE EXCEPTIONS?
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
Overall analysis effect
Not per se
NEED PRECISE EXCEPTIONS?
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
COARSEN EXCEPTIONS
A. Context Insensitive
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
A. Context Insensitive
B. Type-based Merging
COARSEN EXCEPTIONS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
INPUT
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
v = new A();
to = from;
to = base.fld;base.fld = from;
void meth(..., A arg, ...) {...return ret;
}
base.sig(...);
JAVA CODE
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
JAVA CODE AS TABLES
v = new A();
to = from;
to = base.fld;base.fld = from;
void meth(..., A arg, ...) {...return ret;
}
base.sig(...);
ALLOC (var, obj, meth)OBJTYPE (obj, type)
MOVE (to, from)
LOAD (to, base, fld)STORE (base, fld, from)
FORMALARG (meth, i, arg)
FORMALRETURN (meth, ret)
VCALL (base, sig, invo)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
JAVA CODE AS TABLES
v = new A();
to = from;
to = base.fld;base.fld = from;
void meth(..., A arg, ...) {...return ret;
}
base.sig(...);
ALLOC (var, obj, meth)OBJTYPE (obj, type)
MOVE (to, from)
LOAD (to, base, fld)STORE (base, fld, from)
FORMALARG (meth, i, arg)
FORMALRETURN (meth, ret)
VCALL (base, sig, invo)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
JAVA CODE AS TABLES
and many more...
v = new A();
to = from;
to = base.fld;base.fld = from;
void meth(..., A arg, ...) {...return ret;
}
base.sig(...);
ALLOC (var, obj, meth)OBJTYPE (obj, type)
MOVE (to, from)
LOAD (to, base, fld)STORE (base, fld, from)
FORMALARG (meth, i, arg)
FORMALRETURN (meth, ret)
VCALL (base, sig, invo)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
JAVA CODE AS TABLES
v = new A();
to = from;
to = base.fld;base.fld = from;
void meth(..., A arg, ...) {...return ret;
}
base.sig(...);
ALLOC (var, obj, meth)OBJTYPE (obj, type)
MOVE (to, from)
LOAD (to, base, fld)STORE (base, fld, from)
FORMALARG (meth, i, arg)
FORMALRETURN (meth, ret)
VCALL (base, sig, invo)
Blue is Input
and many more...
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
OUTPUT
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
OUTPUT
VARPOINTSTO (var, ctx, obj, objCtx)
most important...
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
OUTPUT
VARPOINTSTO (var, ctx, obj, objCtx)
REACHABLE (meth, ctx)CALLGRAPH (invo, callerCtx, meth, calleeCtx)
most important...
“On the fly” construction
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
OUTPUT
VARPOINTSTO (var, ctx, obj, objCtx)
REACHABLE (meth, ctx)CALLGRAPH (invo, callerCtx, meth, calleeCtx)
most important...
“On the fly” construction
Orange is Output
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
CONTEXTS : BLACK BOX
VARPOINTSTO (var, ctx, obj, objCtx)
REACHABLE (meth, ctx)CALLGRAPH (invo, callerCtx, meth, calleeCtx)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
CONTEXTS CONSTRUCTORS
RECORD (...) = newObjCtx
MERGE (...) = newCtxPick Your Contexts Well:
Understanding Object-SensitivitySmaragdakis – Bravenboer – Lhotak
POPL'11
VARPOINTSTO (var, ctx, obj, objCtx)
REACHABLE (meth, ctx)CALLGRAPH (invo, callerCtx, meth, calleeCtx)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RULES
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXAMPLE RULE
P (x), Q (x, z) ← R (x, y, w), S (y, z).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXAMPLE RULE
“Body”
If...
P (x), Q (x, z) ← R (x, y, w), S (y, z).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXAMPLE RULE
“Body”
If...
“Head”
Then...
P (x), Q (x, z) ← R (x, y, w), S (y, z).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
REACHABLE (meth, ctx), ALLOC (var, obj, meth).
var = new ...
OBJECT ALLOCATION
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
VARPOINTSTO (var, obj ) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth).
var = new ...
OBJECT ALLOCATION
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
VARPOINTSTO (var, ctx, obj ) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth).
var = new ...
Variables share context with their methods
OBJECT ALLOCATION
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECORD (...) = objCtx,VARPOINTSTO (var, ctx, obj, objCtx) ←
REACHABLE (meth, ctx), ALLOC (var, obj, meth).
var = new ...
Construct a new object context
OBJECT ALLOCATION
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
LOCAL ASSIGNMENTto = from
MOVE (to, from), VARPOINTSTO (from, ctx, obj, objCtx).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
to = from
VARPOINTSTO (to, ctx, obj, objCtx) ←MOVE (to, from), VARPOINTSTO (from, ctx, obj, objCtx).
LOCAL ASSIGNMENT
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
to = from
Recursion
VARPOINTSTO (to, ctx, obj, objCtx) ←MOVE (to, from), VARPOINTSTO (from, ctx, obj, objCtx).
LOCAL ASSIGNMENT
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
NullPointerException
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
INPUT
THROW (instr, e)CATCH (objT, instr, arg)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
INPUT
OUTPUT
THROWPOINTSTO (meth, ctx, obj, objCtx)
THROW (instr, e)CATCH (objT, instr, arg)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
“On the fly” handling of exceptions
INPUT
OUTPUT
THROWPOINTSTO (meth, ctx, obj, objCtx)
THROW (instr, e)CATCH (objT, instr, arg)
Exception Analysis and Points-to Analysis:Better Together
Bravenboer – Smaragdakis
ISSTA'09
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
void meth() {...throw e;...
}
THROW (instr, e)
EXCEPTION RULES
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
void meth() {...throw e;...
}
THROW (instr, e), VARPOINTSTO (e, ctx, obj, objCtx),OBJTYPE (obj, objT)
EXCEPTION RULES
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
void meth() {...throw e;...
}
THROW (instr, e), VARPOINTSTO (e, ctx, obj, objCtx),OBJTYPE (obj, objT), ¬CATCH (objT, instr, _)
EXCEPTION RULES
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
void meth() {...throw e;...
}
THROWPOINTSTO (meth, ctx, obj, objCtx) ←THROW (instr, e), VARPOINTSTO (e, ctx, obj, objCtx),OBJTYPE (obj, objT), ¬CATCH (objT, instr, _),INMETHOD (instr, meth).
EXCEPTION RULES
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXCEPTION RULES
void meth() {try {
throw e;}catch (objT arg) {...}
}
THROW (instr, e), VARPOINTSTO (e, ctx, obj, objCtx),OBJTYPE (obj, objT), CATCH (objT, instr, arg).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
void meth() {try {
throw e;}catch (objT arg) {...}
}
EXCEPTION RULES
VARPOINTSTO (arg, ctx, obj, objCtx) ←THROW (instr, e), VARPOINTSTO (e, ctx, obj, objCtx),OBJTYPE (obj, objT), CATCH (objT, instr, arg).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXCEPTION RULES
Same logic for method invocation
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
IS IT ENOUGH?
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
NORMAL FLOW VS EXCEPTIONAL FLOW
antlr bloat eclipse luindex xalan0
1000
2000
3000
4000
5000
Context Insensitive
normal flow exceptional flow
(in th
ousa
nds)
antlr bloat eclipse luindex xalan0
20000
40000
60000
80000
1-Call-Site-Sensitive + Heap
normal flow exceptional flow
(in th
ousa
nds)
antlr bloat eclipse luindex xalan0
10000
20000
30000
40000
50000
1-Type-Sensitive + Heapnormal flow exceptional flow
(in th
ousa
nds)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EFFICIENT AND EFFECTIVE
HANDLING OF EXCEPTIONS
IN JAVA POINTS-TO ANALYSIS
Coarsen Exceptions
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECORD (...) = objCtx,VARPOINTSTO (var, ctx, obj, objCtx) ←
REACHABLE (meth, ctx), ALLOC (var, obj, meth).
Recall...
OBJECT ALLOCATION
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECORD (...) = objCtx,VARPOINTSTO (var, ctx, obj, objCtx) ←
REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), ¬EXCEPTIONTYPE (objT).
Change to...
FILTER OUT EXCEPTIONS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
HANDLING EXCEPTIONS
REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
HANDLING EXCEPTIONS
VARPOINTSTO (var, ctx, obj ) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
A. CONTEXT INSENSITIVE EXCEPTIONS
VARPOINTSTO (var, ctx, obj, ?) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
Single Context
VARPOINTSTO (var, ctx, obj, “ConstantObjCtx”) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT).
A. CONTEXT INSENSITIVE EXCEPTIONS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
B. MERGE EXCEPTIONS
VARPOINTSTO (var, ctx, obj, “ConstantObjCtx”) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT).
Not enoughGet more aggressive
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
B. MERGE EXCEPTIONS
VARPOINTSTO (var, ctx, obj, “ConstantObjCtx”) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
B. MERGE EXCEPTIONS
VARPOINTSTO (var, ctx, reprObj, “ConstantObjCtx”) ←REACHABLE (meth, ctx), ALLOC (var, obj, meth),OBJTYPE (obj, objT), EXCEPTIONTYPE (objT),REPRESENTATIVE (obj, reprObj).
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXPERIMENTS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
EXPERIMENTS
JDK 1.6JDK 1.6
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
insensitive1object
1object+H2object+H
1type+H2type+H
1call-site1call-site+H
0
500
1000
1500
2000
2500Eclipse sensitive insensitive
(sec
onds
)
CONTEXT INSENSITIVE EXCEPTIONS
insensitive 1object 1object+H 1type+H 2type+H 1call-site 1call-site+H0
500100015002000250030003500
Bloat sensitive insensitive(s
econ
ds)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
insensitive1object
1object+H2object+H
1type+H2type+H
1call-site1call-site+H
0
200
400
600
800
1000
1200
Eclipse insensitive merge
(sec
onds
)
insensitive 1object 1object+H 1type+H 2type+H 1call-site 1call-site+H0
500
1000
1500
2000
2500
insensitive merge(s
econ
ds)
Bloat
MERGE EXCEPTIONS
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
MERGE EXCEPTIONS
insensitive1object
1object+H2object+H
1type+H2type+H
1call-site1call-site+H
0
200
400
600
800
1000
1200
Eclipse insensitive merge
(sec
onds
)
insensitive 1object 1object+H 1type+H 2type+H 1call-site 1call-site+H0
500
1000
1500
2000
2500
insensitive merge(s
econ
ds)
Bloat
Speedup as high as 70%Usually around 50%
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
insensitive 1object+H 2object+H 1type+H 1call-site+H0
10000
20000
30000
40000
Eclipse - Context Insensitive Exceptions normal flow exceptional flow
(in th
ousa
nds)
NORMAL FLOW VS EXCEPTIONAL FLOW
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
insensitive 1object+H 2object+H 1type+H 1call-site+H0
5000
10000
15000
20000
Eclipse - Merge Exceptions normal flow exceptional flow
(in th
ousa
nds)
NORMAL FLOW VS EXCEPTIONAL FLOW
insensitive 1object+H 2object+H 1type+H 1call-site+H0
10000
20000
30000
40000
Eclipse - Context Insensitive Exceptions normal flow exceptional flow
(in th
ousa
nds)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
● Significant speedup from coarsening exceptions
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
● Significant speedup from coarsening exceptions
● Type-based merging as an effective coarsening
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
● Significant speedup from coarsening exceptions
● Type-based merging as an effective coarsening
● No trade-off in precision (in “normal” code)
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
● Significant speedup from coarsening exceptions
● Type-based merging as an effective coarsening
● No trade-off in precision (in “normal” code)
● Datalog formalism makes changes clear
George Kastrinis, Yannis Smaragdakis ~ Efficient and Effective Handling of Exceptions in Java Points-To Analysis
RECAP
● Huge amount of analysis time spent on exceptions
● They mainly affect control-flow
● Significant speedup from coarsening exceptions
● Type-based merging as an effective coarsening
● No trade-off in precision (in “normal” code)
● Datalog formalism makes changes clear
● Also excellent implementation platform
Hope you enjoyed!George Kastrinis http://gkastrinis.info•