< prev index next >

src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java

Print this page
8234131: Miscellaneous changes imported from jsr166 CVS 2020-12
Reviewed-by: martin

*** 109,128 **** Cell[] cs; long b, v, r; int m; Cell c; if ((cs = cells) != null || ((r = doubleToRawLongBits (function.applyAsDouble(longBitsToDouble(b = base), x))) != b && !casBase(b, r))) { boolean uncontended = true; if (cs == null || (m = cs.length - 1) < 0 ! || (c = cs[getProbe() & m]) == null || !(uncontended = ((r = doubleToRawLongBits (function.applyAsDouble (longBitsToDouble(v = c.value), x))) == v) || c.cas(v, r))) ! doubleAccumulate(x, function, uncontended); } } /** * Returns the current value. The returned value is <em>NOT</em> --- 109,129 ---- Cell[] cs; long b, v, r; int m; Cell c; if ((cs = cells) != null || ((r = doubleToRawLongBits (function.applyAsDouble(longBitsToDouble(b = base), x))) != b && !casBase(b, r))) { + int index = getProbe(); boolean uncontended = true; if (cs == null || (m = cs.length - 1) < 0 ! || (c = cs[index & m]) == null || !(uncontended = ((r = doubleToRawLongBits (function.applyAsDouble (longBitsToDouble(v = c.value), x))) == v) || c.cas(v, r))) ! doubleAccumulate(x, function, uncontended, index); } } /** * Returns the current value. The returned value is <em>NOT</em>
< prev index next >