1
Pointer Analysis in the Presence
- f Dynamic Class Loading
Pointer Analysis in the Presence of Dynamic Class Loading Martin - - PowerPoint PPT Presentation
Pointer Analysis in the Presence of Dynamic Class Loading Martin Hirzel, Amer Diwan University of Colorado at Boulder Michael Hind IBM T.J. Watson Research Center 1 Pointer analysis motivation Code a = new C( ); // G What does it do? b =
1
2
Code browsing Code transformations Error detection Devirtualization Load elimination Parallelization
Tools Optimizations Connectivity-based garbage collection
3
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph
Analysis components Analysis data structures
4
5
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Analysis components Analysis data structures
native code
types
graph building
6
7
8
9
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Analysis components Analysis data structures Caller/callee look-up
10
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Analysis components Analysis data structures Caller/callee look-up
native code
types
11
12
13
14
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Analysis components Analysis data structures Caller/callee look-up
15
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Analysis components Analysis data structures Caller/callee look-up
native code
types
16
17
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Resolution manager Type resolution Deferred constraints Virtual machine events Analysis components Analysis data structures Caller/callee look-up
18
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Resolution manager Type resolution Deferred constraints Virtual machine events Analysis components Analysis data structures Caller/callee look-up
native code
19
20
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Resolution manager Type resolution Deferred constraints Reflection execution Native code execution
Virtual machine events Analysis components Analysis data structures Caller/callee look-up
21
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Resolution manager Type resolution Deferred constraints Reflection execution Native code execution
Bytecode attributes Building and start-up Virtual machine events Analysis components Analysis data structures Caller/callee look-up
22
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Resolution manager Type resolution Deferred constraints Reflection execution Native code execution
Building and start-up Virtual machine events Analysis components Analysis data structures Caller/callee look-up Bytecode attributes
23
24
25
7m45s 2m01s 2m01s 1 5h22m 11.2s 1,726 xalan 6m27s 9m32s 1m54s 5 3h50m 12.5s 1,103 javac 3m02s 5m53s 1m58s 3 3h26m 16.8s 734 jess 7m07s 7m40s 1m17s 6 1h06m 10.1s 391 hsql Total Total Avg. Count Total Avg. Count At End At GC Eager
26
8d08h 4d04h 1d16h 5h 1d16h 20h 10h 1h 10h 5h 2h30m 15m 3h20m 1h40m 50m 5m 2.5% 5% 10% Analysis cost to amortize Overall analysis overhead 7m45s 2m01s 2m01s 1 5h22m 11.2s 1,726 xalan 6m27s 9m32s 1m54s 5 3h50m 12.5s 1,103 javac 3m02s 5m53s 1m58s 3 3h26m 16.8s 734 jess 7m07s 7m40s 1m17s 6 1h06m 10.1s 391 hsql Total Total Avg. Count Total Avg. Count At End At GC Eager
Application runtime
27
Method compilation Constraint finder Call graph builder Constraint propagator Constraint graph Clients Propagator worklist Resolution manager Type resolution Deferred constraints Reflection execution Native code execution Validation
Building and start-up Virtual machine events Analysis components Analysis data structures Caller/callee look-up Bytecode attributes
28
29
30