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 KnownExpectNull {
15 
16     AtomicReference<Object> ref;
17 
18     Object o1 = new Object();
19     Object o2 = o1;
20 
21     @Setup
22     public void setup() {
23         ref = new AtomicReference<>();
24         ref.set(o1);
25     }
26 
27     @Benchmark
28     @CompilerControl(CompilerControl.Mode.DONT_INLINE)
29     public void test() {
30         ref.compareAndSet(null, o1);
31         ref.set(null);
32     }
33 
34 }