hotspot/src/share/tools/IdealGraphVisualizer/README.md
changeset 30591 b32fcc177417
parent 1497 cd3234c89e59
child 46763 1b0ff6953b5a
equal deleted inserted replaced
30589:4722e25bfd6d 30591:b32fcc177417
       
     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
       
    17 
       
    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:
       
    27 
       
    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)
       
    34 
       
    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.
       
    39 
       
    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.
       
    43 
       
    44 Alternatively the output can be sent to a file using
       
    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.
       
    48 
       
    49 More information about the tool is available at
       
    50 https://wikis.oracle.com/display/HotSpotInternals/IdealGraphVisualizer.