# JMH 1.10.1 (released 15 days ago) # VM invoker: /home/hermes/jdk-vh/bin/java # VM options: -server # Warmup: 5 iterations, 1 s each # Measurement: 5 iterations, 1 s each # Timeout: 10 min per iteration # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: org.openjdk.varhandles.get.acc.ObjectTest.varHandle # Run progress: 0.00% complete, ETA 00:00:10 # Fork: 1 of 1 # Preparing profilers: LinuxPerfAsmProfiler # Profilers consume stdout and stderr from target VM, use -v EXTRA to copy to console # Warmup Iteration 1: 372.422 ns/op # Warmup Iteration 2: 21.157 ns/op # Warmup Iteration 3: 18.563 ns/op # Warmup Iteration 4: 18.277 ns/op # Warmup Iteration 5: 18.135 ns/op Iteration 1: 17.361 ns/op Iteration 2: 18.247 ns/op Iteration 3: 17.360 ns/op Iteration 4: 17.317 ns/op Iteration 5: 18.040 ns/op # Processing profiler results: LinuxPerfAsmProfiler Result "varHandle": 17.665 ±(99.9%) 1.706 ns/op [Average] (min, avg, max) = (17.317, 17.665, 18.247), stdev = 0.443 CI (99.9%): [15.959, 19.371] (assumes normal distribution) Secondary result "·asm": PrintAssembly processed: 133234 total address lines. Perf output processed (skipped 7.633 seconds): Column 1: cycles (32230 events) Column 2: instructions (31629 events) Hottest code regions (>10.00% "cycles" events): ....[Hottest Region 1].............................................................................. [0xaedc7a00:0xaedc7a6c] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 0xaedc7a00: xor %edi,%edi 0xaedc7a02: test %ebx,%ebx ╭ 0xaedc7a04: jne 0xaedc7a5a ;*ifeq │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@27 (line 165) │ 0xaedc7a06: mov $0x1,%ecx │ 0xaedc7a0b: xor %ebx,%ebx │ 0xaedc7a0d: mov %ecx,(%esp) │ 0xaedc7a10: mov %ebx,0x4(%esp) │╭ 0xaedc7a14: jmp 0xaedc7a27 ││ 0xaedc7a16: nopw 0x0(%eax,%eax,1) 0.67% 0.06% ││↗ 0xaedc7a20: mov %ebp,(%esp) 0.03% 0.03% │││ 0xaedc7a23: mov %edi,0x4(%esp) ;*aload_3 │││ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@13 (line 163) 0.83% 0.97% │↘│ 0xaedc7a27: mov 0x24(%esp),%ebx 0.86% 0.96% │ │ 0xaedc7a2b: mov 0x8(%ebx),%edx ;*invokevirtual getObject │ │ ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@17 (line 54) │ │ ; - java.lang.invoke.VarHandleGuards::guard_L_L@34 (line 25) │ │ ; - org.openjdk.varhandles.get.acc.ObjectTest::varHandle@5 (line 57) │ │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@14 (line 163) 2.37% 1.93% │ │ 0xaedc7a2e: mov 0x24(%esp),%ecx 0.83% 0.11% │ │ 0xaedc7a32: nop 0.02% 0.03% │ │ 0xaedc7a33: call 0xa733b9e0 ; ImmutableOopMap{[32]=Oop [36]=Oop [40]=Oop } │ │ ;*invokespecial sink │ │ ; - org.openjdk.varhandles.get.acc.ObjectTest::varHandle@8 (line 57) │ │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@14 (line 163) │ │ ; {optimized virtual_call} 0.78% 0.10% │ │ 0xaedc7a38: mov 0x28(%esp),%ecx 0.81% 0.93% │ │ 0xaedc7a3c: movzbl 0x90(%ecx),%ebx ;*getfield isDone │ │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@24 (line 165) 2.34% 3.78% │ │ 0xaedc7a43: mov (%esp),%ebp 0.86% 0.96% │ │ 0xaedc7a46: mov 0x4(%esp),%edi 0.84% 0.97% │ │ 0xaedc7a4a: add $0x1,%ebp 0.02% 0.01% │ │ 0xaedc7a4d: adc $0x0,%edi ; ImmutableOopMap{ecx=Oop [32]=Oop [36]=Oop [40]=Oop } │ │ ;*ifeq │ │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@27 (line 165) 1.75% 0.94% │ │ 0xaedc7a50: test %edi,0xb77a9000 ; {poll} 0.87% 0.06% │ │ 0xaedc7a56: test %ebx,%ebx 0.04% 0.01% │ ╰ 0xaedc7a58: je 0xaedc7a20 ;*aload_2 │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@30 (line 166) ↘ 0xaedc7a5a: call 0xb6d384d0 ;*invokestatic nanoTime ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@31 (line 166) ; {runtime_call} 0xaedc7a5f: mov 0x20(%esp),%ebx 0xaedc7a63: mov %ebp,0x10(%ebx) 0xaedc7a66: mov %edi,0x14(%ebx) ;*putfield measuredOps ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@46 (line 168) 0xaedc7a69: mov %eax,0x28(%ebx) 0xaedc7a6c: mov %edx,0x2c(%ebx) ;*putfield stopTime .................................................................................................... 13.92% 11.85% ....[Hottest Region 2].............................................................................. [0xaedc5910:0xaedc595e] in org.openjdk.varhandles.get.acc.ObjectTest::sink 0xaedc5910: nop 0xaedc5911: nop 0xaedc5912: nop 0xaedc5913: nop 0xaedc5914: nop 0xaedc5915: nop 0xaedc5916: nop 0xaedc5917: cmp 0x4(%ecx),%eax 0xaedc591a: jne 0xa733b760 ; {runtime_call ic_miss_stub} [Verified Entry Point] 1.04% 1.29% 0xaedc5920: mov %eax,-0x4000(%esp) 1.02% 1.39% 0xaedc5927: push %ebp 1.00% 1.89% 0xaedc5928: sub $0x18,%esp ;*return ; - org.openjdk.varhandles.get.acc.ObjectTest::sink@0 (line 73) 1.00% 0.34% 0xaedc592b: add $0x18,%esp 0.97% 1.31% 0xaedc592e: pop %ebp 3.86% 6.61% 0xaedc592f: test %eax,0xb77a9000 ; {poll_return} 1.13% 0.10% 0xaedc5935: ret 0xaedc5936: nop 0xaedc5937: nop 0xaedc5938: mov %esp,%esi 0xaedc593a: shr $0xc,%esi 0xaedc593d: mov -0x48e4d9a0(,%esi,4),%esi ; {external_word} 0xaedc5944: mov 0x198(%esi),%eax 0xaedc594a: movl $0x0,0x198(%esi) 0xaedc5954: movl $0x0,0x19c(%esi) 0xaedc595e: add $0x18,%esp .................................................................................................... 10.02% 12.94% ....[Hottest Regions]............................................................................... 13.92% 11.85% [0xaedc7a00:0xaedc7a6c] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 10.02% 12.94% [0xaedc5910:0xaedc595e] in org.openjdk.varhandles.get.acc.ObjectTest::sink 3.66% 3.49% [0xaedc6f25:0xaedc6fa2] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 2.14% 1.05% [0xc165ef4b:0xc165eff5] in [unknown] ([kernel.kallsyms]) 1.19% 1.56% [0xc1179300:0xc117946d] in [unknown] ([kernel.kallsyms]) 1.14% 1.29% [0xb6688e2b:0xb6688e2e] in __x86.get_pc_thunk.bx (libjvm.so) 1.10% 1.83% [0xb6d48fa0:0xb6d49037] in fileStream::write(char const*, unsigned int) (libjvm.so) 0.98% 0.70% [0xc1192590:0xc11925f4] in [unknown] ([kernel.kallsyms]) 0.94% 0.22% [0xb77ac414:0xb77ac427] in [unknown] ([vdso]) 0.93% 0.64% [0xc12a6e70:0xc12a6eed] in [unknown] ([kernel.kallsyms]) 0.90% 0.83% [0xb7621660:0xb7621722] in _IO_fwrite (libc-2.19.so) 0.87% 0.89% [0xa78f90c2:0xa78f9382] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 0.81% 0.61% [0xc10ab720:0xc10ab785] in [unknown] ([kernel.kallsyms]) 0.80% 0.69% [0xc1178ec0:0xc1178f33] in [unknown] ([kernel.kallsyms]) 0.74% 0.99% [0xc11802b0:0xc1180423] in [unknown] ([kernel.kallsyms]) 0.73% 0.77% [0xb7623950:0xb76239b2] in [unknown] (libc-2.19.so) 0.73% 0.59% [0xb6d4cd6e:0xb6d4cdfb] in defaultStream::write(char const*, unsigned int); defaultStream::hold(int) (libjvm.so) 0.72% 2.06% [0xb6dc8dd0:0xb6dc8e8b] in RelocIterator::set_limits(unsigned char*, unsigned char*) (libjvm.so) 0.71% 0.44% [0xb7639970:0xb7639991] in [unknown] (libc-2.19.so) 0.69% 0.40% [0xb6d4cb10:0xb6d4cb72] in defaultStream::hold(int) (libjvm.so) 56.27% 56.19% <...other 3914 warm regions...> .................................................................................................... 100.00% 100.00% ....[Hottest Methods (after inlining)].............................................................. 29.54% 28.83% [unknown] ([kernel.kallsyms]) 18.67% 16.52% org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 10.03% 12.95% org.openjdk.varhandles.get.acc.ObjectTest::sink 5.68% 6.11% [unknown] (libc-2.19.so) 2.83% 3.18% vfprintf (libc-2.19.so) 1.16% 0.69% print_insn (libhsdis-i386.so) 1.14% 1.29% __x86.get_pc_thunk.bx (libjvm.so) 1.11% 1.19% _IO_fwrite (libc-2.19.so) 1.10% 1.83% fileStream::write(char const*, unsigned int) (libjvm.so) 1.02% 0.47% jio_print (libjvm.so) 0.96% 0.59% defaultStream::hold(int) (libjvm.so) 0.94% 0.22% [unknown] ([vdso]) 0.85% 1.52% xmlStream::write_text(char const*, unsigned int) (libjvm.so) 0.73% 0.59% defaultStream::write(char const*, unsigned int); defaultStream::hold(int) (libjvm.so) 0.72% 2.09% RelocIterator::set_limits(unsigned char*, unsigned char*) (libjvm.so) 0.62% 0.97% _IO_default_xsputn (libc-2.19.so) 0.61% 0.54% xmlTextStream::write(char const*, unsigned int); xmlStream::write_text(char const*, unsigned int) (libjvm.so) 0.57% 1.64% outputStream::update_position(char const*, unsigned int) (libjvm.so) 0.53% 0.39% defaultStream::write(char const*, unsigned int) (libjvm.so) 0.53% 0.74% _IO_file_xsputn (libc-2.19.so) 20.66% 16.03% <...other 1314 warm methods...> .................................................................................................... 100.00% 98.39% ....[Distribution by Area].......................................................................... 31.42% 31.85% 29.54% 28.83% 20.30% 21.67% 13.10% 14.38% 3.13% 2.07% 1.37% 0.64% 0.94% 0.22% 0.07% 0.04% 0.07% 0.20% 0.02% 0.04% 0.02% 0.01% 0.01% 0.02% .................................................................................................... 100.00% 100.00% # Run complete. Total time: 00:00:47 Benchmark Mode Cnt Score Error Units ObjectTest.varHandle avgt 5 17.665 ± 1.706 ns/op ObjectTest.varHandle:·asm avgt NaN ---