Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-6667042

PrintAssembly option does not work without special plugin

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P3 P3
    • hs13
    • 7
    • hotspot
    • None
    • svc
    • b01
    • generic
    • generic
    • Verified

        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

              jrose John Rose
              jrose John Rose
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved:
                Imported:
                Indexed: