[groovy] make guard static (follow-up IDEA-CR-10151)

This commit is contained in:
Daniil Ovchinnikov
2016-04-19 19:32:04 +03:00
parent 6e38a62ac3
commit c11f117635
@@ -25,6 +25,8 @@ import java.util.concurrent.atomic.AtomicReference;
public class NotNullCachedComputableWrapper<T> implements NotNullComputable<T> {
private static final RecursionGuard ourGuard = RecursionManager.createGuard(NotNullCachedComputableWrapper.class.getName());
private volatile NotNullComputable<T> myComputable;
private final AtomicReference<T> myValueRef = new AtomicReference<>();
@@ -42,7 +44,7 @@ public class NotNullCachedComputableWrapper<T> implements NotNullComputable<T> {
final NotNullComputable<T> computable = myComputable;
if (computable == null) continue; // computable is null only after some thread succeeds CAS
RecursionGuard.StackStamp stamp = RecursionManager.createGuard(computable.getClass().getName()).markStack();
RecursionGuard.StackStamp stamp = ourGuard.markStack();
value = computable.compute();
if (stamp.mayCacheNow()) {
if (myValueRef.compareAndSet(null, value)) { // try to cache value