andling of exceptions java points-to analysis · george kastrinis, yannis smaragdakis ~ efficient...

Post on 15-Jul-2020

4 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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•

top related