review request (M): 6667042 PrintAssembly option does not work without special plugin
John Rose
John.Rose at Sun.COM
Sun Feb 24 01:01:43 PST 2008
For putback to http://hg.openjdk.java.net/jdk7/hotspot-comp-gate/hotspot
6667042: PrintAssembly option does not work without special plugin
Summary: remove old private plugin interface, simplify, rework old
plugin to use unchanged Gnu sources
http://webrev.invokedynamic.info/jrose/6667042
-- John
P.S. More details:
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 ("disassembler.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 DisassemblerEnv supplied a number of callbacks, but only two were
significant, print and print_address.
More information about the hotspot-compiler-dev
mailing list