United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6667042 PrintAssembly option does not work without special plugin
6667042 : PrintAssembly option does not work without special plugin

Details
Type:
Bug
Submit Date:
2008-02-24
Status:
Closed
Updated Date:
2011-03-08
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
generic
Sub-Component:
svc
CPU:
generic
Priority:
P3
Resolution:
Fixed
Affected Versions:
7
Fixed Versions:
hs13

Related Reports
Backport:
Backport:
Relates:

Sub Tasks

Description
http://mail.openjdk.java.net/pipermail/hotspot-compiler-dev/2007-August/000008.html


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

                                    

Comments
EVALUATION

See Description
                                     
2008-05-21



Hardware and Software, Engineered to Work Together