Message-ID: <2073100470.5107.1493263113788.JavaMail.email@example.com> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_5106_1088885174.1493263113788" ------=_Part_5106_1088885174.1493263113788 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
The following HotSpot options (with an -XX: prefix on the command line) = require OpenJDK 7 and an externally loadable disassembler plugin:
+PrintAssemblyprint assembly code for bytecoded and nativ= e methods
+PrintNMethodsprint nmethods as they are generated
+PrintNativeNMethodsprint native method wrappers as they = are generated
+PrintSignatureHandlersprint native method signature hand= lers
+PrintAdapterHandlersprint adapters (i2c, c2i) as they ar= e generated
+PrintStubCodeprint stubs: deopt, uncommon trap, exceptio= n, safepoint, runtime support
+PrintInterpreterprint interpreter code
These flags are "diagnostic", meaning that they must be preced=
-XX:+UnlockDiagnosticVMOptions. On the command line, the=
y must all be preceded by
-XX:. They may also be placed in a f=
.hotspotrc by default, or configurable as
The disassembly output is annotated with various kinds of debugging info= rmation, such as field names and source locations. The quality of this info= rmation improved markedly in January 2010 (bug fix 6912062).
Complete file: samp= le-disassembly.txt
There are 2 implementations around:
This version of the plugin requires the Gnu disassembler, which is avail= able separately as part of the binutils project.
Look at the README for instructions on building.
With recent binutils version (i.e. binutils-2.23.2) you may get the foll= owing build error:
WARNING: `makeinfo' is missing on your system. You should only n= eed it if
you modifie= d a `.texi' or `.texinfo' file, or any other file
This is because of "Bug&nb=
sp;15345 - [2.23.2 regression] binutils-2.23.2 tar=
ball doesn't build without makeinfo". The simplest workaround i=
s to touch '
bfd/doc/bfd.info' in the biuntils source di=
Pre-built binaries do not seem to be available (help... anyone?). Prebuilt binaries for Windows-x86: = hsdis-i386.dll
This is a from-scratch implementation which uses code from the Bastard project at SourceForge. The copyrights on this code = are non-restrictive.
The Kenai project offers binary downloads.<= /p>
Once you succeed in building or downloading the
y library (in the following named DLL), you have to install it next to your=
libjvm.so (jvm.dll on Windows), in the same folder. (Alternatively, you ca=
n put it anywhere on your
LD_LIBRARY_PATH.) The DLL must be gi=
ven the name that the JVM will be looking for. The core of the name will be=
hsdis-i386 for 32-bit Intel JVMs. Other names in use are
hsdis-sparcv9. A prefix and/or suffix will be required, according to system-dependent=
rules for naming DLLs.
The last line (with
myloopingbenchmark) is most typical, si=
nce it uses the batch execution mode common with benchmarks. The
+PrintCompilation flag will let you know which (if any) methods are =
-XX:+PrintAssembly option prints everything. If that's =
too much, drop it and use one of the following options.
Individual methods may be printed:
CompileCommand=3Dprint,*MyClass.myMethodprints assembly f= or just one method
CompileCommand=3Doption,*MyClass.myMethod,PrintOptoAssembly(debug build only) produces the old print command output
CompileCommand=3Doption,*MyClass.myMethod,PrintNMethodspr= oduces method dumps
These options accumulate.
If you get no output, use
-XX:+PrintCompilation to verify t=
hat your method is getting compiled at all.
-XX:+LogCompilation flag produces a low-level XML file =
about compiler and runtime decisions, which may be interesting to some. The=
-XX:+UnlockDiagnosticVMOptions must come first. The dump is t=
hotspot.log in the current directory; use
=3Dfoo.log to change this.
LogCompilation output is basic line-oriented XML. It ca=
n usefully be read in a text editor, and there are also tools for parsing a=
nd scanning it.