Tue, 08 Aug 2017 15:57:29 +0800
merge
aoqi@0 | 1 | The Ideal Graph Visualizer is a tool developed to help examine the |
aoqi@0 | 2 | intermediate representation of C2 which is commonly referred to as the |
aoqi@0 | 3 | "ideal graph". It was developed in collaboration with the University |
aoqi@0 | 4 | of Linz in Austria and has been included as part of hotspot since that |
aoqi@0 | 5 | was the primary target of the tool. The tool itself is fairly general |
aoqi@0 | 6 | with only a few modules that contain C2 specific elements. |
aoqi@0 | 7 | |
aoqi@0 | 8 | The tool is built on top of the NetBeans 6.1 rich client |
aoqi@0 | 9 | infrastructure and so requires NetBeans to build. It currently |
aoqi@0 | 10 | requires Java 6 to run as it needs support for JavaScript for its |
aoqi@0 | 11 | filtering mechanism and assumes it's built into the platform. It |
aoqi@0 | 12 | should build out of the box with NetBeans 6.1 and Java 6 or later. |
aoqi@0 | 13 | It's possible to run it on 1.5 by including Rhino on the classpath |
aoqi@0 | 14 | though that currently isn't working correctly. Support for exporting |
aoqi@0 | 15 | graphs as SVG can be enabled by adding batik to the classpath which |
aoqi@0 | 16 | isn't included by default. It can be built on top of NetBeans 6.0 if |
aoqi@0 | 17 | you change the required modules to be platform7 instead of platform8. |
aoqi@0 | 18 | |
aoqi@0 | 19 | The JVM support is controlled by the flag -XX:PrintIdealGraphLevel=# |
aoqi@0 | 20 | where # is: |
aoqi@0 | 21 | |
aoqi@0 | 22 | 0: no output, the default |
aoqi@0 | 23 | 1: dumps graph after parsing, before matching, and final code. |
aoqi@0 | 24 | also dumps graph for failed compiles, if available |
aoqi@0 | 25 | 2: more detail, including after loop opts |
aoqi@0 | 26 | 3: even more detail |
aoqi@0 | 27 | 4: prints graph after parsing every bytecode (very slow) |
aoqi@0 | 28 | |
aoqi@0 | 29 | By default the JVM expects that it will connect to a visualizer on the |
aoqi@0 | 30 | local host on port 4444. This can be configured using the options |
aoqi@0 | 31 | -XX:PrintIdealGraphAddress= and -XX:PrintIdealGraphPort=. |
aoqi@0 | 32 | PrintIdealGraphAddress can actually be a hostname. |
aoqi@0 | 33 | |
aoqi@0 | 34 | Alternatively the output can be sent to a file using |
aoqi@0 | 35 | -XX:PrintIdealGraphFile=filename. Each compiler thread will get it's |
aoqi@0 | 36 | own file with unique names being generated by adding a number onto the |
aoqi@0 | 37 | provided file name. |
aoqi@0 | 38 | |
aoqi@0 | 39 | More information about the tool is available at |
aoqi@0 | 40 | http://wikis.sun.com/display/HotSpotInternals/IdealGraphVisualizer. |