annotate src/share/tools/IdealGraphVisualizer/README @ 1716:be3f9c242c9d

6948538: CMS: BOT walkers can fall into object allocation and initialization cracks Summary: GC workers now recognize an intermediate transient state of blocks which are allocated but have not yet completed initialization. blk_start() calls do not attempt to determine the size of a block in the transient state, rather waiting for the block to become initialized so that it is safe to query its size. Audited and ensured the order of initialization of object fields (klass, free bit and size) to respect block state transition protocol. Also included some new assertion checking code enabled in debug mode. Reviewed-by: chrisphi, johnc, poonam
author ysr
date Mon, 16 Aug 2010 15:58:42 -0700
parents f4fe12e429a4
children 2fd52cd64156
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
222
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
1 The Ideal Graph Visualizer is a tool developed to help examine the
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
2 intermediate representation of C2 which is commonly referred to as the
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
3 "ideal graph". It was developed in collaboration with the University
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
4 of Linz in Austria and has been included as part of hotspot since that
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
5 was the primary target of the tool. The tool itself is fairly general
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
6 with only a few modules that contain C2 specific elements.
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
7
417
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
8 The tool is built on top of the NetBeans 6.1 rich client
222
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
9 infrastructure and so requires NetBeans to build. It currently
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
10 requires Java 6 to run as it needs support for JavaScript for its
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
11 filtering mechanism and assumes it's built into the platform. It
417
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
12 should build out of the box with NetBeans 6.1 and Java 6 or later.
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
13 It's possible to run it on 1.5 by including Rhino on the classpath
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
14 though that currently isn't working correctly. Support for exporting
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
15 graphs as SVG can be enabled by adding batik to the classpath which
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
16 isn't included by default. It can be built on top of NetBeans 6.0 if
f4fe12e429a4 6764622: IdealGraphVisualizer fixes
never
parents: 222
diff changeset
17 you change the required modules to be platform7 instead of platform8.
222
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
18
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
19 The JVM support is controlled by the flag -XX:PrintIdealGraphLevel=#
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
20 where # is:
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
21
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
22 0: no output, the default
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
23 1: dumps graph after parsing, before matching, and final code.
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
24 also dumps graph for failed compiles, if available
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
25 2: more detail, including after loop opts
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
26 3: even more detail
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
27 4: prints graph after parsing every bytecode (very slow)
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
28
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
29 By default the JVM expects that it will connect to a visualizer on the
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
30 local host on port 4444. This can be configured using the options
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
31 -XX:PrintIdealGraphAddress= and -XX:PrintIdealGraphPort=.
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
32 PrintIdealGraphAddress can actually be a hostname.
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
33
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
34 Alternatively the output can be sent to a file using
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
35 -XX:PrintIdealGraphFile=filename. Each compiler thread will get it's
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
36 own file with unique names being generated by adding a number onto the
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
37 provided file name.
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
38
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
39 More information about the tool is available at
2a1a77d3458f 6718676: putback for 6604014 is incomplete
never
parents:
diff changeset
40 http://wikis.sun.com/display/HotSpotInternals/IdealGraphVisualizer.