view src/share/tools/IdealGraphVisualizer/README @ 1994:6cd6d394f280

7001033: assert(gch->gc_cause() == GCCause::_scavenge_alot || !gch->incremental_collection_failed()) 7002546: regression on SpecJbb2005 on 7b118 comparing to 7b117 on small heaps Summary: Relaxed assertion checking related to incremental_collection_failed flag to allow for ExplicitGCInvokesConcurrent behaviour where we do not want a failing scavenge to bail to a stop-world collection. Parameterized incremental_collection_will_fail() so we can selectively use, or not use, as appropriate, the statistical prediction at specific use sites. This essentially reverts the scavenge bail-out logic to what it was prior to some recent changes that had inadvertently started using the statistical prediction which can be noisy in the presence of bursty loads. Added some associated verbose non-product debugging messages. Reviewed-by: johnc, tonyp
author ysr
date Tue, 07 Dec 2010 21:55:53 -0800
parents f4fe12e429a4
children 2fd52cd64156
line wrap: on
line source

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.