Created
June 21, 2015 13:39
-
-
Save varadharajan/eeea5fc53495401e1145 to your computer and use it in GitHub Desktop.
Disassembler output for http://varadharajan.in/2015/06/21/inspecting-jit-compiled-assembly-code-in-oracle-jvm/
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CompilerOracle: print *Main.seriousLoop | |
Compiled method (c1) 72 46 % 3 Main::seriousLoop @ 4 (25 bytes) | |
total in heap [0x0000000108d24210,0x0000000108d246a8] = 1176 | |
relocation [0x0000000108d24330,0x0000000108d24368] = 56 | |
main code [0x0000000108d24380,0x0000000108d24520] = 416 | |
stub code [0x0000000108d24520,0x0000000108d245b0] = 144 | |
oops [0x0000000108d245b0,0x0000000108d245b8] = 8 | |
metadata [0x0000000108d245b8,0x0000000108d245c0] = 8 | |
scopes data [0x0000000108d245c0,0x0000000108d24600] = 64 | |
scopes pcs [0x0000000108d24600,0x0000000108d246a0] = 160 | |
dependencies [0x0000000108d246a0,0x0000000108d246a8] = 8 | |
Loaded disassembler from hsdis-amd64.dylib | |
Decoding compiled method 0x0000000108d24210: | |
Code: | |
[Disassembling for mach='i386:x86-64'] | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main' | |
0x0000000108d24380: mov %eax,-0x14000(%rsp) | |
0x0000000108d24387: push %rbp | |
0x0000000108d24388: sub $0x40,%rsp | |
0x0000000108d2438c: movabs $0x122180660,%rsi ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24396: mov 0x64(%rsi),%edi | |
0x0000000108d24399: add $0x8,%edi | |
0x0000000108d2439c: mov %edi,0x64(%rsi) | |
0x0000000108d2439f: movabs $0x122180390,%rsi ; {metadata({method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d243a9: and $0x1ff8,%edi | |
0x0000000108d243af: cmp $0x0,%edi | |
0x0000000108d243b2: je 0x0000000108d244b6 ;*lconst_0 | |
; - Main::seriousLoop@0 (line 4) | |
0x0000000108d243b8: movabs $0x0,%rsi | |
0x0000000108d243c2: movabs $0x0,%rdi | |
0x0000000108d243cc: jmpq 0x0000000108d2442a ;*lload_2 | |
; - Main::seriousLoop@4 (line 5) | |
0x0000000108d243d1: nopl 0x0(%rax) | |
0x0000000108d243d8: add %rsi,%rdi | |
0x0000000108d243db: movabs $0x1,%r10 | |
0x0000000108d243e5: add %r10,%rsi | |
0x0000000108d243e8: movabs $0x122180660,%rax ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d243f2: mov 0x68(%rax),%ebx | |
0x0000000108d243f5: add $0x8,%ebx | |
0x0000000108d243f8: mov %ebx,0x68(%rax) | |
0x0000000108d243fb: movabs $0x122180390,%rax ; {metadata({method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24405: and $0xfff8,%ebx | |
0x0000000108d2440b: cmp $0x0,%ebx | |
0x0000000108d2440e: je 0x0000000108d244cd ; OopMap{off=148} | |
;*goto | |
; - Main::seriousLoop@20 (line 5) | |
0x0000000108d24414: test %eax,-0x232a31a(%rip) # 0x00000001069fa100 | |
; {poll} | |
0x0000000108d2441a: movabs $0x122180660,%rax ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24424: incl 0xb0(%rax) ;*goto | |
; - Main::seriousLoop@20 (line 5) | |
0x0000000108d2442a: movabs $0x5f5e100,%rax | |
0x0000000108d24434: cmp %rsi,%rax | |
0x0000000108d24437: movabs $0x122180660,%rax ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24441: movabs $0xa0,%rbx | |
0x0000000108d2444b: jge 0x0000000108d2445b | |
0x0000000108d24451: movabs $0x90,%rbx | |
0x0000000108d2445b: mov (%rax,%rbx,1),%rdx | |
0x0000000108d2445f: lea 0x1(%rdx),%rdx | |
0x0000000108d24463: mov %rdx,(%rax,%rbx,1) | |
0x0000000108d24467: jge 0x0000000108d243d8 ;*lcmp | |
; - Main::seriousLoop@8 (line 5) | |
0x0000000108d2446d: mov %rdi,%rax | |
0x0000000108d24470: add $0x40,%rsp | |
0x0000000108d24474: pop %rbp | |
0x0000000108d24475: test %eax,-0x232a37b(%rip) # 0x00000001069fa100 | |
; {poll_return} | |
0x0000000108d2447b: retq ;*lreturn | |
; - Main::seriousLoop@24 (line 9) | |
0x0000000108d2447c: mov %eax,-0x14000(%rsp) | |
0x0000000108d24483: push %rbp | |
0x0000000108d24484: sub $0x40,%rsp | |
0x0000000108d24488: mov 0x10(%rsi),%rbx | |
0x0000000108d2448c: mov (%rsi),%rax | |
0x0000000108d2448f: mov %rsi,%rdi | |
0x0000000108d24492: mov %rbx,0x30(%rsp) | |
0x0000000108d24497: mov %rax,0x28(%rsp) | |
0x0000000108d2449c: callq 0x0000000107ead3d4 ; {runtime_call} | |
0x0000000108d244a1: mov 0x28(%rsp),%rax | |
0x0000000108d244a6: mov %rax,%rsi | |
0x0000000108d244a9: mov 0x30(%rsp),%rbx | |
0x0000000108d244ae: mov %rbx,%rdi | |
0x0000000108d244b1: jmpq 0x0000000108d2442a | |
0x0000000108d244b6: mov %rsi,0x8(%rsp) | |
0x0000000108d244bb: movq $0xffffffffffffffff,(%rsp) | |
0x0000000108d244c3: callq 0x0000000108cfe8e0 ; OopMap{off=328} | |
;*synchronization entry | |
; - Main::seriousLoop@-1 (line 4) | |
; {runtime_call} | |
0x0000000108d244c8: jmpq 0x0000000108d243b8 | |
0x0000000108d244cd: mov %rax,0x8(%rsp) | |
0x0000000108d244d2: movq $0x14,(%rsp) | |
0x0000000108d244da: callq 0x0000000108cfe8e0 ; OopMap{off=351} | |
;*goto | |
; - Main::seriousLoop@20 (line 5) | |
; {runtime_call} | |
0x0000000108d244df: jmpq 0x0000000108d24414 | |
0x0000000108d244e4: nop | |
0x0000000108d244e5: nop | |
0x0000000108d244e6: mov 0x288(%r15),%rax | |
0x0000000108d244ed: movabs $0x0,%r10 | |
0x0000000108d244f7: mov %r10,0x288(%r15) | |
0x0000000108d244fe: movabs $0x0,%r10 | |
0x0000000108d24508: mov %r10,0x290(%r15) | |
0x0000000108d2450f: add $0x40,%rsp | |
0x0000000108d24513: pop %rbp | |
0x0000000108d24514: jmpq 0x0000000108c6cca0 ; {runtime_call} | |
0x0000000108d24519: hlt | |
0x0000000108d2451a: hlt | |
0x0000000108d2451b: hlt | |
0x0000000108d2451c: hlt | |
0x0000000108d2451d: hlt | |
0x0000000108d2451e: hlt | |
0x0000000108d2451f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x0000000108d24520: callq 0x0000000108cfc020 ; {no_reloc} | |
0x0000000108d24525: mov %rsp,-0x28(%rsp) | |
0x0000000108d2452a: sub $0x80,%rsp | |
0x0000000108d24531: mov %rax,0x78(%rsp) | |
0x0000000108d24536: mov %rcx,0x70(%rsp) | |
0x0000000108d2453b: mov %rdx,0x68(%rsp) | |
0x0000000108d24540: mov %rbx,0x60(%rsp) | |
0x0000000108d24545: mov %rbp,0x50(%rsp) | |
0x0000000108d2454a: mov %rsi,0x48(%rsp) | |
0x0000000108d2454f: mov %rdi,0x40(%rsp) | |
0x0000000108d24554: mov %r8,0x38(%rsp) | |
0x0000000108d24559: mov %r9,0x30(%rsp) | |
0x0000000108d2455e: mov %r10,0x28(%rsp) | |
0x0000000108d24563: mov %r11,0x20(%rsp) | |
0x0000000108d24568: mov %r12,0x18(%rsp) | |
0x0000000108d2456d: mov %r13,0x10(%rsp) | |
0x0000000108d24572: mov %r14,0x8(%rsp) | |
0x0000000108d24577: mov %r15,(%rsp) | |
0x0000000108d2457b: movabs $0x107f947f2,%rdi ; {external_word} | |
0x0000000108d24585: movabs $0x108d24525,%rsi ; {internal_word} | |
0x0000000108d2458f: mov %rsp,%rdx | |
0x0000000108d24592: and $0xfffffffffffffff0,%rsp | |
0x0000000108d24596: callq 0x0000000107dd5c98 ; {runtime_call} | |
0x0000000108d2459b: hlt | |
[Deopt Handler Code] | |
0x0000000108d2459c: movabs $0x108d2459c,%r10 ; {section_word} | |
0x0000000108d245a6: push %r10 | |
0x0000000108d245a8: jmpq 0x0000000108c47d00 ; {runtime_call} | |
0x0000000108d245ad: hlt | |
0x0000000108d245ae: hlt | |
0x0000000108d245af: hlt | |
OopMapSet contains 3 OopMaps | |
#0 | |
OopMap{off=148} | |
#1 | |
OopMap{off=328} | |
#2 | |
OopMap{off=351} | |
Compiled method (c1) 85 47 3 Main::seriousLoop (25 bytes) | |
total in heap [0x0000000108d246d0,0x0000000108d24b10] = 1088 | |
relocation [0x0000000108d247f0,0x0000000108d24828] = 56 | |
main code [0x0000000108d24840,0x0000000108d249a0] = 352 | |
stub code [0x0000000108d249a0,0x0000000108d24a30] = 144 | |
oops [0x0000000108d24a30,0x0000000108d24a38] = 8 | |
metadata [0x0000000108d24a38,0x0000000108d24a40] = 8 | |
scopes data [0x0000000108d24a40,0x0000000108d24a78] = 56 | |
scopes pcs [0x0000000108d24a78,0x0000000108d24b08] = 144 | |
dependencies [0x0000000108d24b08,0x0000000108d24b10] = 8 | |
Decoding compiled method 0x0000000108d246d0: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main' | |
# [sp+0x40] (sp of caller) | |
0x0000000108d24840: mov %eax,-0x14000(%rsp) | |
0x0000000108d24847: push %rbp | |
0x0000000108d24848: sub $0x30,%rsp | |
0x0000000108d2484c: movabs $0x122180660,%rax ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24856: mov 0x64(%rax),%esi | |
0x0000000108d24859: add $0x8,%esi | |
0x0000000108d2485c: mov %esi,0x64(%rax) | |
0x0000000108d2485f: movabs $0x122180390,%rax ; {metadata({method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24869: and $0x1ff8,%esi | |
0x0000000108d2486f: cmp $0x0,%esi | |
0x0000000108d24872: je 0x0000000108d2493c ;*lconst_0 | |
; - Main::seriousLoop@0 (line 4) | |
0x0000000108d24878: movabs $0x0,%rax | |
0x0000000108d24882: movabs $0x0,%rsi | |
0x0000000108d2488c: jmpq 0x0000000108d248ea ;*lload_2 | |
; - Main::seriousLoop@4 (line 5) | |
0x0000000108d24891: nopl 0x0(%rax) | |
0x0000000108d24898: add %rax,%rsi | |
0x0000000108d2489b: movabs $0x1,%r10 | |
0x0000000108d248a5: add %r10,%rax | |
0x0000000108d248a8: movabs $0x122180660,%rdi ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d248b2: mov 0x68(%rdi),%ebx | |
0x0000000108d248b5: add $0x8,%ebx | |
0x0000000108d248b8: mov %ebx,0x68(%rdi) | |
0x0000000108d248bb: movabs $0x122180390,%rdi ; {metadata({method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d248c5: and $0xfff8,%ebx | |
0x0000000108d248cb: cmp $0x0,%ebx | |
0x0000000108d248ce: je 0x0000000108d24953 ; OopMap{off=148} | |
;*goto | |
; - Main::seriousLoop@20 (line 5) | |
0x0000000108d248d4: test %eax,-0x232a7da(%rip) # 0x00000001069fa100 | |
; {poll} | |
0x0000000108d248da: movabs $0x122180660,%rdi ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d248e4: incl 0xb0(%rdi) ;*goto | |
; - Main::seriousLoop@20 (line 5) | |
0x0000000108d248ea: movabs $0x5f5e100,%rdi | |
0x0000000108d248f4: cmp %rax,%rdi | |
0x0000000108d248f7: movabs $0x122180660,%rdi ; {metadata(method data for {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main')} | |
0x0000000108d24901: movabs $0xa0,%rbx | |
0x0000000108d2490b: jge 0x0000000108d2491b | |
0x0000000108d24911: movabs $0x90,%rbx | |
0x0000000108d2491b: mov (%rdi,%rbx,1),%rdx | |
0x0000000108d2491f: lea 0x1(%rdx),%rdx | |
0x0000000108d24923: mov %rdx,(%rdi,%rbx,1) | |
0x0000000108d24927: jge 0x0000000108d24898 ;*lcmp | |
; - Main::seriousLoop@8 (line 5) | |
0x0000000108d2492d: mov %rsi,%rax | |
0x0000000108d24930: add $0x30,%rsp | |
0x0000000108d24934: pop %rbp | |
0x0000000108d24935: test %eax,-0x232a83b(%rip) # 0x00000001069fa100 | |
; {poll_return} | |
0x0000000108d2493b: retq | |
0x0000000108d2493c: mov %rax,0x8(%rsp) | |
0x0000000108d24941: movq $0xffffffffffffffff,(%rsp) | |
0x0000000108d24949: callq 0x0000000108cfe8e0 ; OopMap{off=270} | |
;*synchronization entry | |
; - Main::seriousLoop@-1 (line 4) | |
; {runtime_call} | |
0x0000000108d2494e: jmpq 0x0000000108d24878 | |
0x0000000108d24953: mov %rdi,0x8(%rsp) | |
0x0000000108d24958: movq $0x14,(%rsp) | |
0x0000000108d24960: callq 0x0000000108cfe8e0 ; OopMap{off=293} | |
;*goto | |
; - Main::seriousLoop@20 (line 5) | |
; {runtime_call} | |
0x0000000108d24965: jmpq 0x0000000108d248d4 | |
0x0000000108d2496a: nop | |
0x0000000108d2496b: nop | |
0x0000000108d2496c: mov 0x288(%r15),%rax | |
0x0000000108d24973: movabs $0x0,%r10 | |
0x0000000108d2497d: mov %r10,0x288(%r15) | |
0x0000000108d24984: movabs $0x0,%r10 | |
0x0000000108d2498e: mov %r10,0x290(%r15) | |
0x0000000108d24995: add $0x30,%rsp | |
0x0000000108d24999: pop %rbp | |
0x0000000108d2499a: jmpq 0x0000000108c6cca0 ; {runtime_call} | |
0x0000000108d2499f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x0000000108d249a0: callq 0x0000000108cfc020 ; {no_reloc} | |
0x0000000108d249a5: mov %rsp,-0x28(%rsp) | |
0x0000000108d249aa: sub $0x80,%rsp | |
0x0000000108d249b1: mov %rax,0x78(%rsp) | |
0x0000000108d249b6: mov %rcx,0x70(%rsp) | |
0x0000000108d249bb: mov %rdx,0x68(%rsp) | |
0x0000000108d249c0: mov %rbx,0x60(%rsp) | |
0x0000000108d249c5: mov %rbp,0x50(%rsp) | |
0x0000000108d249ca: mov %rsi,0x48(%rsp) | |
0x0000000108d249cf: mov %rdi,0x40(%rsp) | |
0x0000000108d249d4: mov %r8,0x38(%rsp) | |
0x0000000108d249d9: mov %r9,0x30(%rsp) | |
0x0000000108d249de: mov %r10,0x28(%rsp) | |
0x0000000108d249e3: mov %r11,0x20(%rsp) | |
0x0000000108d249e8: mov %r12,0x18(%rsp) | |
0x0000000108d249ed: mov %r13,0x10(%rsp) | |
0x0000000108d249f2: mov %r14,0x8(%rsp) | |
0x0000000108d249f7: mov %r15,(%rsp) | |
0x0000000108d249fb: movabs $0x107f947f2,%rdi ; {external_word} | |
0x0000000108d24a05: movabs $0x108d249a5,%rsi ; {internal_word} | |
0x0000000108d24a0f: mov %rsp,%rdx | |
0x0000000108d24a12: and $0xfffffffffffffff0,%rsp | |
0x0000000108d24a16: callq 0x0000000107dd5c98 ; {runtime_call} | |
0x0000000108d24a1b: hlt | |
[Deopt Handler Code] | |
0x0000000108d24a1c: movabs $0x108d24a1c,%r10 ; {section_word} | |
0x0000000108d24a26: push %r10 | |
0x0000000108d24a28: jmpq 0x0000000108c47d00 ; {runtime_call} | |
0x0000000108d24a2d: hlt | |
0x0000000108d24a2e: hlt | |
0x0000000108d24a2f: hlt | |
OopMapSet contains 3 OopMaps | |
#0 | |
OopMap{off=148} | |
#1 | |
OopMap{off=270} | |
#2 | |
OopMap{off=293} | |
Compiled method (c2) 87 48 % 4 Main::seriousLoop @ 4 (25 bytes) | |
total in heap [0x0000000108d277d0,0x0000000108d27a50] = 640 | |
relocation [0x0000000108d278f0,0x0000000108d27900] = 16 | |
main code [0x0000000108d27900,0x0000000108d27980] = 128 | |
stub code [0x0000000108d27980,0x0000000108d27998] = 24 | |
oops [0x0000000108d27998,0x0000000108d279a0] = 8 | |
metadata [0x0000000108d279a0,0x0000000108d279a8] = 8 | |
scopes data [0x0000000108d279a8,0x0000000108d279d8] = 48 | |
scopes pcs [0x0000000108d279d8,0x0000000108d27a48] = 112 | |
dependencies [0x0000000108d27a48,0x0000000108d27a50] = 8 | |
Decoding compiled method 0x0000000108d277d0: | |
Code: | |
[Entry Point] | |
[Verified Entry Point] | |
[Constants] | |
# {method} {0x0000000122180390} 'seriousLoop' '()J' in 'Main' | |
0x0000000108d27900: callq 0x0000000107e53ae4 ; {runtime_call} | |
0x0000000108d27905: data32 data32 nopw 0x0(%rax,%rax,1) | |
0x0000000108d27910: sub $0x18,%rsp | |
0x0000000108d27917: mov %rbp,0x10(%rsp) | |
0x0000000108d2791c: mov (%rsi),%rbx | |
0x0000000108d2791f: mov 0x10(%rsi),%rbp | |
0x0000000108d27923: mov %rsi,%rdi | |
0x0000000108d27926: movabs $0x107ead3d4,%r10 | |
0x0000000108d27930: callq *%r10 ;*goto | |
; - Main::seriousLoop@20 (line 5) | |
0x0000000108d27933: jmp 0x0000000108d2794d | |
0x0000000108d27935: data32 data32 nopw 0x0(%rax,%rax,1) | |
0x0000000108d27940: add %rbx,%rbp ;*ladd | |
; - Main::seriousLoop@14 (line 6) | |
0x0000000108d27943: add $0x1,%rbx ; OopMap{off=71} | |
;*goto | |
; - Main::seriousLoop@20 (line 5) | |
0x0000000108d27947: test %eax,-0x232d94d(%rip) # 0x00000001069fa000 | |
;*lload_2 | |
; - Main::seriousLoop@4 (line 5) | |
; {poll} | |
0x0000000108d2794d: cmp $0x5f5e100,%rbx | |
0x0000000108d27954: jle 0x0000000108d27940 ;*ifgt | |
; - Main::seriousLoop@9 (line 5) | |
0x0000000108d27956: mov %rbp,%rax | |
0x0000000108d27959: add $0x10,%rsp | |
0x0000000108d2795d: pop %rbp | |
0x0000000108d2795e: test %eax,-0x232d964(%rip) # 0x00000001069fa000 | |
; {poll_return} | |
0x0000000108d27964: retq | |
0x0000000108d27965: hlt | |
0x0000000108d27966: hlt | |
0x0000000108d27967: hlt | |
0x0000000108d27968: hlt | |
0x0000000108d27969: hlt | |
0x0000000108d2796a: hlt | |
0x0000000108d2796b: hlt | |
0x0000000108d2796c: hlt | |
0x0000000108d2796d: hlt | |
0x0000000108d2796e: hlt | |
0x0000000108d2796f: hlt | |
0x0000000108d27970: hlt | |
0x0000000108d27971: hlt | |
0x0000000108d27972: hlt | |
0x0000000108d27973: hlt | |
0x0000000108d27974: hlt | |
0x0000000108d27975: hlt | |
0x0000000108d27976: hlt | |
0x0000000108d27977: hlt | |
0x0000000108d27978: hlt | |
0x0000000108d27979: hlt | |
0x0000000108d2797a: hlt | |
0x0000000108d2797b: hlt | |
0x0000000108d2797c: hlt | |
0x0000000108d2797d: hlt | |
0x0000000108d2797e: hlt | |
0x0000000108d2797f: hlt | |
[Exception Handler] | |
[Stub Code] | |
0x0000000108d27980: jmpq 0x0000000108c6cf60 ; {no_reloc} | |
[Deopt Handler Code] | |
0x0000000108d27985: callq 0x0000000108d2798a | |
0x0000000108d2798a: subq $0x5,(%rsp) | |
0x0000000108d2798f: jmpq 0x0000000108c47d00 ; {runtime_call} | |
0x0000000108d27994: hlt | |
0x0000000108d27995: hlt | |
0x0000000108d27996: hlt | |
0x0000000108d27997: hlt | |
OopMapSet contains 1 OopMaps | |
#0 | |
OopMap{off=71} | |
Result : 5000000050000000 | |
Time taken : 44438000 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment