Mercurial > hg > truffle
changeset 19706:dc7189b2bb5f
CyclicAssumption: Use an AtomicReference to ensure invalidation.
author | Benoit Daloze <benoit.daloze@jku.at> |
---|---|
date | Mon, 09 Mar 2015 14:22:15 +0100 |
parents | 2f5d4df2af90 |
children | 957318c1cab8 7241e6dfcafd |
files | graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java |
diffstat | 1 files changed, 8 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java Mon Mar 09 00:41:43 2015 +0100 +++ b/graal/com.oracle.truffle.api/src/com/oracle/truffle/api/utilities/CyclicAssumption.java Mon Mar 09 14:22:15 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> 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(); } }