--- jsr166/src/jsr166e/LongAdder.java 2013/01/07 07:14:01 1.13 +++ jsr166/src/jsr166e/LongAdder.java 2014/05/04 22:38:19 1.15 @@ -55,12 +55,12 @@ public class LongAdder extends Striped64 * @param x the value to add */ public void add(long x) { - Cell[] as; long b, v; HashCode hc; Cell a; int n; + Cell[] as; long b, v; int[] hc; Cell a; int n; if ((as = cells) != null || !casBase(b = base, b + x)) { boolean uncontended = true; - int h = (hc = threadHashCode.get()).code; - if (as == null || (n = as.length) < 1 || - (a = as[(n - 1) & h]) == null || + if ((hc = threadHashCode.get()) == null || + as == null || (n = as.length) < 1 || + (a = as[(n - 1) & hc[0]]) == null || !(uncontended = a.cas(v = a.value, v + x))) retryUpdate(x, hc, uncontended); } @@ -82,7 +82,7 @@ public class LongAdder extends Striped64 /** * Returns the current sum. The returned value is NOT an - * atomic snapshot: invocation in the absence of concurrent + * atomic snapshot; invocation in the absence of concurrent * updates returns an accurate result, but concurrent updates that * occur while the sum is being calculated might not be * incorporated.