Created
January 9, 2012 14:29
-
-
Save nschlimm/1583170 to your computer and use it in GitHub Desktop.
ThreadLocalRandomGenerator Assembly Code
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
Decoding compiled method 0x00c39888: | |
Code: | |
[Constants] | |
0x00c399a0 (offset: 0): 0x00000000 0x4340000000000000 | |
0x00c399a4 (offset: 4): 0x43400000 | |
0x00c399a8 (offset: 8): 0xf4f4f4f4 0xf4f4f4f4f4f4f4f4 | |
0x00c399ac (offset: 12): 0xf4f4f4f4 | |
[Disassembling for mach='i386'] | |
[Entry Point] | |
# {method} 'run' '()V' in 'com/schlimm/java7/concurrency/random/generators/ThreadLocalRandomGenerator' | |
# [sp+0x70] (sp of caller) | |
;; block B9 [0, 0] | |
0x00c399b0: nop ; {no_reloc} | |
0x00c399b1: nop | |
0x00c399b2: nop | |
0x00c399b3: nop | |
0x00c399b4: nop | |
0x00c399b5: nop | |
0x00c399b6: nop | |
0x00c399b7: cmp 0x4(%ecx),%eax | |
0x00c399ba: jne 0x00bead90 ; {runtime_call} | |
[Verified Entry Point] | |
0x00c399c0: mov %eax,0xffff8000(%esp) | |
0x00c399c7: push %ebp | |
0x00c399c8: sub $0x68,%esp ;*aload_0 | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@0 (line 13) | |
;; block B0 [0, 15] | |
0x00c399cb: movsd 0x8(%ecx),%xmm0 ;*getfield r | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@2 (line 13) | |
0x00c399d0: mov $0x100d2118,%esi ; {oop(a 'java/lang/Class' = 'java/util/concurrent/ThreadLocalRandom')} | |
0x00c399d5: mov 0x68(%esi),%esi ;*getstatic localRandom | |
; - java.util.concurrent.ThreadLocalRandom::current@0 (line 113) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@5 (line 13) | |
0x00c399d8: mov %ecx,0x38(%esp) | |
0x00c399dc: mov %esi,%ecx ;*invokevirtual get | |
; - java.util.concurrent.ThreadLocalRandom::current@3 (line 113) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@5 (line 13) | |
0x00c399de: movsd %xmm0,0x58(%esp) | |
0x00c399e4: nop | |
0x00c399e5: nop | |
0x00c399e6: nop | |
0x00c399e7: call 0x00beafd0 ; OopMap{[56]=Oop off=60} | |
;*invokevirtual get | |
; - java.util.concurrent.ThreadLocalRandom::current@3 (line 113) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@5 (line 13) | |
; {optimized virtual_call} | |
0x00c399ec: cmp $0x0,%eax | |
0x00c399ef: je 0x00c39a07 | |
0x00c399f5: cmpl $0x20237c88,0x4(%eax) ; {oop('java/util/concurrent/ThreadLocalRandom')} | |
0x00c399fc: jne 0x00c39b39 | |
0x00c39a02: jmp 0x00c39a07 | |
0x00c39a07: mov %eax,%ecx ;*checkcast | |
; - java.util.concurrent.ThreadLocalRandom::current@6 (line 113) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@5 (line 13) | |
0x00c39a09: mov 0x18(%ecx),%eax ; implicit exception: dispatches to 0x00c39b52 | |
0x00c39a0c: mov 0x1c(%ecx),%edx ;*getfield rnd | |
; - java.util.concurrent.ThreadLocalRandom::next@2 (line 129) | |
; - java.util.Random::nextDouble@3 (line 438) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@8 (line 13) | |
0x00c39a0f: mov $0xdeece66d,%esi | |
0x00c39a14: mov $0x5,%edi | |
0x00c39a19: mov %ecx,0x3c(%esp) | |
0x00c39a1d: mov %esi,%ebx | |
0x00c39a1f: mov %edi,%ecx | |
0x00c39a21: imul %ebx,%edx | |
0x00c39a24: imul %eax,%ecx | |
0x00c39a27: add %edx,%ecx | |
0x00c39a29: mul %ebx | |
0x00c39a2b: add %ecx,%edx | |
0x00c39a2d: mov $0xb,%ebx | |
0x00c39a32: mov $0x0,%ecx | |
0x00c39a37: add %ebx,%eax | |
0x00c39a39: adc %ecx,%edx | |
0x00c39a3b: mov %ebx,0x40(%esp) | |
0x00c39a3f: mov %ecx,0x44(%esp) | |
0x00c39a43: mov $0xffffffff,%ebx | |
0x00c39a48: mov $0xffff,%ecx | |
0x00c39a4d: and %ebx,%eax | |
0x00c39a4f: and %ecx,%edx | |
0x00c39a51: mov %ebx,0x48(%esp) | |
0x00c39a55: mov %ecx,0x4c(%esp) | |
0x00c39a59: mov 0x3c(%esp),%ebx | |
0x00c39a5d: mov %eax,0x18(%ebx) | |
0x00c39a60: mov %edx,0x1c(%ebx) ;*putfield rnd | |
; - java.util.concurrent.ThreadLocalRandom::next@17 (line 129) | |
; - java.util.Random::nextDouble@3 (line 438) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@8 (line 13) | |
0x00c39a63: mov %eax,0x50(%esp) | |
0x00c39a67: mov %edx,0x54(%esp) | |
0x00c39a6b: mov 0x50(%esp),%eax | |
0x00c39a6f: mov 0x54(%esp),%edx | |
0x00c39a73: imul %esi,%edx | |
0x00c39a76: imul %eax,%edi | |
0x00c39a79: add %edx,%edi | |
0x00c39a7b: mul %esi | |
0x00c39a7d: add %edi,%edx | |
0x00c39a7f: mov 0x40(%esp),%esi | |
0x00c39a83: mov 0x44(%esp),%ecx | |
0x00c39a87: add %esi,%eax | |
0x00c39a89: adc %ecx,%edx | |
0x00c39a8b: mov 0x48(%esp),%esi | |
0x00c39a8f: mov 0x4c(%esp),%ecx | |
0x00c39a93: and %esi,%eax | |
0x00c39a95: and %ecx,%edx | |
0x00c39a97: mov %eax,0x18(%ebx) | |
0x00c39a9a: mov %edx,0x1c(%ebx) ;*putfield rnd | |
; - java.util.concurrent.ThreadLocalRandom::next@17 (line 129) | |
; - java.util.Random::nextDouble@13 (line 438) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@8 (line 13) | |
0x00c39a9d: mov $0x16,%ecx | |
0x00c39aa2: mov 0x50(%esp),%esi | |
0x00c39aa6: mov 0x54(%esp),%edi | |
0x00c39aaa: and $0x3f,%ecx | |
0x00c39aad: cmp $0x20,%ecx | |
0x00c39ab0: jl 0x00c39aba | |
0x00c39ab6: mov %edi,%esi | |
0x00c39ab8: xor %edi,%edi | |
0x00c39aba: shrd %cl,%edi,%esi | |
0x00c39abd: shr %cl,%edi | |
0x00c39abf: mov %esi,%edi | |
0x00c39ac1: sar $0x1f,%edi | |
0x00c39ac4: mov $0x1b,%ecx | |
0x00c39ac9: and $0x3f,%ecx | |
0x00c39acc: cmp $0x20,%ecx | |
0x00c39acf: jl 0x00c39ad9 | |
0x00c39ad5: mov %esi,%edi | |
0x00c39ad7: xor %esi,%esi | |
0x00c39ad9: shld %cl,%esi,%edi | |
0x00c39adc: shl %cl,%esi | |
0x00c39ade: mov $0x15,%ecx | |
0x00c39ae3: and $0x3f,%ecx | |
0x00c39ae6: cmp $0x20,%ecx | |
0x00c39ae9: jl 0x00c39af3 | |
0x00c39aef: mov %edx,%eax | |
0x00c39af1: xor %edx,%edx | |
0x00c39af3: shrd %cl,%edx,%eax | |
0x00c39af6: shr %cl,%edx | |
0x00c39af8: mov %eax,%ebx | |
0x00c39afa: sar $0x1f,%eax | |
0x00c39afd: add %ebx,%esi | |
0x00c39aff: adc %eax,%edi | |
0x00c39b01: mov %esi,(%esp) | |
0x00c39b04: mov %edi,0x4(%esp) | |
0x00c39b08: fildll (%esp) | |
0x00c39b0b: fstpl (%esp) | |
0x00c39b0e: movsd (%esp),%xmm0 | |
0x00c39b13: divsd 0xc399a0,%xmm0 ; {section_word} | |
0x00c39b1b: movsd 0x58(%esp),%xmm1 | |
0x00c39b21: addsd %xmm0,%xmm1 | |
0x00c39b25: mov 0x38(%esp),%ecx | |
0x00c39b29: movsd %xmm1,0x8(%ecx) ;*putfield r | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@12 (line 13) | |
0x00c39b2e: add $0x68,%esp | |
0x00c39b31: pop %ebp | |
0x00c39b32: test %eax,0x9f0100 ; {poll_return} | |
0x00c39b38: ret | |
;; SimpleExceptionStub slow case | |
0x00c39b39: mov %eax,(%esp) | |
0x00c39b3c: call 0x00c2a5a0 ; OopMap{[56]=Oop off=401} | |
;*checkcast | |
; - java.util.concurrent.ThreadLocalRandom::current@6 (line 113) | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@5 (line 13) | |
; {runtime_call} | |
0x00c39b41: push $0x84117f8 ; {external_word} | |
0x00c39b46: call 0x00c39b4b | |
0x00c39b4b: pusha | |
0x00c39b4c: call 0x08260100 ; {runtime_call} | |
0x00c39b51: hlt | |
;; ImplicitNullCheckStub slow case | |
0x00c39b52: call 0x00c28620 ; OopMap{[56]=Oop ecx=Oop off=423} | |
;*invokevirtual nextDouble | |
; - com.schlimm.java7.concurrency.random.generators.ThreadLocalRandomGenerator::run@8 (line 13) | |
; {runtime_call} | |
0x00c39b57: push $0x84117f8 ; {external_word} | |
0x00c39b5c: call 0x00c39b61 | |
0x00c39b61: pusha | |
0x00c39b62: call 0x08260100 ; {runtime_call} | |
0x00c39b67: hlt | |
0x00c39b68: nop | |
0x00c39b69: nop | |
;; Unwind handler | |
0x00c39b6a: mov %fs:0x0,%esi | |
0x00c39b72: mov 0xfffffff4(%esi),%esi | |
0x00c39b75: mov 0x198(%esi),%eax | |
0x00c39b7b: movl $0x0,0x198(%esi) | |
0x00c39b85: movl $0x0,0x19c(%esi) | |
0x00c39b8f: add $0x68,%esp | |
0x00c39b92: pop %ebp | |
0x00c39b93: jmp 0x00c27e60 ; {runtime_call} | |
0x00c39b98: hlt | |
0x00c39b99: hlt | |
0x00c39b9a: hlt | |
0x00c39b9b: hlt | |
0x00c39b9c: hlt | |
0x00c39b9d: hlt | |
0x00c39b9e: hlt | |
0x00c39b9f: hlt | |
[Stub Code] | |
0x00c39ba0: nop ; {no_reloc} | |
0x00c39ba1: nop | |
0x00c39ba2: mov $0x0,%ebx ; {static_stub} | |
0x00c39ba7: jmp 0x00c39ba7 ; {runtime_call} | |
[Exception Handler] | |
0x00c39bac: mov $0xdead,%ebx | |
0x00c39bb1: mov $0xdead,%ecx | |
0x00c39bb6: mov $0xdead,%esi | |
0x00c39bbb: mov $0xdead,%edi | |
0x00c39bc0: call 0x00c2a260 ; {runtime_call} | |
0x00c39bc5: push $0x84117f8 ; {external_word} | |
0x00c39bca: call 0x00c39bcf | |
0x00c39bcf: pusha | |
0x00c39bd0: call 0x08260100 ; {runtime_call} | |
0x00c39bd5: hlt | |
[Deopt Handler Code] | |
0x00c39bd6: push $0xc39bd6 ; {section_word} | |
0x00c39bdb: jmp 0x00bebac0 ; {runtime_call} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment