# VM invoker: /export/shade/slb-2/jre/bin/java # VM options: -XX:+UnlockExperimentalVMOptions -XX:StoreLoadBarrier=2 # Warmup: 5 iterations, 1 s each # Measurement: 5 iterations, 1 s each # Threads: 1 thread, will synchronize iterations # Benchmark mode: Average time, time/op # Benchmark: org.openjdk.VolatileBarrierBench.testVolatile # Parameters: (backoff = 0) # Run progress: 0.00% complete, ETA 00:00:10 # Fork: 1 of 1 # Preparing profilers: perfasm # Profilers consume stdout from target VM, use -v EXTRA to copy to console # Profilers consume stderr from target VM, use -v EXTRA to copy to console # Warmup Iteration 1: 1207.205 ns/op # Warmup Iteration 2: 1194.069 ns/op # Warmup Iteration 3: 1196.465 ns/op # Warmup Iteration 4: 1200.444 ns/op # Warmup Iteration 5: 1199.245 ns/op Iteration 1: 1196.213 ns/op Iteration 2: 1205.530 ns/op Iteration 3: 1205.606 ns/op Iteration 4: 1196.894 ns/op Iteration 5: 1197.348 ns/op # Processing profiler results: perfasm Result: 1200.318 ±(99.9%) 18.520 ns/op [Average] Statistics: (min, avg, max) = (1196.213, 1200.318, 1205.606), stdev = 4.810 Confidence interval (99.9%): [1181.798, 1218.838] PrintAssembly processed: 100260 total lines Perf output processed (skipped 6.000 seconds): Column 1: cycles (6350 events) Column 2: instructions (6332 events) Hottest code regions (>10.00% "cycles" events): ....[Hottest Region 1].............................................................................. [0x7fdcb8719080:0x7fdcb87190c2] in org.openjdk.VolatileBarrierBench::testWith_Volatile # parm0: rdx:rdx = 'java/lang/Integer' # [sp+0x30] (sp of caller) 0x00007fdcb8719060: mov 0x8(%rsi),%r10d 0x00007fdcb8719064: shl $0x3,%r10 0x00007fdcb8719068: cmp %r10,%rax 0x00007fdcb871906b: jne 0x00007fdcb85d7de0 ; {runtime_call} 0x00007fdcb8719071: xchg %ax,%ax 0x00007fdcb8719074: nopl 0x0(%rax,%rax,1) 0x00007fdcb871907c: xchg %ax,%ax [Verified Entry Point] 0.05% 0x00007fdcb8719080: mov %eax,-0x14000(%rsp) 0x00007fdcb8719087: push %rbp 0.02% 0x00007fdcb8719088: sub $0x20,%rsp ;*synchronization entry ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@-1 (line 94) 0x00007fdcb871908c: mov %rsi,%rbp 0x00007fdcb871908f: mov %r12d,0x10(%rsi) ;*putfield c ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@2 (line 94) 0.06% 0x00007fdcb8719093: mov %rdx,(%rsp) 0x00007fdcb8719097: mov 0xc(%rdx),%r10d ; implicit exception: dispatches to 0x00007fdcb87190ee 0x00007fdcb871909b: mov %r10d,0xc(%rsi) 0x00007fdcb871909f: lock addl $0x0,-0x8(%rsp) ;*putfield sink ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@10 (line 99) 0.71% 1.86% 0x00007fdcb87190a5: xchg %ax,%ax 0x00007fdcb87190a7: callq 0x00007fdcb85d7fe0 ; OopMap{rbp=Oop [0]=Oop off=76} ;*invokespecial looping ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@14 (line 100) ; {optimized virtual_call} 0.02% 0x00007fdcb87190ac: test %eax,%eax 0x00007fdcb87190ae: je 0x00007fdcb87190d0 ;*putfield sink ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@10 (line 99) 2.65% 0x00007fdcb87190b0: mov (%rsp),%r10 0x00007fdcb87190b4: mov 0xc(%r10),%r10d ;*getfield value ; - java.lang.Integer::intValue@1 (line 890) ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@7 (line 99) 0.06% 0x00007fdcb87190b8: mov %r10d,0xc(%rbp) 2.66% 0x00007fdcb87190bc: lock addl $0x0,-0x8(%rsp) ;*putfield sink ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@10 (line 99) 80.08% 95.59% 0x00007fdcb87190c2: mov %rbp,%rsi 0x00007fdcb87190c5: xchg %ax,%ax 0x00007fdcb87190c7: callq 0x00007fdcb85d7fe0 ; OopMap{rbp=Oop [0]=Oop off=108} ;*invokespecial looping ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@14 (line 100) ; {optimized virtual_call} 0x00007fdcb87190cc: test %eax,%eax 0x00007fdcb87190ce: jne 0x00007fdcb87190b0 ;*return ; - org.openjdk.VolatileBarrierBench::testWith_Volatile@20 (line 101) 0x00007fdcb87190d0: add $0x20,%rsp .................................................................................................... 86.30% 97.46% ....[Hottest Region 2].............................................................................. [0x7fdcb871b200:0x7fdcb871b22d] in org.openjdk.VolatileBarrierBench::looping # {method} {0x00007fdcb71d23e0} 'looping' '()Z' in 'org/openjdk/VolatileBarrierBench' # [sp+0x20] (sp of caller) 0x00007fdcb871b1e0: mov 0x8(%rsi),%r10d 0x00007fdcb871b1e4: shl $0x3,%r10 0x00007fdcb871b1e8: cmp %r10,%rax 0x00007fdcb871b1eb: jne 0x00007fdcb85d7de0 ; {runtime_call} 0x00007fdcb871b1f1: xchg %ax,%ax 0x00007fdcb871b1f4: nopl 0x0(%rax,%rax,1) 0x00007fdcb871b1fc: xchg %ax,%ax [Verified Entry Point] 2.60% 0x00007fdcb871b200: sub $0x18,%rsp 0x00007fdcb871b207: mov %rbp,0x10(%rsp) ;*synchronization entry ; - org.openjdk.VolatileBarrierBench::looping@-1 (line 105) 2.85% 0.02% 0x00007fdcb871b20c: mov 0x10(%rsi),%r10d ;*getfield c ; - org.openjdk.VolatileBarrierBench::looping@2 (line 105) 0.03% 0x00007fdcb871b210: cmp $0x64,%r10d 0x00007fdcb871b214: jge 0x00007fdcb871b22e ;*if_icmpge ; - org.openjdk.VolatileBarrierBench::looping@13 (line 105) 0x00007fdcb871b216: mov $0x1,%eax ;*ireturn ; - org.openjdk.VolatileBarrierBench::looping@21 (line 105) 0.02% 0x00007fdcb871b21b: inc %r10d 2.82% 0x00007fdcb871b21e: mov %r10d,0x10(%rsi) ;*putfield c ; - org.openjdk.VolatileBarrierBench::looping@8 (line 105) 0.05% 0x00007fdcb871b222: add $0x10,%rsp 0x00007fdcb871b226: pop %rbp 0.03% 0x00007fdcb871b227: test %eax,0x14b07dd3(%rip) # 0x00007fdccd223000 ; {poll_return} 2.69% 0x00007fdcb871b22d: retq 0x00007fdcb871b22e: xor %eax,%eax 0x00007fdcb871b230: jmp 0x00007fdcb871b21b 0x00007fdcb871b232: hlt 0x00007fdcb871b233: hlt 0x00007fdcb871b234: hlt 0x00007fdcb871b235: hlt 0x00007fdcb871b236: hlt 0x00007fdcb871b237: hlt 0x00007fdcb871b238: hlt .................................................................................................... 11.09% 0.02% ....[Hottest Regions]............................................................................... 86.30% 97.46% [0x7fdcb8719080:0x7fdcb87190c2] in org.openjdk.VolatileBarrierBench::testWith_Volatile 11.09% 0.02% [0x7fdcb871b200:0x7fdcb871b22d] in org.openjdk.VolatileBarrierBench::looping 1.20% 1.37% [0x0:0x0] in 0.05% [0x7fdcb8728599:0x7fdcb87285b9] in org.openjdk.generated.VolatileBarrierBench_testVolatile::testVolatile_avgt_jmhLoop 0.05% 0.09% [0x7fdccc9db587:0x7fdccc9db5d4] in RelocIterator::set_limits(unsigned char*, unsigned char*) (libjvm.so) 0.03% [0x37a3a44406:0x37a3a44406] in vfprintf (libc-2.12.so) 0.03% [0x37a3a749a0:0x37a3a749a9] in _IO_default_xsputn (libc-2.12.so) 0.03% [0x37a3a759e5:0x37a3a759f2] in _IO_str_init_static_internal (libc-2.12.so) 0.03% 0.02% [0x7fdcb85a2bc0:0x7fdcb85a2bc4] in (perf-21479.map) 0.03% [0x7fdccc55b560:0x7fdccc55b561] in ,CodeBlob::is_zombie() const (,libjvm.so) 0.02% [0x37a3a41e5b:0x37a3a41e5b] in __mpn_divrem (libc-2.12.so) 0.02% 0.02% [0x37a3a44303:0x37a3a44303] in vfprintf (libc-2.12.so) 0.02% [0x37a3a44545:0x37a3a44545] in vfprintf (libc-2.12.so) 0.02% [0x37a3a44578:0x37a3a44578] in vfprintf (libc-2.12.so) 0.02% [0x37a3a46953:0x37a3a46953] in vfprintf (libc-2.12.so) 0.02% [0x37a3a4812c:0x37a3a4812c] in vfprintf (libc-2.12.so) 0.02% [0x37a3a66c7e:0x37a3a66c7e] in _IO_fflush (libc-2.12.so) 0.02% [0x37a3a719e0:0x37a3a719e0] in _IO_file_xsputn@@GLIBC_2.2.5 (libc-2.12.so) 0.02% [0x37a3a71b37:0x37a3a71b37] in _IO_file_xsputn@@GLIBC_2.2.5 (libc-2.12.so) 0.02% [0x37a3a71b7f:0x37a3a71b7f] in _IO_file_xsputn@@GLIBC_2.2.5 (libc-2.12.so) 0.99% 1.03% <...other 109 warm regions...> .................................................................................................... 99.98% 100.00% ....[Hottest Methods (after inlining)].............................................................. 86.30% 97.46% org.openjdk.VolatileBarrierBench::testWith_Volatile 11.09% 0.02% org.openjdk.VolatileBarrierBench::looping 1.20% 1.37% 0.14% 0.06% (perf-21479.map) 0.11% 0.06% vfprintf (libc-2.12.so) 0.06% print_insn (libhsdis-amd64.so) 0.05% org.openjdk.generated.VolatileBarrierBench_testVolatile::testVolatile_avgt_jmhLoop 0.05% 0.02% _IO_default_xsputn (libc-2.12.so) 0.05% 0.09% RelocIterator::set_limits(unsigned char*, unsigned char*) (libjvm.so) 0.05% 0.03% () 0.05% 0.02% _IO_file_xsputn@@GLIBC_2.2.5 (libc-2.12.so) 0.03% 0.05% xmlStream::write_text(char const*, unsigned long) (libjvm.so) 0.03% nmethod::scope_desc_in(unsigned char*, unsigned char*) (libjvm.so) 0.03% ,CodeBlob::is_zombie() const (,libjvm.so) 0.03% _IO_str_init_static_internal (libc-2.12.so) 0.02% print_displacement (libhsdis-amd64.so) 0.02% AdvancedThresholdPolicy::call_event(Method*, CompLevel) (libjvm.so) 0.02% SymbolTable::lookup_only(char const*, int, unsigned int&) (libjvm.so) 0.02% __mpn_divrem (libc-2.12.so) 0.02% clock_gettime (librt-2.12.so) 0.65% 0.19% <...other 41 warm methods...> .................................................................................................... 99.98% 99.37% ....[Distribution by Area].......................................................................... 97.43% 97.49% 1.20% 1.37% 0.58% 0.68% 0.33% 0.21% 0.14% 0.06% 0.11% 0.02% 0.05% 0.02% 0.05% 0.03% 0.05% 0.02% 0.02% 0.02% 0.02% 0.02% .................................................................................................... 99.98% 100.00% # Run complete. Total time: 00:01:22 Benchmark (backoff) Mode Samples Score Score error Units o.o.VolatileBarrierBench.testVolatile 0 avgt 5 1200.318 18.520 ns/op o.o.VolatileBarrierBench.testVolatile:@asm 0 avgt 1 NaN NaN N/A