|
1 The Ideal Graph Visualizer is a tool developed to help examine the |
|
2 intermediate representation of C2 which is commonly referred to as the |
|
3 "ideal graph". It was developed in collaboration with the University |
|
4 of Linz in Austria and has been included as part of hotspot since that |
|
5 was the primary target of the tool. The tool itself is fairly general |
|
6 with only a few modules that contain C2 specific elements. |
|
7 |
|
8 The tool is built on top of the NetBeans 6.0 rich client |
|
9 infrastructure and so requires NetBeans to build. It currently |
|
10 requires Java 6 to run as it needs support for JavaScript for its |
|
11 filtering mechanism and assumes it's built into the platform. It |
|
12 should build out of the box whit NetBeans 6 and Java 6 or later. It's |
|
13 possible to run it on 1.5 by including Rhino on the classpath though |
|
14 that currently isn't working correctly. Support for exporting graphs |
|
15 as SVG can be enabled by adding batik to the classpath which isn't |
|
16 included by default. |
|
17 |
|
18 It can be built on top of NetBeans 6.1 if you change the required |
|
19 modules to be platform8 instead of platform7. The tool could run on |
|
20 JDK 1.5 with some reworking of the how the JavaScript support is |
|
21 enabled but currently it requires some tweaking of the setup. This |
|
22 will be fixed in a later setup. |
|
23 |
|
24 The JVM support is controlled by the flag -XX:PrintIdealGraphLevel=# |
|
25 where # is: |
|
26 |
|
27 0: no output, the default |
|
28 1: dumps graph after parsing, before matching, and final code. |
|
29 also dumps graph for failed compiles, if available |
|
30 2: more detail, including after loop opts |
|
31 3: even more detail |
|
32 4: prints graph after parsing every bytecode (very slow) |
|
33 |
|
34 By default the JVM expects that it will connect to a visualizer on the |
|
35 local host on port 4444. This can be configured using the options |
|
36 -XX:PrintIdealGraphAddress= and -XX:PrintIdealGraphPort=. |
|
37 PrintIdealGraphAddress can actually be a hostname. |
|
38 |
|
39 Alternatively the output can be sent to a file using |
|
40 -XX:PrintIdealGraphFile=filename. Each compiler thread will get it's |
|
41 own file with unique names being generated by adding a number onto the |
|
42 provided file name. |
|
43 |
|
44 More information about the tool is available at |
|
45 http://wikis.sun.com/display/HotSpotInternals/IdealGraphVisualizer. |