Created
January 30, 2019 17:24
-
-
Save arnaudroger/b88bb70ed1ed837f669fc33df2bfa5df to your computer and use it in GitHub Desktop.
This file contains hidden or 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
# {method} {0x00000001282303f8} 'poll' '()Ljava/lang/Object;' in 'org/jctools/queues/BaseMpscLinkedArrayQueue' | |
# [sp+0x70] (sp of caller) | |
[Entry Point] | |
0x00000001186d03e0: mov 0x8(%rsi),%r10d | |
0x00000001186d03e4: movabs $0x800000000,%r12 | |
0x00000001186d03ee: add %r12,%r10 | |
0x00000001186d03f1: xor %r12,%r12 | |
0x00000001186d03f4: cmp %r10,%rax | |
0x00000001186d03f7: jne 0x0000000110c24c80 ; {runtime_call ic_miss_stub} | |
0x00000001186d03fd: data16 xchg %ax,%ax | |
[Verified Entry Point] | |
0x00000001186d0400: mov %eax,-0x14000(%rsp) | |
0x00000001186d0407: push %rbp | |
0x00000001186d0408: sub $0x60,%rsp ;*synchronization entry | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@-1 (line 322) | |
0x00000001186d040c: mov %rsi,0x40(%rsp) | |
0x00000001186d0411: mov 0x110(%rsi),%r11 ;*getfield consumerIndex {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@6 (line 323) | |
0x00000001186d0418: mov 0x108(%rsi),%r8 ;*getfield consumerMask {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@11 (line 324) | |
0x00000001186d041f: mov 0x118(%rsi),%ecx ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::getObjectVolatile@5 (line 903) | |
; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@27 (line 327) | |
0x00000001186d0425: mov %r11,%rbp | |
0x00000001186d0428: and %r8,%rbp | |
0x00000001186d042b: lea (%r12,%rcx,8),%r9 ;*getfield consumerBuffer {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@1 (line 322) | |
0x00000001186d042f: shl %rbp ;*lshl {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.LinkedArrayQueueUtil::modifiedCalcElementOffset@11 (line 24) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@19 (line 326) | |
0x00000001186d0432: mov 0x10(%r9,%rbp,1),%ecx ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::getObjectVolatile@5 (line 903) | |
; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@27 (line 327) | |
0x00000001186d0437: test %ecx,%ecx | |
0x00000001186d0439: je L0004 ;*ifnonnull {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@34 (line 328) | |
0x00000001186d043b: lea (%r12,%rcx,8),%rbx ;*goto {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@59 (line 339) | |
L0000: movabs $0x70fe78070,%r10 ; {oop(a 'java/lang/Object'{0x000000070fe78070})} | |
0x00000001186d0449: cmp %r10,%rbx | |
0x00000001186d044c: je L0007 | |
0x00000001186d0452: cmpb $0x0,0x30(%r15) | |
0x00000001186d0457: jne L0003 | |
L0001: movl $0x0,0x10(%r9,%rbp,1) | |
0x00000001186d0462: add $0x2,%r11 | |
0x00000001186d0466: mov 0x40(%rsp),%r10 | |
0x00000001186d046b: mov %r11,0x110(%r10) ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::getObjectVolatile@5 (line 903) | |
; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@27 (line 327) | |
L0002: mov %rbx,%rax | |
0x00000001186d0475: add $0x60,%rsp | |
0x00000001186d0479: pop %rbp | |
0x00000001186d047a: mov 0x108(%r15),%r10 | |
0x00000001186d0481: test %eax,(%r10) ; {poll_return} *** SAFEPOINT POLL *** | |
0x00000001186d0484: retq | |
L0003: mov 0x10(%r9,%rbp,1),%r10d | |
0x00000001186d048a: test %r10d,%r10d | |
0x00000001186d048d: je L0001 | |
0x00000001186d048f: mov 0x38(%r15),%r8 | |
0x00000001186d0493: mov %r10,%rdi | |
0x00000001186d0496: shl $0x3,%rdi | |
0x00000001186d049a: test %r8,%r8 | |
0x00000001186d049d: je L0009 | |
0x00000001186d04a3: mov 0x48(%r15),%r10 | |
0x00000001186d04a7: mov %rdi,-0x8(%r10,%r8,1) | |
0x00000001186d04ac: add $0xfffffffffffffff8,%r8 | |
0x00000001186d04b0: mov %r8,0x38(%r15) ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::putOrderedObject@7 (line 1022) | |
; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@93 (line 353) | |
0x00000001186d04b4: jmp L0001 | |
L0004: mov 0x88(%rsi),%r10 ;*invokevirtual getLongVolatile {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::getLongVolatile@5 (line 978) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueueProducerFields::lvProducerIndex@7 (line 61) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@39 (line 330) | |
0x00000001186d04bd: cmp %r10,%r11 | |
0x00000001186d04c0: je L0008 ;*ifeq {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@43 (line 330) | |
0x00000001186d04c6: mov %rbp,%r10 | |
0x00000001186d04c9: add $0x10,%r10 ;*ladd {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.LinkedArrayQueueUtil::modifiedCalcElementOffset@12 (line 24) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@19 (line 326) | |
0x00000001186d04cd: mov %r10,0x20(%rsp) | |
0x00000001186d04d2: mov %r9,%rsi | |
0x00000001186d04d5: mov %r10,%rdx | |
0x00000001186d04d8: mov %r9,0x38(%rsp) | |
0x00000001186d04dd: mov %r11,0x28(%rsp) | |
0x00000001186d04e2: mov %r8,0x30(%rsp) | |
0x00000001186d04e7: callq 0x0000000110c25400 ; ImmutableOopMap{[56]=Oop [64]=Oop } | |
;*invokestatic lvElement {reexecute=0 rethrow=0 return_oop=1} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@49 (line 337) | |
; {static_call} | |
0x00000001186d04ec: mov %rax,%rbx | |
0x00000001186d04ef: test %rax,%rax | |
0x00000001186d04f2: jne L0006 ;*ifnull {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@56 (line 339) | |
0x00000001186d04f4: nopl 0x0(%rax,%rax,1) | |
0x00000001186d04fc: data16 data16 xchg %ax,%ax ;*goto {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@59 (line 339) | |
L0005: mov 0x38(%rsp),%rsi | |
0x00000001186d0505: mov 0x20(%rsp),%rdx | |
0x00000001186d050a: nop | |
0x00000001186d050b: callq 0x0000000110c25400 ; ImmutableOopMap{[56]=Oop [64]=Oop } | |
;*invokestatic lvElement {reexecute=0 rethrow=0 return_oop=1} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@49 (line 337) | |
; {static_call} | |
0x00000001186d0510: mov %rax,%rbx | |
0x00000001186d0513: test %rax,%rax | |
0x00000001186d0516: je L0005 ;*goto {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@59 (line 339) | |
L0006: mov 0x28(%rsp),%r11 | |
0x00000001186d051d: mov 0x30(%rsp),%r8 | |
0x00000001186d0522: mov 0x38(%rsp),%r9 | |
0x00000001186d0527: jmpq L0000 | |
L0007: mov 0x40(%rsp),%rsi | |
0x00000001186d0531: mov %r9,%rdx | |
0x00000001186d0534: mov %r8,%rcx | |
0x00000001186d0537: mov %rsi,%rbp | |
0x00000001186d053a: mov %r11,0x8(%rsp) | |
0x00000001186d053f: callq 0x0000000110c24f00 ; ImmutableOopMap{rbp=Oop } | |
;*invokespecial getNextBuffer {reexecute=0 rethrow=0 return_oop=1} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@76 (line 349) | |
; {optimized virtual_call} | |
0x00000001186d0544: mov %rbp,%rsi | |
0x00000001186d0547: mov %rax,%rdx | |
0x00000001186d054a: mov 0x8(%rsp),%rcx | |
0x00000001186d054f: callq 0x0000000110c24f00 ; ImmutableOopMap{} | |
;*invokespecial newBufferPoll {reexecute=0 rethrow=0 return_oop=1} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@85 (line 350) | |
; {optimized virtual_call} | |
0x00000001186d0554: mov %rax,%rbx | |
0x00000001186d0557: jmpq L0002 | |
L0008: xor %ebx,%ebx | |
0x00000001186d055e: jmpq L0002 | |
L0009: mov %r9,%r14 | |
0x00000001186d0566: mov %r11,%r13 | |
0x00000001186d0569: mov %r15,%rsi | |
0x00000001186d056c: movabs $0x102ef1df6,%r10 | |
0x00000001186d0576: callq *%r10 ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::putOrderedObject@7 (line 1022) | |
; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@93 (line 353) | |
0x00000001186d0579: mov %r13,%r11 | |
0x00000001186d057c: mov %r14,%r9 | |
0x00000001186d057f: jmpq L0001 ;*invokespecial newBufferPoll {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@85 (line 350) | |
0x00000001186d0584: mov %rax,%rsi | |
0x00000001186d0587: jmp L000a ;*invokespecial getNextBuffer {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@76 (line 349) | |
0x00000001186d0589: mov %rax,%rsi | |
0x00000001186d058c: jmp L000a | |
0x00000001186d058e: mov %rax,%rsi | |
0x00000001186d0591: jmp L000a | |
0x00000001186d0593: mov %rax,%rsi ;*invokestatic lvElement {reexecute=0 rethrow=0 return_oop=0} | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@49 (line 337) | |
L000a: add $0x60,%rsp | |
0x00000001186d059a: pop %rbp | |
0x00000001186d059b: jmpq 0x0000000110cf2d80 ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} | |
; - sun.misc.Unsafe::putOrderedObject@7 (line 1022) | |
; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) | |
; - org.jctools.queues.BaseMpscLinkedArrayQueue::poll@93 (line 353) | |
; {runtime_call _rethrow_Java} | |
[Stub Code] | |
0x00000001186d05a0: movabs $0x0,%rbx ; {no_reloc} | |
L000b: jmpq L000b ; {runtime_call} | |
0x00000001186d05af: movabs $0x0,%rbx ; {static_stub} | |
L000c: jmpq L000c ; {runtime_call} | |
0x00000001186d05be: movabs $0x0,%rbx ; {static_stub} | |
L000d: jmpq L000d ; {runtime_call} | |
0x00000001186d05cd: movabs $0x0,%rbx ; {static_stub} | |
L000e: jmpq L000e ; {runtime_call} | |
[Exception Handler] | |
0x00000001186d05dc: jmpq 0x0000000110c5b680 ; {runtime_call ExceptionBlob} | |
[Deopt Handler Code] | |
0x00000001186d05e1: callq 0x00000001186d05e6 | |
0x00000001186d05e6: subq $0x5,(%rsp) | |
0x00000001186d05eb: jmpq 0x0000000110c26520 ; {runtime_call DeoptimizationBlob}ImmutableOopMap{[56]=Oop [64]=Oop }pc offsets: 268 304 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment