...
The disassembly output is annotated with various kinds of debugging information, such as field names and source locations. The quality of this information improved markedly in January 2010 (bug fix 6912062).
Examples
Code Block |
---|
0x0188272f: mov ecx, [ecx+0x1A8B8B30] ; {oop(cache [42] for constant pool [234]/invokedynamic for 'SumWithIndy' cache=0x1a8b8b30)}
0x01882735: mov edx, [ecx+0x10]
0x01882738: cmp edx, a 'sun/dyn/ToGeneric$A2'
; {oop(a 'sun/dyn/ToGeneric$A2')}
0x0188273e: jnz 0x018827c1 ;*invokedynamic
; - SumWithIndy::test@17 (line 90)
0x01882744: mov edi, 0x00000150
0x01882749: mov edx, [edi+0x1A8B9110] ;*getstatic cache
; - java.lang.Integer::valueOf@35 (line 651)
; - sun.dyn.ToGeneric$A2::targetA2@3 (line 663)
; - sun.dyn.ToGeneric$A2::invoke_L@4 (line 672)
; - java.dyn.InvokeDynamic::invokeExact@4
; - SumWithIndy::test@17 (line 90)
; {oop('java/lang/Integer$IntegerCache')}
|
...
CompileCommand=print,*MyClass.myMethod
prints assembly for just one methodCompileCommand=option,*MyClass.myMethod,PrintOptoAssembly
(debug build only) produces the old print command outputCompileCommand=option,*MyClass.myMethod,PrintNMethods
produces diet pills method dumps
These options accumulate.
...
The -XX:+LogCompilation
flag produces a low-level XML file about compiler and runtime decisions, which may be interesting to some. The -XX:+UnlockDiagnosticVMOptions
must come first adipex. The dump is to hotspot.log
in the current directory; use -XX:LogFile=foo.log
to change this.