# HG changeset patch # User Thomas Wuerthinger # Date 1425909848 -3600 # Node ID 7241e6dfcafd3c389c3d3b39b80f5605acee0fb0 # Parent d30a0545ddc21fb63695a08f5d53491f9942395a# Parent dc7189b2bb5fe9569cce923beb261334435ae267 Merge. diff -r d30a0545ddc2 -r 7241e6dfcafd graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java --- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java Mon Mar 09 14:18:08 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java Mon Mar 09 15:04:08 2015 +0100 @@ -24,6 +24,8 @@ */ package com.oracle.truffle.api.utilities; +import java.util.concurrent.atomic.*; + import com.oracle.truffle.api.*; /** @@ -36,23 +38,21 @@ public class CyclicAssumption { private final String name; - private Assumption assumption; + private final AtomicReference assumption; public CyclicAssumption(String name) { this.name = name; - invalidate(); + this.assumption = new AtomicReference<>(Truffle.getRuntime().createAssumption(name)); } public void invalidate() { - if (assumption != null) { - assumption.invalidate(); - } - - assumption = Truffle.getRuntime().createAssumption(name); + Assumption newAssumption = Truffle.getRuntime().createAssumption(name); + Assumption oldAssumption = assumption.getAndSet(newAssumption); + oldAssumption.invalidate(); } public Assumption getAssumption() { - return assumption; + return assumption.get(); } }