Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-2177088 | 7 | John Rose | P3 | Closed | Fixed | b27 |
JDK-2174897 | 6u14 | John Rose | P3 | Resolved | Fixed | b01 |
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
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
- backported by
-
JDK-2174897 PrintAssembly option does not work without special plugin
- Resolved
-
JDK-2177088 PrintAssembly option does not work without special plugin
- Closed
- relates to
-
JDK-6912062 disassembler plugin needs to produce symbolic information in product mode
- Resolved
-
JDK-8043264 hsdis library not picked up correctly on expected paths
- Resolved