Skip to content

Instantly share code, notes, and snippets.

@martijndwars
Last active December 28, 2019 20:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save martijndwars/0d8ac5ae9b7b7933216709c27f72f56b to your computer and use it in GitHub Desktop.
Save martijndwars/0d8ac5ae9b7b7933216709c27f72f56b to your computer and use it in GitHub Desktop.
Hottest Region with Random.nextInt(2)
....[Hottest Region 1]..............................................................................
C2, nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub, version 92 (285 bytes)
; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@33 (line 192)
0x000000010ee39cf8: mov $0x1,%ebx
╭ 0x000000010ee39cfd: jmpq 0x000000010ee39e29
│ 0x000000010ee39d02: mov %r8,0x50(%rsp)
│ 0x000000010ee39d07: mov %rbx,0x10(%rsp) ;*lload_2
│ ; - java.util.Random::seedUniquifier@24 (line 115)
│ ; - java.util.Random::<init>@1 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
│ 0x000000010ee39d0c: movabs $0x10d13aa00,%r10
0.01% │ 0x000000010ee39d16: callq *%r10 ;*invokestatic nanoTime
│ ; - java.util.Random::<init>@4 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
│ 0x000000010ee39d19: mov 0x60(%r15),%rcx
│ 0x000000010ee39d1d: xor %rax,%rbp ;*lxor
│ ; - java.util.Random::<init>@7 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.01% │ 0x000000010ee39d20: mov %rcx,%r10
│ 0x000000010ee39d23: add $0x18,%r10
│ 0x000000010ee39d27: cmp 0x70(%r15),%r10
│ 0x000000010ee39d2b: jae 0x000000010ee39f35
│ 0x000000010ee39d31: mov %r10,0x60(%r15)
0.01% │ 0x000000010ee39d35: prefetchw 0xc0(%r10)
0.01% │ 0x000000010ee39d3d: mov (%rsp),%rbx
│ 0x000000010ee39d41: mov 0xa8(%rbx),%r10
0.01% │ 0x000000010ee39d48: mov %r10,(%rcx)
0.01% │ 0x000000010ee39d4b: movl $0xf80053a8,0x8(%rcx) ; {metadata('java/util/concurrent/atomic/AtomicLong')}
│ 0x000000010ee39d52: mov %r12d,0xc(%rcx)
│ 0x000000010ee39d56: mov %r12,0x10(%rcx)
0.02% │ 0x000000010ee39d5a: movabs $0x5deece66d,%r10
│ 0x000000010ee39d64: xor %r10,%rbp
│ 0x000000010ee39d67: movabs $0xffffffffffff,%r10
│ 0x000000010ee39d71: and %r10,%rbp
0.01% │ 0x000000010ee39d74: mov %rbp,0x10(%rcx)
│ 0x000000010ee39d78: lock addl $0x0,(%rsp) ;*synchronization entry
│ ; - java.util.Random::<init>@-1 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.29% │ 0x000000010ee39d7d: xor %r11d,%r11d ;*synchronization entry
│ ; - java.util.concurrent.atomic.AtomicLong::get@-1 (line 105)
│ ; - java.util.Random::next@8 (line 202)
│ ; - java.util.Random::nextInt@17 (line 390)
│ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.02% │↗ 0x000000010ee39d80: mov 0x10(%rcx),%rax ;*invokevirtual compareAndSwapLong
││ ; - java.util.concurrent.atomic.AtomicLong::compareAndSet@9 (line 147)
││ ; - java.util.Random::next@32 (line 204)
││ ; - java.util.Random::nextInt@17 (line 390)
││ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
28.47% ││ 0x000000010ee39d84: mov %rax,%r8
0.15% ││ 0x000000010ee39d87: movabs $0x5deece66d,%r10
0.01% ││ 0x000000010ee39d91: imul %r10,%r8
7.79% ││ 0x000000010ee39d95: add $0xb,%r8 ;*ladd
││ ; - java.util.Random::next@20 (line 203)
││ ; - java.util.Random::nextInt@17 (line 390)
││ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
2.98% ││ 0x000000010ee39d99: mov %r8,%r9
0.04% ││ 0x000000010ee39d9c: movabs $0xffffffffffff,%r10
││ 0x000000010ee39da6: and %r10,%r9 ;*land
││ ; - java.util.Random::next@24 (line 203)
││ ; - java.util.Random::nextInt@17 (line 390)
││ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
2.64% ││ 0x000000010ee39da9: lock cmpxchg %r9,0x10(%rcx)
47.57% ││ 0x000000010ee39daf: sete %r10b
0.33% ││ 0x000000010ee39db3: movzbl %r10b,%r10d ;*invokevirtual compareAndSwapLong
││ ; - java.util.concurrent.atomic.AtomicLong::compareAndSet@9 (line 147)
││ ; - java.util.Random::next@32 (line 204)
││ ; - java.util.Random::nextInt@17 (line 390)
││ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
2.61% ││ 0x000000010ee39db7: test %r10d,%r10d
││ 0x000000010ee39dba: je 0x000000010ee39ec1 ;*ifeq
││ ; - java.util.Random::next@35 (line 204)
││ ; - java.util.Random::nextInt@17 (line 390)
││ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.08% ││ 0x000000010ee39dc0: shr $0x11,%r8
││ 0x000000010ee39dc4: and $0x7fffffff,%r8
0.02% ││ 0x000000010ee39dcb: mov %r8d,%r8d
2.70% ││ 0x000000010ee39dce: movslq %r8d,%r10
0.03% ││ 0x000000010ee39dd1: shl %r10
0.01% ││ 0x000000010ee39dd4: sar $0x1f,%r10
││ 0x000000010ee39dd8: mov %r10d,%r8d ;*l2i ; - java.util.Random::nextInt@39 (line 393)
││ ; - nl.martijndwars.jits.Range::benchmark@25 (line 28)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
2.39% ││ 0x000000010ee39ddb: cmp $0x1,%r8d
││ 0x000000010ee39ddf: jg 0x000000010ee39efd ;*if_icmple
││ ; - nl.martijndwars.jits.Range::benchmark@39 (line 31)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.02% ││ 0x000000010ee39de5: inc %r11d ;*iinc
││ ; - nl.martijndwars.jits.Range::benchmark@50 (line 27)
││ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.01% ││ 0x000000010ee39de8: cmp $0x12c,%r11d
│╰ 0x000000010ee39def: jl 0x000000010ee39d80 ;*if_icmpge
│ ; - nl.martijndwars.jits.Range::benchmark@16 (line 27)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
│ 0x000000010ee39df1: mov %rbx,(%rsp) ;*invokevirtual benchmark
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.02% │ 0x000000010ee39df5: mov 0x8(%rsp),%rsi
0.01% │ 0x000000010ee39dfa: xor %edx,%edx
│ 0x000000010ee39dfc: data16 xchg %ax,%ax
│ 0x000000010ee39dff: callq 0x000000010ede70a0 ; OopMap{[80]=Oop [88]=Oop [96]=Oop [8]=Oop off=708}
│ ;*invokevirtual consume
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@20 (line 190)
│ ; {optimized virtual_call}
0.01% │ 0x000000010ee39e04: mov 0x50(%rsp),%r8
│ 0x000000010ee39e09: movzbl 0x94(%r8),%r11d ;*getfield isDone
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@30 (line 192)
│ 0x000000010ee39e11: mov 0x10(%rsp),%rbx
0.02% │ 0x000000010ee39e16: add $0x1,%rbx ; OopMap{r8=Oop [80]=Oop [88]=Oop [96]=Oop [8]=Oop off=730}
│ ;*ifeq
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@33 (line 192)
│ 0x000000010ee39e1a: test %eax,-0x118fe20(%rip) # 0x000000010dcaa000
│ ; {poll}
│ 0x000000010ee39e20: test %r11d,%r11d
│ 0x000000010ee39e23: jne 0x000000010ee39f55 ;*synchronization entry
│ ; - java.util.concurrent.atomic.AtomicLong::get@-1 (line 105)
│ ; - java.util.Random::seedUniquifier@3 (line 112)
│ ; - java.util.Random::<init>@1 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
↘ 0x000000010ee39e29: movabs $0x76b124078,%r10 ; {oop(a 'java/util/concurrent/atomic/AtomicLong')}
0.03% 0x000000010ee39e33: mov 0x10(%r10),%rax ;*invokevirtual compareAndSwapLong
; - java.util.concurrent.atomic.AtomicLong::compareAndSet@9 (line 147)
; - java.util.Random::seedUniquifier@18 (line 114)
; - java.util.Random::<init>@1 (line 105)
; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0x000000010ee39e37: mov %rax,%rbp
0x000000010ee39e3a: movabs $0x285d320ad33fdb5,%r10
0x000000010ee39e44: imul %r10,%rbp ;*lmul
; - java.util.Random::seedUniquifier@11 (line 113)
; - java.util.Random::<init>@1 (line 105)
....[Hottest Region 3]..............................................................................
JVMCI-native, nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub, version 97 (148 bytes)
; - java.util.Random::<init>@1 (line 105)
; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0x000000011029dd80: test %eax,-0x15afd80(%rip) # 0x000000010ecee006
;*getstatic seedUniquifier {reexecute=0 rethrow=0 return_oop=0}
; - java.util.Random::seedUniquifier@0 (line 112)
; - java.util.Random::<init>@1 (line 105)
; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
; {poll}
0.08% ↗ 0x000000011029dd86: mov 0x10(%r11),%r9 ;*getfield value {reexecute=0 rethrow=0 return_oop=0}
│ ; - java.util.concurrent.atomic.AtomicLong::get@1 (line 105)
│ ; - java.util.Random::seedUniquifier@3 (line 112)
│ ; - java.util.Random::<init>@1 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.04% │ 0x000000011029dd8a: mov %r9,%rcx
0.32% │ 0x000000011029dd8d: imul %r10,%rcx ;*lmul {reexecute=0 rethrow=0 return_oop=0}
│ ; - java.util.Random::seedUniquifier@11 (line 113)
│ ; - java.util.Random::<init>@1 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
│ 0x000000011029dd91: mov %r9,%rax
0.09% │ 0x000000011029dd94: lock cmpxchg %rcx,0x10(%r11) ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
│ ; - java.util.Random::seedUniquifier@21 (line 114)
│ ; - java.util.Random::<init>@1 (line 105)
│ ; - nl.martijndwars.jits.Range::benchmark@4 (line 24)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
9.55% │ 0x000000011029dd9a: jne 0x000000011029dd80
0.01% │ 0x000000011029dd9c: callq 0x000000010faeec16 ; {runtime_call}
0.51% │ 0x000000011029dda1: nop
│ 0x000000011029dda2: mov $0x0,%esi
╭ │ 0x000000011029dda7: jmpq 0x000000011029ddb2 ;*iload_3 {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - nl.martijndwars.jits.Range::benchmark@12 (line 27)
│ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
│ │ 0x000000011029ddac: nopl 0x0(%rax) ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - nl.martijndwars.jits.Range::benchmark@16 (line 27)
│ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.50% │↗ │ 0x000000011029ddb0: inc %esi ;*iinc {reexecute=0 rethrow=0 return_oop=0}
││ │ ; - nl.martijndwars.jits.Range::benchmark@50 (line 27)
││ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.61% ↘│ │ 0x000000011029ddb2: cmp $0x1,%esi
╰ │ 0x000000011029ddb5: jl 0x000000011029ddb0
╭ │ 0x000000011029ddb7: jmpq 0x000000011029ddc3
│ │ 0x000000011029ddbc: nopl 0x0(%rax) ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - nl.martijndwars.jits.Range::benchmark@16 (line 27)
│ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
9.47% │↗ │ 0x000000011029ddc0: lea 0x10(%rsi),%esi ;*iinc {reexecute=0 rethrow=0 return_oop=0}
││ │ ; - nl.martijndwars.jits.Range::benchmark@50 (line 27)
││ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.53% ↘│ │ 0x000000011029ddc3: cmp $0x11c,%esi
╰ │ 0x000000011029ddc9: jl 0x000000011029ddc0
0.01% ╭ │ 0x000000011029ddcb: jmpq 0x000000011029ddd2 ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
│ │ ; - nl.martijndwars.jits.Range::benchmark@16 (line 27)
│ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
6.23% │↗ │ 0x000000011029ddd0: inc %esi ;*iinc {reexecute=0 rethrow=0 return_oop=0}
││ │ ; - nl.martijndwars.jits.Range::benchmark@50 (line 27)
││ │ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.50% ↘│ │ 0x000000011029ddd2: cmp $0x12c,%esi
╰ │ 0x000000011029ddd8: jl 0x000000011029ddd0 ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
│ ; - nl.martijndwars.jits.Range::benchmark@16 (line 27)
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@17 (line 190)
0.03% │ 0x000000011029ddda: mov 0x10(%rsp),%rsi ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@20 (line 190)
0.63% │ 0x000000011029dddf: mov $0x0,%edx
0.01% │ 0x000000011029dde4: data16 xchg %ax,%ax
│ 0x000000011029dde7: callq 0x00000001102350a0 ; OopMap{[8]=Oop [16]=Oop [24]=Oop [32]=Oop off=236}
│ ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@20 (line 190)
│ ; {optimized virtual_call}
0.60% │ 0x000000011029ddec: nop
│ 0x000000011029dded: mov 0x20(%rsp),%rsi
0.44% │ 0x000000011029ddf2: movsbl 0x94(%rsi),%r10d ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0}
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@30 (line 192)
0.19% │ 0x000000011029ddfa: mov 0x28(%rsp),%r11
0.01% │ 0x000000011029ddff: inc %r11 ;*ladd {reexecute=0 rethrow=0 return_oop=0}
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@26 (line 191)
0.49% │ 0x000000011029de02: test %r10b,%r10b ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
│ ; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@33 (line 192)
0.02% │ 0x000000011029de05: mov %r11,0x28(%rsp)
0.07% ╭│ 0x000000011029de0a: jne 0x000000011029de24
0.04% ││ 0x000000011029de10: movabs $0x76b4f9868,%r11 ; {oop(a 'java/util/concurrent/atomic/AtomicLong')}
0.35% ││ 0x000000011029de1a: mov 0x30(%rsp),%r10
│╰ 0x000000011029de1f: jmpq 0x000000011029dd86
↘ 0x000000011029de24: callq 0x000000010faeec16 ; {runtime_call}
0x000000011029de29: nop
0x000000011029de2a: mov 0x18(%rsp),%rdx
0x000000011029de2f: mov %rax,0x30(%rdx) ;*putfield stopTime {reexecute=0 rethrow=0 return_oop=0}
; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@40 (line 193)
0x000000011029de33: mov %r12,0x20(%rdx) ;*putfield realTime {reexecute=0 rethrow=0 return_oop=0}
; - nl.martijndwars.jits.generated.Range_benchmark_jmhTest::benchmark_avgt_jmhStub@46 (line 194)
0x000000011029de37: mov 0x28(%rsp),%r11
0x000000011029de3c: mov %r11,0x18(%rdx) ;*putfield measuredOps {reexecute=0 rethrow=0 return_oop=0}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment