30591
|
1 |
# Overview
|
|
2 |
|
|
3 |
The Ideal Graph Visualizer is a tool developed to help examine the intermediate
|
|
4 |
representation of C2 which is commonly referred to as the "ideal graph". It was
|
|
5 |
developed in collaboration with the University of Linz in Austria and has been
|
|
6 |
included as part of hotspot since that was the primary target of the tool. The
|
|
7 |
tool itself is fairly general with only a few modules that contain C2 specific
|
|
8 |
elements.
|
|
9 |
|
|
10 |
The tool is built on top of the NetBeans 7 rich client infrastructure and so
|
|
11 |
requires NetBeans to build. It currently requires at least Java 6 to run as it
|
|
12 |
needs support for JavaScript for its filtering mechanism and assumes it's built
|
|
13 |
into the platform. It should build out of the box with NetBeans 7.0 and Java 6
|
|
14 |
or later.
|
|
15 |
|
|
16 |
# Building and Running
|
768
|
17 |
|
30591
|
18 |
The build system used for IGV is ant. To download all required libraries and
|
|
19 |
build IGV, issue `ant build`. To run IGV, use the `igv.sh` command; it will put
|
|
20 |
all log messages generated by the run to the file `.igv.log`. To see all log
|
|
21 |
messages generated during an IGV run, use `ant run`.
|
|
22 |
|
|
23 |
# Usage
|
|
24 |
|
|
25 |
The JVM support is controlled by the flag `-XX:PrintIdealGraphLevel=#` where `#`
|
|
26 |
is:
|
768
|
27 |
|
30591
|
28 |
* 0: no output, the default
|
|
29 |
* 1: dumps graph after parsing, before matching, and final code (also dumps
|
|
30 |
graphs for failed compilations, if available)
|
|
31 |
* 2: more detail, including after loop opts
|
|
32 |
* 3: even more detail
|
|
33 |
* 4: prints graph after parsing every bytecode (very slow)
|
768
|
34 |
|
30591
|
35 |
By default the JVM expects that it will connect to a visualizer on the local
|
|
36 |
host on port 4444. This can be configured using the options
|
|
37 |
`-XX:PrintIdealGraphAddress=` and `-XX:PrintIdealGraphPort=`.
|
|
38 |
`PrintIdealGraphAddress` can actually be a hostname.
|
768
|
39 |
|
30591
|
40 |
It is advisable to run the JVM with background compilation disabled (-Xbatch).
|
|
41 |
Compilations going on in the background may be cancelled when the VM terminates,
|
|
42 |
which can lead to incomplete dumps being sent to IGV.
|
768
|
43 |
|
|
44 |
Alternatively the output can be sent to a file using
|
30591
|
45 |
`-XX:PrintIdealGraphFile=filename`. Each compiler thread will get it's own file
|
|
46 |
with unique names being generated by adding a number onto the provided file
|
|
47 |
name.
|
768
|
48 |
|
|
49 |
More information about the tool is available at
|
46763
|
50 |
https://wiki.openjdk.java.net/display/HotSpot/IdealGraphVisualizer.
|