Follow up for: https://psy-lob-saw.blogspot.ru/2018/01/what-difference-jvm-makes.html $ taskset -c 4-7 ~/trunks/shenandoah-jdk10/build/baseline/bin/java -jar target/microbenchmarks.jar \ throughput.QueueThroughputBackoffNone -p qType=SpscArrayQueue -p qCapacity=131072 \ -jvmArgs="-Xmx1g -Xms1g -XX:+UseShenandoahGC" -i 5 -wi 15 -r 5 -w 1 -f 3 -prof perfnorm Benchmark (qCapacity) (qType) Mode Cnt Score Error Units # -XX:+UseParallelGC QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 818.694 ± 69.264 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.301 ± 0.480 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.077 ± 0.097 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 10.027 ± 0.315 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 3.510 ± 0.053 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻⁴ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 5.515 ± 0.159 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 9.205 ± 14.473 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 30.574 ± 0.806 #/op # -XX:+UseShenandoahGC QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 335.207 ± 50.287 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.394 ± 0.571 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.111 ± 0.456 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 26.441 ± 47.318 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 5.017 ± 15.871 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻³ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 9.710 ± 8.268 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 22.723 ± 65.403 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 57.505 ± 109.722 #/op # -XX:+UseShenandoahGC -XX:+UnlockDiagnosticVMOptions -XX:ShenandoahGCHeuristics=passive QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 767.920 ± 2.718 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.311 ± 0.010 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.117 ± 0.004 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 11.452 ± 0.062 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 3.006 ± 0.050 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻⁴ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 6.467 ± 0.148 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 9.760 ± 0.409 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 31.385 ± 0.803 #/op # -XX:+UseShenandoahGC -XX:+UnlockDiagnosticVMOptions -XX:ShenandoahGCHeuristics=passive -XX:+ShenandoahReadBarrier QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 552.156 ± 3.830 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.370 ± 0.012 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.111 ± 0.015 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 16.402 ± 0.596 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 3.007 ± 0.052 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻⁴ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 5.256 ± 0.257 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 13.566 ± 0.497 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 36.656 ± 1.917 #/op # -XX:+UseShenandoahGC -XX:+UnlockDiagnosticVMOptions -XX:ShenandoahGCHeuristics=passive -XX:+ShenandoahReadBarrier -XX:+ShenandoahWriteBarrier QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 362.585 ± 29.994 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.375 ± 0.414 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.116 ± 0.166 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 22.339 ± 11.054 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 3.003 ± 0.044 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻⁴ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 8.235 ± 4.471 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 20.776 ± 36.840 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 55.357 ± 35.898 #/op Preliminary conclusion: read barriers and write barriers impact a lot. ------ $ taskset -c 4-7 ~/trunks/shenandoah-jdk10/build/baseline/bin/java -jar target/microbenchmarks.jar \ throughput.QueueThroughputBackoffNone -p qType=SpscArrayQueue -p qCapacity=131072 \ -jvmArgs="-Xmx1g -Xms1g -XX:+UseShenandoahGC" -i 5 -wi 15 -r 5 -w 1 -f 1 -prof perfasm Preliminary conclusion: read and write barriers around Unsafe intrinsics are very active. C2 handling on Unsafe intrinsics uses CPUOrder membars a lot (http://hg.openjdk.java.net/shenandoah/jdk10/file/1819ee64325f/src/hotspot/share/opto/library_call.cpp#l2631), which may inhibit some barrier optimizations. The workload is also tied up in a very unlucky volatile-predicated loop that prevents barrier hoisting. Pending code generation improvements alleviate barrier costs even when they are not optimized. For example, emitting more efficient flag checks improves performance up to: Benchmark (qCapacity) (qType) Mode Cnt Score Error Units # -XX:+UseShenandoahGC QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 335.207 ± 50.287 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.394 ± 0.571 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.111 ± 0.456 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 26.441 ± 47.318 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 5.017 ± 15.871 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻³ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 9.710 ± 8.268 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 22.723 ± 65.403 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 57.505 ± 109.722 #/op # -XX:+UseShenandoahGC (mov (TLS+off), %r; test %r, %r -> cmpb 0, (TLS+off)) QueueThroughputBackoffNone.tpt 131072 SpscArrayQueue thrpt 15 456.392 ± 12.249 ops/us QueueThroughputBackoffNone.tpt:CPI 131072 SpscArrayQueue thrpt 3 0.372 ± 0.207 #/op QueueThroughputBackoffNone.tpt:L1-dcache-load-misses 131072 SpscArrayQueue thrpt 3 0.074 ± 0.113 #/op QueueThroughputBackoffNone.tpt:L1-dcache-loads 131072 SpscArrayQueue thrpt 3 23.197 ± 5.535 #/op QueueThroughputBackoffNone.tpt:L1-dcache-stores 131072 SpscArrayQueue thrpt 3 3.677 ± 5.256 #/op QueueThroughputBackoffNone.tpt:branch-misses 131072 SpscArrayQueue thrpt 3 ≈ 10⁻⁴ #/op QueueThroughputBackoffNone.tpt:branches 131072 SpscArrayQueue thrpt 3 8.852 ± 5.428 #/op QueueThroughputBackoffNone.tpt:cycles 131072 SpscArrayQueue thrpt 3 16.415 ± 9.246 #/op QueueThroughputBackoffNone.tpt:instructions 131072 SpscArrayQueue thrpt 3 44.090 ± 0.729 #/op UPD: The fix for more efficient checks is pushed as: http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-January/004584.html The other part is broken barrier coalescing when assorted barriers are present on the critical path: http://mail.openjdk.java.net/pipermail/shenandoah-dev/2018-January/004588.html Current generated code for the hot benchmark is: Reads with -0x8(reg) are read barriers. Branches with movzbl 0x3d8(%r15) are write barriers. Branches with movsbl 0x378(%r15) are SATB barriers. Hottest code regions (>10.00% "cycles" events): ....[Hottest Region 1].............................................................................. c2, level 4, org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub, version 489 (363 bytes) 0x00007fe0db684763: mov -0x8(%r10),%r9 ;*invokevirtual offer {reexecute=0 rethrow=0 return_oop=0} ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) ; implicit exception: dispatches to 0x00007fe0db684e02 0x00007fe0db684767: movzbl 0x94(%r9),%r10d ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0} ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@27 (line 301) 0x00007fe0db68476f: test %r10d,%r10d 0x00007fe0db684772: jne 0x00007fe0db684a8c ;*ifeq {reexecute=0 rethrow=0 return_oop=0} ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@30 (line 301) 0x00007fe0db684778: mov $0x1,%ebx ╭ 0x00007fe0db68477d: jmpq 0x00007fe0db68481d 0.04% 0.00% │ ↗ 0x00007fe0db684782: mov %r9,0x118(%rbp) ;*if_acmpeq {reexecute=0 rethrow=0 return_oop=0} │ │ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@52 (line 202) │ │ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) │ │ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ │ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 2.44% 1.94% │ │↗ 0x00007fe0db684789: mov %rbx,%r9 0.34% 0.43% │ ││ 0x00007fe0db68478c: vmovq %xmm0,%rbx 0.06% 0.00% │ ││ 0x00007fe0db684791: vmovq %xmm1,%r11 0.07% │ ││ 0x00007fe0db684796: data16 nopw 0x0(%rax,%rax,1) 1.48% 2.66% │ ↗││ 0x00007fe0db6847a0: movzbl 0x3d8(%r15),%r8d 0.31% 0.46% │ │││ 0x00007fe0db6847a8: test %r8d,%r8d │ │││ 0x00007fe0db6847ab: jne 0x00007fe0db68499b 0.04% 0.02% │ │││ 0x00007fe0db6847b1: mov -0x8(%r12,%r10,1),%rax 1.31% 1.84% │ │││ 0x00007fe0db6847b6: movsbl 0x378(%r15),%r10d 1.27% 1.91% │ │││ 0x00007fe0db6847be: test %r10d,%r10d │ │││ 0x00007fe0db6847c1: jne 0x00007fe0db6849f1 0.28% 0.41% │ │││ 0x00007fe0db6847c7: mov 0x18(%rsp),%r8d 0.06% 0.01% │ │││ 0x00007fe0db6847cc: mov -0x8(%r12,%r8,1),%r10 0.54% 0.78% │ │││ 0x00007fe0db6847d1: add $0x1,%r13 1.13% 1.54% │ │││ 0x00007fe0db6847d5: mov %r10d,0x10(%rax,%r14,4) 3.52% 3.03% │ │││ 0x00007fe0db6847da: mov %r13,0x110(%rbp) ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} │ │││ ; - sun.misc.Unsafe::putOrderedObject@7 (line 1042) │ │││ ; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) │ │││ ; - org.jctools.queues.SpscArrayQueue::offer@64 (line 187) │ │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.04% 0.11% │ │││ 0x00007fe0db6847e1: movzbl 0x3d8(%r15),%r10d 0.07% 0.15% │ │││ 0x00007fe0db6847e9: test %r10d,%r10d │ │││ 0x00007fe0db6847ec: jne 0x00007fe0db684949 0.87% 1.39% │ │││ 0x00007fe0db6847f2: mov 0x50(%rsp),%r10 1.04% 1.09% │ │││ 0x00007fe0db6847f7: mov -0x8(%r10),%rdi ; implicit exception: dispatches to 0x00007fe0db684daa 0.08% 0.10% │ │││ 0x00007fe0db6847fb: incl 0x10(%rdi) ;*invokevirtual offer {reexecute=0 rethrow=0 return_oop=0} │ │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 2.00% 2.65% │ │││↗ 0x00007fe0db6847fe: mov -0x8(%r9),%r8 0.05% 0.10% │ ││││ 0x00007fe0db684802: movzbl 0x94(%r8),%r10d ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0} │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@27 (line 301) 0.08% 0.14% │ ││││ 0x00007fe0db68480a: add $0x1,%rbx ; ImmutableOopMap{r11=Oop r8=Oop r9=Oop [80]=Oop [88]=Oop [0]=Oop } │ ││││ ;*ifeq {reexecute=1 rethrow=0 return_oop=0} │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@30 (line 301) 0.79% 1.19% │ ││││ 0x00007fe0db68480e: test %eax,0x185987ec(%rip) # 0x00007fe0f3c1d000 │ ││││ ; {poll} 1.00% 1.07% │ ││││ 0x00007fe0db684814: test %r10d,%r10d │ ││││ 0x00007fe0db684817: jne 0x00007fe0db684a91 ;*aload {reexecute=0 rethrow=0 return_oop=0} │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@13 (line 299) 0.06% 0.10% ↘ ││││ 0x00007fe0db68481d: mov 0x58(%rsp),%r10 0.09% 0.17% ││││ 0x00007fe0db684822: mov -0x8(%r10),%r11 ;*getfield q {reexecute=0 rethrow=0 return_oop=0} ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@1 (line 92) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.88% 1.17% ││││ 0x00007fe0db684826: mov 0xc(%r11),%r10d ;*getfield element {reexecute=0 rethrow=0 return_oop=0} ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@5 (line 92) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 1.00% 1.15% ││││ 0x00007fe0db68482a: mov %r10d,0x18(%rsp) 0.06% 0.10% ││││ 0x00007fe0db68482f: mov 0x14(%r11),%r10d ;*getfield q {reexecute=0 rethrow=0 return_oop=0} ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@1 (line 92) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.09% 0.08% ││││ 0x00007fe0db684833: mov 0x8(%r10),%r8d ; implicit exception: dispatches to 0x00007fe0db684d96 0.96% 1.25% ││││ 0x00007fe0db684837: cmp $0x2001e54c,%r8d ; {metadata('org/jctools/queues/SpscArrayQueue')} ││││ 0x00007fe0db68483e: jne 0x00007fe0db684ac0 ;*invokeinterface offer {reexecute=0 rethrow=0 return_oop=0} ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.91% 1.11% ││││ 0x00007fe0db684844: mov 0x18(%rsp),%ecx 0.12% 0.14% ││││ 0x00007fe0db684848: test %ecx,%ecx ││││ 0x00007fe0db68484a: je 0x00007fe0db684b3d ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} ││││ ; - sun.misc.Unsafe::putOrderedObject@7 (line 1042) ││││ ; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) ││││ ; - org.jctools.queues.SpscArrayQueue::offer@64 (line 187) ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.09% 0.13% ││││ 0x00007fe0db684850: movzbl 0x3d8(%r15),%ecx 0.82% 1.14% ││││ 0x00007fe0db684858: test %ecx,%ecx ╭││││ 0x00007fe0db68485a: jne 0x00007fe0db6848fc 1.01% 1.43% │││││ 0x00007fe0db684860: mov -0x8(%r10),%rdi ;*putfield producerLimit {reexecute=0 rethrow=0 return_oop=0} │││││ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@31 (line 197) │││││ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) │││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.05% 0.12% │││││↗ 0x00007fe0db684864: mov -0x8(%rdi),%rbp ;*getfield buffer {reexecute=0 rethrow=0 return_oop=0} ││││││ ; - org.jctools.queues.SpscArrayQueue::offer@14 (line 176) ││││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.27% 0.45% ││││││ 0x00007fe0db684868: mov 0x110(%rbp),%r13 ;*getfield producerIndex {reexecute=0 rethrow=0 return_oop=0} ││││││ ; - org.jctools.queues.SpscArrayQueue::offer@24 (line 178) ││││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 1.89% 2.77% ││││││ 0x00007fe0db68486f: mov 0x88(%rbp),%r8 ;*getfield mask {reexecute=0 rethrow=0 return_oop=0} ││││││ ; - org.jctools.queues.SpscArrayQueue::offer@19 (line 177) ││││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.80% 1.25% ││││││ 0x00007fe0db684876: mov 0x90(%rbp),%r10d ;*getfield buffer {reexecute=0 rethrow=0 return_oop=0} ││││││ ; - org.jctools.queues.SpscArrayQueue::offer@14 (line 176) ││││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.61% 0.95% ││││││ 0x00007fe0db68487d: mov %r8,%r14 0.06% 0.08% ││││││ 0x00007fe0db684880: and %r13,%r14 ;*land {reexecute=0 rethrow=0 return_oop=0} ││││││ ; - org.jctools.queues.CircularArrayOffsetCalculator::calcElementOffset@5 (line 24) ││││││ ; - org.jctools.queues.ConcurrentCircularArrayQueue::calcElementOffset@2 (line 55) ││││││ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@40 (line 201) ││││││ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) ││││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) ││││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.80% 0.86% ││││││ 0x00007fe0db684883: cmp 0x118(%rbp),%r13 │╰││││ 0x00007fe0db68488a: jl 0x00007fe0db6847a0 ;*iflt {reexecute=0 rethrow=0 return_oop=0} │ ││││ ; - org.jctools.queues.SpscArrayQueue::offer@36 (line 180) │ ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.54% 0.46% │ ││││ 0x00007fe0db684890: vmovq %r11,%xmm1 0.12% 0.16% │ ││││ 0x00007fe0db684895: vmovq %rbx,%xmm0 0.05% 0.12% │ ││││ 0x00007fe0db68489a: mov %r9,%rbx 0.66% 0.29% │ ││││ 0x00007fe0db68489d: mov -0x8(%r12,%r10,1),%r11 ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} │ ││││ ; - sun.misc.Unsafe::getObjectVolatile@5 (line 923) │ ││││ ; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) │ ││││ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@18 (line 195) │ ││││ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) │ ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 2.07% 1.43% │ ││││ 0x00007fe0db6848a2: movslq 0x94(%rbp),%r9 0.02% 0.07% │ ││││ 0x00007fe0db6848a9: add %r13,%r9 ;*ladd {reexecute=0 rethrow=0 return_oop=0} │ ││││ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@13 (line 195) │ ││││ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) │ ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.07% 0.11% │ ││││ 0x00007fe0db6848ac: mov %r9,%rcx 0.33% 0.05% │ ││││ 0x00007fe0db6848af: and %r8,%rcx 0.92% 0.74% │ ││││ 0x00007fe0db6848b2: cmp 0x10(%r11,%rcx,4),%r12d ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} │ ││││ ; - sun.misc.Unsafe::getObjectVolatile@5 (line 923) │ ││││ ; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) │ ││││ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@18 (line 195) │ ││││ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) │ ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) │ ╰│││ 0x00007fe0db6848b7: je 0x00007fe0db684782 15.56% 8.92% │ │││ 0x00007fe0db6848bd: mov -0x8(%r12,%r10,1),%r11 0.06% 0.00% │ │││ 0x00007fe0db6848c2: cmp 0x10(%r11,%r14,4),%r12d ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} │ │││ ; - sun.misc.Unsafe::getObjectVolatile@5 (line 923) │ │││ ; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) │ │││ ; - org.jctools.queues.SpscArrayQueue::offerSlowPath@49 (line 202) │ │││ ; - org.jctools.queues.SpscArrayQueue::offer@44 (line 181) │ │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) │ ╰││ 0x00007fe0db6848c7: je 0x00007fe0db684789 ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} │ ││ ; - sun.misc.Unsafe::putOrderedObject@7 (line 1042) │ ││ ; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) │ ││ ; - org.jctools.queues.SpscArrayQueue::offer@64 (line 187) │ ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@8 (line 92) │ ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) 0.01% 0.02% │ ││ 0x00007fe0db6848cd: movzbl 0x3d8(%r15),%r11d │ ││ 0x00007fe0db6848d5: test %r11d,%r11d │ ││ 0x00007fe0db6848d8: jne 0x00007fe0db684a4c │ ││ 0x00007fe0db6848de: mov 0x50(%rsp),%r10 │ ││ 0x00007fe0db6848e3: mov -0x8(%r10),%rdi ; implicit exception: dispatches to 0x00007fe0db684dba 0.01% 0.01% │ ││ 0x00007fe0db6848e7: incl 0xc(%rdi) ;*putfield offersFailed {reexecute=0 rethrow=0 return_oop=0} │ ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::offer@23 (line 93) │ ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::offer_thrpt_jmhStub@17 (line 299) │ ││ 0x00007fe0db6848ea: mov %rbx,%r9 0.01% 0.01% │ ││ 0x00007fe0db6848ed: vmovq %xmm0,%rbx │ ││ 0x00007fe0db6848f2: vmovq %xmm1,%r11 │ ╰│ 0x00007fe0db6848f7: jmpq 0x00007fe0db6847fe ↘ │ 0x00007fe0db6848fc: mov -0x8(%r10),%rdi │ 0x00007fe0db684900: mov %rdi,%r10 │ 0x00007fe0db684903: shr $0x13,%r10 │ 0x00007fe0db684907: movabs $0x7fe0ec042e50,%r8 │ 0x00007fe0db684911: movzbl (%r8,%r10,1),%r10d │ 0x00007fe0db684916: test %r10d,%r10d ╰ 0x00007fe0db684919: je 0x00007fe0db684864 0x00007fe0db68491f: mov %r11,%r13 .................................................................................................... 49.89% 49.88% ....[Hottest Region 2].............................................................................. c2, level 4, org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub, version 470 (315 bytes) 0x00007fe0db681e24: mov -0x8(%r14),%rcx ;*invokevirtual poll {reexecute=0 rethrow=0 return_oop=0} ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) ; implicit exception: dispatches to 0x00007fe0db68249e 0x00007fe0db681e28: movzbl 0x94(%rcx),%r11d ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0} ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@27 (line 314) 0x00007fe0db681e30: test %r11d,%r11d 0x00007fe0db681e33: jne 0x00007fe0db6820ce ;*ifeq {reexecute=0 rethrow=0 return_oop=0} ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@30 (line 314) 0x00007fe0db681e39: mov $0x1,%r13d ╭ 0x00007fe0db681e3f: jmp 0x00007fe0db681e80 1.65% 2.75% │ ↗ 0x00007fe0db681e41: mov 0x50(%rsp),%r10 0.01% 0.00% │ │ 0x00007fe0db681e46: mov -0x8(%r10),%rdi ; implicit exception: dispatches to 0x00007fe0db68244a 0.12% 0.21% │ │↗ 0x00007fe0db681e4a: incl 0x10(%rdi) ;*putfield pollsMade {reexecute=0 rethrow=0 return_oop=0} │ ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@48 (line 114) │ ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 1.96% 2.95% │ ││ 0x00007fe0db681e4d: mov 0x40(%rsp),%r10 0.11% 0.27% │ ││ 0x00007fe0db681e52: mov 0x48(%rsp),%rcx 0.24% 0.01% │ ││ 0x00007fe0db681e57: mov 0x8(%rsp),%r13 1.66% 2.57% │ ││ 0x00007fe0db681e5c: mov 0x58(%rsp),%r8 ;*invokevirtual poll {reexecute=0 rethrow=0 return_oop=0} │ ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.01% 0.01% │ ↗││ 0x00007fe0db681e61: mov -0x8(%rcx),%r11 0.12% 0.30% │ │││ 0x00007fe0db681e65: movzbl 0x94(%r11),%r9d ;*getfield isDone {reexecute=0 rethrow=0 return_oop=0} │ │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@27 (line 314) 0.21% 0.03% │ │││ 0x00007fe0db681e6d: add $0x1,%r13 ; ImmutableOopMap{r10=Oop r11=Oop r8=Oop rcx=Oop [80]=Oop [0]=Oop } │ │││ ;*ifeq {reexecute=1 rethrow=0 return_oop=0} │ │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@30 (line 314) 1.67% 2.60% │ │││ 0x00007fe0db681e71: test %eax,0x1859b189(%rip) # 0x00007fe0f3c1d000 │ │││ ; {poll} 0.01% 0.00% │ │││ 0x00007fe0db681e77: test %r9d,%r9d │ │││ 0x00007fe0db681e7a: jne 0x00007fe0db6820d4 ;*aload {reexecute=0 rethrow=0 return_oop=0} │ │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@13 (line 312) 0.12% 0.19% ↘ │││ 0x00007fe0db681e80: mov -0x8(%r10),%r8 0.21% 0.32% │││ 0x00007fe0db681e84: mov 0x14(%r8),%r11d ;*getfield q {reexecute=0 rethrow=0 return_oop=0} │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@1 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 1.79% 2.35% │││ 0x00007fe0db681e88: mov 0x8(%r11),%r9d ; implicit exception: dispatches to 0x00007fe0db68243a 0.04% 0.02% │││ 0x00007fe0db681e8c: cmp $0x2001e54c,%r9d ; {metadata('org/jctools/queues/SpscArrayQueue')} │││ 0x00007fe0db681e93: jne 0x00007fe0db682103 ;*invokeinterface poll {reexecute=0 rethrow=0 return_oop=0} │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.12% 0.31% │││ 0x00007fe0db681e99: mov -0x8(%r11),%rbx ;*getfield consumerIndex {reexecute=0 rethrow=0 return_oop=0} │││ ; - org.jctools.queues.SpscArrayQueue::poll@1 (line 218) │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.20% 0.53% │││ 0x00007fe0db681e9d: mov 0x90(%rbx),%r9d ;*getfield buffer {reexecute=0 rethrow=0 return_oop=0} │││ ; - org.jctools.queues.SpscArrayQueue::poll@12 (line 221) │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 1.79% 1.83% │││ 0x00007fe0db681ea4: mov 0x198(%rbx),%rbp ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} │││ ; - sun.misc.Unsafe::getObjectVolatile@5 (line 923) │││ ; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) │││ ; - org.jctools.queues.SpscArrayQueue::poll@20 (line 222) │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.02% 0.04% │││ 0x00007fe0db681eab: mov %rbp,%r14 0.10% 0.26% │││ 0x00007fe0db681eae: and 0x88(%rbx),%r14 ;*land {reexecute=0 rethrow=0 return_oop=0} │││ ; - org.jctools.queues.CircularArrayOffsetCalculator::calcElementOffset@5 (line 24) │││ ; - org.jctools.queues.ConcurrentCircularArrayQueue::calcElementOffset@2 (line 55) │││ ; - org.jctools.queues.ConcurrentCircularArrayQueue::calcElementOffset@5 (line 64) │││ ; - org.jctools.queues.SpscArrayQueue::poll@7 (line 219) │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.31% 0.48% │││ 0x00007fe0db681eb5: mov -0x8(%r12,%r9,1),%r11 1.99% 1.76% │││ 0x00007fe0db681eba: mov 0x10(%r11,%r14,4),%r11d 18.16% 7.25% │││ 0x00007fe0db681ebf: mov %r11d,0x10(%rsp) ;*invokevirtual getObjectVolatile {reexecute=0 rethrow=0 return_oop=0} │││ ; - sun.misc.Unsafe::getObjectVolatile@5 (line 923) │││ ; - org.jctools.util.UnsafeRefArrayAccess::lvElement@5 (line 103) │││ ; - org.jctools.queues.SpscArrayQueue::poll@20 (line 222) │││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) │││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 3.16% 3.84% │││ 0x00007fe0db681ec4: test %r11d,%r11d ╭│││ 0x00007fe0db681ec7: jne 0x00007fe0db681eeb ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} ││││ ; - sun.misc.Unsafe::putOrderedObject@7 (line 1042) ││││ ; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) ││││ ; - org.jctools.queues.SpscArrayQueue::poll@37 (line 227) ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) ││││ 0x00007fe0db681ec9: movzbl 0x3d8(%r15),%r11d 0.00% ││││ 0x00007fe0db681ed1: test %r11d,%r11d ││││ 0x00007fe0db681ed4: jne 0x00007fe0db68207c ││││ 0x00007fe0db681eda: mov 0x50(%rsp),%r11 0.01% 0.01% ││││ 0x00007fe0db681edf: mov -0x8(%r11),%rdi ; implicit exception: dispatches to 0x00007fe0db68245a ││││ 0x00007fe0db681ee3: incl 0xc(%rdi) ;*putfield pollsFailed {reexecute=0 rethrow=0 return_oop=0} ││││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@24 (line 111) ││││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.01% 0.01% │╰││ 0x00007fe0db681ee6: jmpq 0x00007fe0db681e61 0.14% 0.19% ↘ ││ 0x00007fe0db681eeb: mov %r8,0x58(%rsp) 0.32% 0.04% ││ 0x00007fe0db681ef0: mov %r13,0x8(%rsp) 0.00% ││ 0x00007fe0db681ef5: mov %rcx,0x48(%rsp) 1.56% 2.36% ││ 0x00007fe0db681efa: mov %r10,0x40(%rsp) 0.13% 0.26% ││ 0x00007fe0db681eff: movzbl 0x3d8(%r15),%r11d 0.30% 0.13% ││ 0x00007fe0db681f07: test %r11d,%r11d ││ 0x00007fe0db681f0a: jne 0x00007fe0db681fc5 0.00% ││ 0x00007fe0db681f10: mov -0x8(%r12,%r9,1),%r13 1.64% 2.65% ││ 0x00007fe0db681f15: movsbl 0x378(%r15),%r10d 0.11% 0.30% ││ 0x00007fe0db681f1d: test %r10d,%r10d ││ 0x00007fe0db681f20: jne 0x00007fe0db682004 0.32% 0.09% ││ 0x00007fe0db681f26: mov %r12d,0x10(%r13,%r14,4) ;*invokevirtual putObjectRelease {reexecute=0 rethrow=0 return_oop=0} ││ ; - sun.misc.Unsafe::putOrderedObject@7 (line 1042) ││ ; - org.jctools.util.UnsafeRefArrayAccess::soElement@6 (line 77) ││ ; - org.jctools.queues.SpscArrayQueue::poll@37 (line 227) ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.47% 0.98% ││ 0x00007fe0db681f2b: movzbl 0x3d8(%r15),%r10d 1.18% 1.32% ││ 0x00007fe0db681f33: test %r10d,%r10d ││ 0x00007fe0db681f36: jne 0x00007fe0db682041 0.12% 0.24% ││ 0x00007fe0db681f3c: mov -0x8(%rbx),%rdi ;*invokevirtual putLongRelease {reexecute=0 rethrow=0 return_oop=0} ││ ; - sun.misc.Unsafe::putOrderedLong@7 (line 1054) ││ ; - org.jctools.queues.SpscArrayQueueConsumerIndexField::soConsumerIndex@8 (line 124) ││ ; - org.jctools.queues.SpscArrayQueue::poll@44 (line 228) ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.33% 0.73% ││ 0x00007fe0db681f40: mov 0x10(%rsp),%r10d 0.41% 0.68% ││ 0x00007fe0db681f45: mov 0x8(%r10),%r11d ;*checkcast {reexecute=0 rethrow=0 return_oop=0} ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@9 (line 109) ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 4.78% 5.52% ││ 0x00007fe0db681f49: add $0x1,%rbp 0.11% 0.20% ││ 0x00007fe0db681f4d: mov %rbp,0x198(%rdi) ;*invokevirtual putLongRelease {reexecute=0 rethrow=0 return_oop=0} ││ ; - sun.misc.Unsafe::putOrderedLong@7 (line 1054) ││ ; - org.jctools.queues.SpscArrayQueueConsumerIndexField::soConsumerIndex@8 (line 124) ││ ; - org.jctools.queues.SpscArrayQueue::poll@44 (line 228) ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@4 (line 109) ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 0.18% 0.46% ││ 0x00007fe0db681f54: cmp $0x200024da,%r11d ; {metadata('java/lang/Integer')} ││ 0x00007fe0db681f5b: jne 0x00007fe0db682412 ;*checkcast {reexecute=0 rethrow=0 return_oop=0} ││ ; - org.jctools.jmh.throughput.QueueThroughputBackoffNone::poll@9 (line 109) ││ ; - org.jctools.jmh.throughput.generated.QueueThroughputBackoffNone_tpt_jmhTest::poll_thrpt_jmhStub@17 (line 312) 1.61% 2.14% ││ 0x00007fe0db681f61: movabs $0xc002eb40,%r11 ; {oop(a 'java/lang/Integer'{0x00000000c002eb40} = 1)} ││ 0x00007fe0db681f6b: cmp %r11,%r10 ││ 0x00007fe0db681f6e: jne 0x00007fe0db68212e 0.09% 0.25% ││ 0x00007fe0db681f74: movzbl 0x3d8(%r15),%r11d 0.21% 0.45% ││ 0x00007fe0db681f7c: test %r11d,%r11d ╰│ 0x00007fe0db681f7f: je 0x00007fe0db681e41 │ 0x00007fe0db681f85: mov 0x50(%rsp),%r10 │ 0x00007fe0db681f8a: mov -0x8(%r10),%rdi ; implicit exception: dispatches to 0x00007fe0db68244a │ 0x00007fe0db681f8e: mov %rdi,%r10 │ 0x00007fe0db681f91: shr $0x13,%r10 │ 0x00007fe0db681f95: movabs $0x7fe0ec042e50,%r11 │ 0x00007fe0db681f9f: movzbl (%r11,%r10,1),%r10d │ 0x00007fe0db681fa4: test %r10d,%r10d ╰ 0x00007fe0db681fa7: je 0x00007fe0db681e4a 0x00007fe0db681fad: vzeroupper .................................................................................................... 49.81% 49.92%