# JMH 1.10.1 (released 15 days ago) # VM invoker: /home/hermes/jdk-vh/bin/java # VM options: -client # 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: 184.637 ns/op # Warmup Iteration 2: 111.258 ns/op # Warmup Iteration 3: 106.402 ns/op # Warmup Iteration 4: 106.549 ns/op # Warmup Iteration 5: 106.210 ns/op Iteration 1: 106.169 ns/op Iteration 2: 107.799 ns/op Iteration 3: 106.512 ns/op Iteration 4: 106.024 ns/op Iteration 5: 106.385 ns/op # Processing profiler results: LinuxPerfAsmProfiler Result "varHandle": 106.578 ±(99.9%) 2.728 ns/op [Average] (min, avg, max) = (106.024, 106.578, 107.799), stdev = 0.708 CI (99.9%): [103.850, 109.306] (assumes normal distribution) Secondary result "·asm": PrintAssembly processed: 51130 total address lines. Perf output processed (skipped 5.607 seconds): Column 1: cycles (15332 events) Column 2: instructions (15125 events) Hottest code regions (>10.00% "cycles" events): ....[Hottest Region 1].............................................................................. [0xb4864fd4:0xb48650a0] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@7 (line 161) ; {runtime_call} 0xb4864fd4: mov 0x80(%esp),%esi 0xb4864fdb: mov %eax,0x20(%esi) ; implicit exception: dispatches to 0xb486514f 0xb4864fde: mov %edx,0x24(%esi) ;*putfield startTime ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@10 (line 161) 0xb4864fe1: mov $0x0,%edi 0xb4864fe6: mov $0x0,%ebx ╭ 0xb4864feb: jmp 0xb4865060 ;*aload_3 │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@13 (line 163) 0.36% 0.81% │ ↗ 0xb4864ff0: mov $0xa4d9ce00,%ecx ; {oop(a 'java/lang/invoke/MemberName'[10] )} │ │ 0xb4864ff5: cmpl $0x0,0x8(%ecx) ; implicit exception: dispatches to 0xb4865154 2.68% 2.39% │ │ 0xb4864ffc: jbe 0xb486515e 0.37% 0.63% │ │ 0xb4865002: mov 0xc(%ecx),%esi ;*aaload │ │ ; - java.lang.invoke.VarHandleGuards::guard_L_L@30 (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) 0.01% │ │ 0xb4865005: cmp $0x0,%esi 0.30% 0.61% │ │ 0xb4865008: je 0xb48650d9 ;*ifnonnull │ │ ; - java.lang.invoke.VarHandleGuards::checkMemberName@1 (line 16) │ │ ; - java.lang.invoke.VarHandleGuards::guard_L_L@31 (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) 0.34% │ │ 0xb486500e: mov 0x84(%esp),%edi │ │ 0xb4865015: mov $0xa4d6eaa8,%ebx ; {oop(a 'java/lang/invoke/VarHandleRefs$FieldInstanceReadWrite')} 0.25% │ │ 0xb486501a: mov %ebx,%ecx 0.34% 0.19% │ │ 0xb486501c: mov %edi,%edx 0.01% │ │ 0xb486501e: mov %esi,(%esp) ;*invokestatic linkToStatic │ │ ; - 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) 0.38% 0.33% │ │ 0xb4865021: nop │ │ 0xb4865022: nop 0.31% 0.16% │ │ 0xb4865023: call 0xb47acb50 ; ImmutableOopMap{[88]=Oop [128]=Oop [132]=Oop } │ │ ;*invokestatic linkToStatic │ │ ; - 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) │ │ ; {static_call} 0.27% 0.01% │ │ 0xb4865028: mov %eax,%edx 0.29% │ │ 0xb486502a: mov 0x84(%esp),%ecx ;*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) 0.01% │ │ 0xb4865031: nop 0.37% 0.44% │ │ 0xb4865032: nop 0.01% │ │ 0xb4865033: call 0xb47ac6d0 ; ImmutableOopMap{[88]=Oop [128]=Oop [132]=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.37% 0.36% │ │ 0xb4865038: mov 0x60(%esp),%edi 0.33% 0.87% │ │ 0xb486503c: mov 0x64(%esp),%ebx 0.33% 0.79% │ │ 0xb4865040: add $0x1,%edi │ │ 0xb4865043: adc $0x0,%ebx 0.61% 0.80% │ │ 0xb4865046: mov 0x58(%esp),%edx │ │ 0xb486504a: movsbl 0x90(%edx),%eax ; ImmutableOopMap{[128]=Oop [132]=Oop edx=Oop [88]=Oop } │ │ ;*ifeq │ │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@27 (line 165) │ │ ; implicit exception: dispatches to 0xb486516a 1.34% 1.87% │ │ 0xb4865051: test %eax,0xb7716000 ; {poll} 0.32% 0.17% │ │ 0xb4865057: cmp $0x0,%eax 0.01% │╭│ 0xb486505a: jne 0xb4865098 ;*ifeq │││ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@27 (line 165) 0.28% ↘││ 0xb4865060: mov %edi,0x60(%esp) 0.01% ││ 0xb4865064: mov %ebx,0x64(%esp) 0.30% 0.22% ││ 0xb4865068: mov 0x84(%esp),%esi 0.40% 0.39% ││ 0xb486506f: cmp (%esi),%eax ;*invokevirtual varHandle ││ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@14 (line 163) ││ ; implicit exception: dispatches to 0xb486516f 1.18% 1.32% ││ 0xb4865071: mov $0xa4d9d2e0,%ecx ; {oop(a 'java/lang/invoke/MethodType'[4] )} ││ 0xb4865076: cmpl $0x0,0x8(%ecx) ; implicit exception: dispatches to 0xb4865174 1.27% 1.77% ││ 0xb486507d: jbe 0xb486517e 0.29% ││ 0xb4865083: mov 0xc(%ecx),%ecx ;*aaload ││ ; - java.lang.invoke.VarHandleGuards::guard_L_L@8 (line 24) ││ ; - org.openjdk.varhandles.get.acc.ObjectTest::varHandle@5 (line 57) ││ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@14 (line 163) ││ 0xb4865086: mov $0xa4d6ab98,%esi ; {oop(a 'java/lang/invoke/MethodType' = (Lorg/openjdk/varhandles/get/acc/ObjectTest;)Ljava/lang/Object;)} 0.34% 0.42% ││ 0xb486508b: cmp %esi,%ecx 0.26% 0.77% │╰ 0xb486508d: je 0xb4864ff0 │ 0xb4865093: jmp 0xb4865139 ;*if_acmpeq │ ; - java.lang.invoke.VarHandleGuards::checkExactType@2 (line 8) │ ; - java.lang.invoke.VarHandleGuards::guard_L_L@13 (line 24) │ ; - org.openjdk.varhandles.get.acc.ObjectTest::varHandle@5 (line 57) │ ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@14 (line 163) ↘ 0xb4865098: mov %edi,0x68(%esp) 0xb486509c: mov %ebx,0x6c(%esp) 0xb48650a0: call 0xb6e325c0 ;*invokestatic nanoTime ; - org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub@31 (line 166) ; {runtime_call} .................................................................................................... 13.91% 15.36% ....[Hottest Region 2].............................................................................. [0xb4862570:0xb48625e8] in java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get ImmutableOopMap{ebx=Oop [60]=Oop }pc offsets: 215 Decoding compiled method 0xb4862448: Code: [Entry Point] [Verified Entry Point] [Constants] # {method} {0xa3acc868} 'get' '(Ljava/lang/invoke/VarHandleRefs$FieldInstanceReadOnly;Ljava/lang/Object;)Ljava/lang/Object;' in 'java/lang/invoke/VarHandleRefs$FieldInstanceReadOnly' # parm0: ecx = 'java/lang/invoke/VarHandleRefs$FieldInstanceReadOnly' # parm1: edx = 'java/lang/Object' # [sp+0x50] (sp of caller) 1.94% 4.07% 0xb4862570: mov %eax,-0x4000(%esp) 0.37% 0.49% 0xb4862577: push %ebp 0.42% 0.22% 0xb4862578: sub $0x48,%esp ;*aload_1 ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@0 (line 51) 0.27% 0.83% 0xb486257b: mov 0x4(%edx),%esi ; implicit exception: dispatches to 0xb4862631 0.02% 0xb486257e: mov 0x38(%esi),%esi ;*invokevirtual getClass ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@1 (line 51) 2.58% 1.81% 0xb4862581: mov 0x18(%ecx),%esi ;*getfield fieldType ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@6 (line 52) ; implicit exception: dispatches to 0xb4862636 0.50% 0.42% 0xb4862584: mov %esi,0x3c(%esp) 0.39% 0.31% 0xb4862588: mov 0x10(%ecx),%edi 0.28% 0.53% 0xb486258b: mov 0x14(%ecx),%ebx ;*getfield fieldOffset ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@14 (line 52) 0.37% 0.54% 0xb486258e: mov (%edx,%edi,1),%edi 0.76% 0.28% 0xb4862591: cmp (%esi),%eax ;*invokevirtual cast ; - java.lang.invoke.VarHandle::castReference@2 (line 196) ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@20 (line 52) ; implicit exception: dispatches to 0xb486263b 1.58% 0.77% 0xb4862593: cmp $0x0,%edi ╭ 0xb4862596: jne 0xb48625a5 ;*ifnull │ ; - java.lang.Class::cast@1 (line 3386) │ ; - java.lang.invoke.VarHandle::castReference@2 (line 196) │ ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@20 (line 52) │ 0xb486259c: mov %edi,0x38(%esp) │╭ 0xb48625a0: jmp 0xb48625be ;*aload_1 ││ ; - java.lang.Class::cast@25 (line 3388) ││ ; - java.lang.invoke.VarHandle::castReference@2 (line 196) ││ ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@20 (line 52) 0.36% 0.58% ↘│ 0xb48625a5: mov %esi,(%esp) 0.01% │ 0xb48625a8: mov %edi,0x4(%esp) 0.32% 0.40% │ 0xb48625ac: mov %edi,0x38(%esp) 0.32% 0.75% │ 0xb48625b0: call 0xb6afa4f0 ;*invokevirtual isInstance │ ; - java.lang.Class::cast@6 (line 3386) │ ; - java.lang.invoke.VarHandle::castReference@2 (line 196) │ ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@20 (line 52) │ ; {runtime_call} 0.27% 0.19% │ 0xb48625b5: cmp $0x0,%eax 0.45% 0.10% │╭ 0xb48625b8: je 0xb48625cd ;*ifne ││ ; - java.lang.Class::cast@9 (line 3386) ││ ; - java.lang.invoke.VarHandle::castReference@2 (line 196) ││ ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@20 (line 52) 0.42% 0.29% ↘│ 0xb48625be: mov 0x38(%esp),%eax 0.01% 0.01% │ 0xb48625c2: add $0x48,%esp 0.33% 0.58% │ 0xb48625c5: pop %ebp 1.45% 1.81% │ 0xb48625c6: test %eax,0xb7716000 ; {poll_return} 0.42% 0.50% │ 0xb48625cc: ret ;*areturn │ ; - java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get@23 (line 52) ↘ 0xb48625cd: mov 0x38(%esp),%ebx 0xb48625d1: mov $0xa45d1500,%edx ; {metadata('java/lang/ClassCastException')} 0xb48625d6: mov %esp,%ecx 0xb48625d8: shr $0xc,%ecx 0xb48625db: mov -0x48ee0ee0(,%ecx,4),%ecx ; {external_word} 0xb48625e2: mov 0x34(%ecx),%eax 0xb48625e5: lea 0x20(%eax),%edi 0xb48625e8: cmp 0x3c(%ecx),%edi .................................................................................................... 13.81% 15.50% ....[Hottest Region 3].............................................................................. [0xb6afa4f0:0xb6afa554] in Runtime1::is_instance_of(oopDesc*, oopDesc*) (libjvm.so) .................................................................................................... 11.60% 9.48% ....[Hottest Regions]............................................................................... 13.91% 15.36% [0xb4864fd4:0xb48650a0] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 13.81% 15.50% [0xb4862570:0xb48625e8] in java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get 11.60% 9.48% [0xb6afa4f0:0xb6afa554] in Runtime1::is_instance_of(oopDesc*, oopDesc*) (libjvm.so) 5.26% 4.33% [0xb6cb7420:0xb6cb743b] in java_lang_Class::as_Klass(oopDesc*) (libjvm.so) 4.98% 7.35% [0xb6a23c0b:0xb6a23c0e] in __x86.get_pc_thunk.bx (libjvm.so) 3.91% 5.24% [0xb4862e00:0xb4862e4e] in org.openjdk.varhandles.get.acc.ObjectTest::sink 3.59% 1.16% [0xb6a392eb:0xb6a392ee] in __x86.get_pc_thunk.cx (libjvm.so) 2.85% 2.35% [0xb4835ba0:0xb4835bb7] in java.lang.invoke.MethodHandle::linkToStatic 2.64% 2.62% [0xb48630bd:0xb48631b3] in org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 1.17% 0.59% [0xc165ef4b:0xc165eff5] in [unknown] ([kernel.kallsyms]) 0.53% 0.99% [0xb6e43090:0xb6e43126] in fileStream::write(char const*, unsigned int) (libjvm.so) 0.52% 0.87% [0xc1179300:0xc1179440] in [unknown] ([kernel.kallsyms]) 0.48% 0.09% [0xb7719414:0xb7719425] in [unknown] ([vdso]) 0.46% 0.34% [0xc1178ec0:0xc1178f33] in [unknown] ([kernel.kallsyms]) 0.46% 0.29% [0xc10ab720:0xc10ab784] in [unknown] ([kernel.kallsyms]) 0.42% 0.32% [0xb758e660:0xb758e722] in _IO_fwrite (libc-2.19.so) 0.41% 0.28% [0xc1192590:0xc11925f4] in [unknown] ([kernel.kallsyms]) 0.37% 0.46% [0xb765094b:0xb765094e] in [unknown] (libc-2.19.so) 0.37% 0.36% [0xc12a6e70:0xc12a6eed] in [unknown] ([kernel.kallsyms]) 0.36% 0.29% [0xc12fc4d0:0xc12fc520] in [unknown] ([kernel.kallsyms]) 31.91% 31.74% <...other 2120 warm regions...> .................................................................................................... 99.99% 100.00% ....[Hottest Methods (after inlining)].............................................................. 16.54% 17.98% org.openjdk.varhandles.get.acc.generated.ObjectTest_varHandle::varHandle_avgt_jmhStub 14.41% 14.72% [unknown] ([kernel.kallsyms]) 13.81% 15.50% java.lang.invoke.VarHandleRefs$FieldInstanceReadOnly::get 11.60% 9.48% Runtime1::is_instance_of(oopDesc*, oopDesc*) (libjvm.so) 5.26% 4.33% java_lang_Class::as_Klass(oopDesc*) (libjvm.so) 4.98% 7.35% __x86.get_pc_thunk.bx (libjvm.so) 3.91% 5.24% org.openjdk.varhandles.get.acc.ObjectTest::sink 3.59% 1.16% __x86.get_pc_thunk.cx (libjvm.so) 2.85% 2.35% java.lang.invoke.MethodHandle::linkToStatic 2.56% 2.41% [unknown] (libc-2.19.so) 1.25% 1.02% vfprintf (libc-2.19.so) 0.87% 0.63% 0.56% 0.51% _IO_fwrite (libc-2.19.so) 0.53% 0.99% fileStream::write(char const*, unsigned int) (libjvm.so) 0.49% 0.29% defaultStream::hold(int) (libjvm.so) 0.48% 0.09% [unknown] ([vdso]) 0.46% 0.32% print_insn (libhsdis-i386.so) 0.38% 0.26% jio_print (libjvm.so) 0.37% 0.61% xmlStream::write_text(char const*, unsigned int) (libjvm.so) 0.35% 0.38% _IO_file_xsputn (libc-2.19.so) 14.77% 12.17% <...other 637 warm methods...> .................................................................................................... 99.99% 97.78% ....[Distribution by Area].......................................................................... 41.61% 44.97% 35.38% 32.79% 14.41% 14.72% 5.84% 5.69% 1.21% 0.85% 0.74% 0.42% 0.48% 0.09% 0.15% 0.32% 0.07% 0.05% 0.05% 0.07% 0.03% 0.01% 0.01% 0.03% 0.01% 0.01% .................................................................................................... 99.99% 100.00% # Run complete. Total time: 00:00:25 Benchmark Mode Cnt Score Error Units ObjectTest.varHandle avgt 5 106.578 ± 2.728 ns/op ObjectTest.varHandle:·asm avgt NaN ---