JDK-6667042 : PrintAssembly option does not work without special plugin
  • Type: Bug
  • Component: hotspot
  • Sub-Component: svc
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2008-02-24
  • Updated: 2014-05-15
  • Resolved: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u14Fixed 7Fixed hs13Fixed
Related Reports
Relates :  
Relates :  

The following HotSpot options (with -XX:) require an externally loadable disassembler module:
 +PrintAssembly  print assembly code for bytecoded and native methods
 +PrintNMethods  print nmethods as they are generated
 +PrintNativeNMethods  print native method wrappers as they are generated
 +PrintSignatureHandlers  print native method signature handlers
 +PrintAdapterHandlers  print adapters (i2c, c2i) as they are generated
 +PrintStubCode  print stubs: deopt, uncommon trap, exception, safepoint, runtime support
 +PrintInterpreter  print interpreter code

The original module ("dissassembler.so") was dynamically loaded and called via a private C++ interface.

It was implemented in the late 1990's using an early version of the Gnu disassembler, gdb-4.16.

Three factors made this age poorly.
* The interface (C++ ABI) required close coupling between the JVM build toolchain and the disassembler.
* The implementation of the disassembler was produced by forking a copy of binutils and editing it.
* The implementation was not released to open source.

It has been replaced by a plugin, also in a shared library, called via an ANSI C interface.
An implementation of this interface on top of the current Gnu binutils is released as open source.
It may be implemented in other ways also.

Changes to JVM command line interface:
* Enable these these options under UnlockDiagnosticVMOptions in product mode.
* Make the CompileCommand 'print' use the external disassembler, if present.
* -XX:CompileCommand='option',$method,'PrintOptoAssembly' produces the old print command output.
* -XX:CompileCommand='option',$method,'PrintNMethods' continues to work

EVALUATION See Description