1 package org.openjdk.bench.vm.gc.barriers.cas;
 2 
 3 import org.openjdk.jmh.annotations.*;
 4 
 5 import java.util.concurrent.TimeUnit;
 6 import java.util.concurrent.atomic.AtomicReference;
 7 
 8 @Warmup(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
 9 @Measurement(iterations = 3, time = 1, timeUnit = TimeUnit.SECONDS)
10 @Fork(3)
11 @BenchmarkMode(Mode.AverageTime)
12 @OutputTimeUnit(TimeUnit.NANOSECONDS)
13 @State(Scope.Thread)
14 public class RefFailure {
15 
16     AtomicReference<Object> ref;
17 
18     Object o1 = new Object();
19     Object o2 = new Object();
20 
21     @Setup
22     public void setup() {
23         ref = new AtomicReference<>();
24         ref.set(o2);
25     }
26 
27     @Benchmark
28     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
29     public void test() {
30         ref.compareAndSet(o1, o2);
31     }
32 
33 }