diff options
-rw-r--r-- | src/jvm/clojure/lang/TRef.java | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/TRef.java b/src/jvm/clojure/lang/TRef.java index b813eb5f..7adccaa1 100644 --- a/src/jvm/clojure/lang/TRef.java +++ b/src/jvm/clojure/lang/TRef.java @@ -19,6 +19,7 @@ public class TRef<T> extends AFn{ final AtomicReference<TVal> tvals; final AtomicReference<InheritableThreadLocal> dvals; + public TRef(){ this.tvals = new AtomicReference<TVal>(); this.dvals = new AtomicReference<InheritableThreadLocal>(); @@ -29,6 +30,19 @@ public TRef(T initVal){ tvals.set(new TVal(initVal, Transaction.ZERO_POINT, null)); } +public boolean equals(Object o){ + if(this == o) return true; + if(o == null || TRef.class != o.getClass()) return false; + + TRef other = (TRef) o; + + return dvals == other.dvals && tvals == other.tvals; +} + +public int hashCode(){ + return RT.hashCombine(dvals.hashCode(), tvals.hashCode()); +} + public T currentVal(){ Binding b = getThreadBinding(); if(b != null) |