The Ideal Graph Visualizer is a tool developed to help examine the
intermediate representation of C2 which is commonly referred to as the
"ideal graph".  It was developed in collaboration with the University
of Linz in Austria and has been included as part of hotspot since that
was the primary target of the tool.  The tool itself is fairly general
with only a few modules that contain C2 specific elements.

The tool is built on top of the NetBeans 6.1 rich client
infrastructure and so requires NetBeans to build.  It currently
requires Java 6 to run as it needs support for JavaScript for its
filtering mechanism and assumes it's built into the platform.  It
should build out of the box with NetBeans 6.1 and Java 6 or later.
It's possible to run it on 1.5 by including Rhino on the classpath
though that currently isn't working correctly.  Support for exporting
graphs as SVG can be enabled by adding batik to the classpath which
isn't included by default.  It can be built on top of NetBeans 6.0 if
you change the required modules to be platform7 instead of platform8.

The JVM support is controlled by the flag -XX:PrintIdealGraphLevel=#
where # is:

  0: no output, the default
  1: dumps graph after parsing, before matching, and final code.
     also dumps graph for failed compiles, if available
  2: more detail, including after loop opts
  3: even more detail
  4: prints graph after parsing every bytecode (very slow)

By default the JVM expects that it will connect to a visualizer on the
local host on port 4444.  This can be configured using the options
-XX:PrintIdealGraphAddress= and -XX:PrintIdealGraphPort=.
PrintIdealGraphAddress can actually be a hostname.

Alternatively the output can be sent to a file using
-XX:PrintIdealGraphFile=filename.  Each compiler thread will get it's
own file with unique names being generated by adding a number onto the
provided file name.

More information about the tool is available at
http://wikis.sun.com/display/HotSpotInternals/IdealGraphVisualizer.
