###General usage
As explained by other answers, you can run with the following JVM options:
-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly
###Filter on a specific method
You can also filter on a specific method with the following syntax:
-XX:+UnlockDiagnosticVMOptions -XX:CompileCommand=print,*MyClass.myMethod
Notes:
- you might need to put the second argument within quotes depending on OS etc.
- if the method gets inlined, you could miss some optimisations
###How to: Install the required libraries on Windows
If you are running Windows, [this page][1] has instructions on how to build and install `hsdis-amd64.dll` and `hsdis-i386.dll` which are required to make it work. We copy below and extend the content of that page* for reference:
---
**Where to get prebuilt binaries**
You can download prebuilt binaries for Windows from the [fcml][2] project
- [hsdis-amd64.dll][3]
- [hsdis-i386.dll][4]
**How to build `hsdis-amd64.dll` and `hsdis-i386.dll` on Windows**
*This version of the guide was prepared on Windows 8.1 64bit using 64-bit Cygwin and producing hsdis-amd64.dll*
1. [Install Cygwin][5]. At the `Select Packages` screen, add the following packages (by expanding the `Devel` category, then clicking once on the `Skip` label next to each package name):
- `make`
- `mingw64-x86_64-gcc-core` (only needed for `hsdis-amd64.dll`)
- `mingw64-i686-gcc-core` (only needed for `hsdis-i386.dll`)
- `diffutils` (in `Utils` category)
2. Run the Cygwin Terminal. This can be done using the Desktop or Start Menu icon created by the installer, and will create your Cygwin home directory (`C:\cygwin\home\<username>\` or `C:\cygwin64\home\<username>\` by default).
3. [Download the latest GNU binutils source package][6] and extract its contents to your Cygwin home directory. At the time of writing, the latest package is `binutils-2.25.tar.bz2`. This should result in a directory named `binutils-2.25` (or whatever the latest version is) in your Cygwin home directory.
4. Download the OpenJDK source by [going to the JDK 8 Updates repository][7], selecting the tag corresponding to your installed JRE version, and clicking bz2. Extract the hsdis directory (found in `src\share\tools`) to your Cygwin home directory.
5. In the Cygwin Terminal, enter `cd ~/hsdis`.
6. To build `hsdis-amd64.dll`, enter
`make OS=Linux MINGW=x86_64-w64-mingw32 'AR=$(MINGW)-ar' BINUTILS=~/binutils-2.25`
To build `hsdis-i386.dll`, enter
`make OS=Linux MINGW=i686-w64-mingw32 'AR=$(MINGW)-ar' BINUTILS=~/binutils-2.25`
In either case, replace `2.25` with the binutils version you downloaded. `OS=Linux` is necessary because, although Cygwin is a Linux-like environment, the hsdis makefile fails to recognize it as such.
7. The build will fail with messages `./chew: No such file or directory` and `gcc: command not found`. Edit `<Cygwin home directory>\hsdis\build\Linux-amd64\bfd\Makefile` in a text editor like Wordpad or Notepad++ to change `SUBDIRS = doc po` (line 342, if using binutils 2.25) to `SUBDIRS = po`. Re-run the previous command.
The DLL can now be installed by copying it from `hsdis\build\Linux-amd64` or `hsdis\build\Linux-i586` to your JRE's `bin\server` or `bin\client` directory. You can find all such directories on your system by searching for `java.dll`.
Bonus tip: if you prefer Intel ASM syntax to AT&T, specify `-XX:PrintAssemblyOptions=intel` alongside any other PrintAssembly options you use.
<sub>*page license is Creative Commons</sub>
[1]:
[To see links please register here]
[2]:
[To see links please register here]
[3]:
[To see links please register here]
[4]:
[To see links please register here]
[5]:
[To see links please register here]
[6]:
[To see links please register here]
[7]:
[To see links please register here]