--- old/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java 2021-01-09 11:35:43.069038882 -0800 +++ new/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java 2021-01-09 11:35:42.621042406 -0800 @@ -111,16 +111,17 @@ || ((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[getProbe() & m]) == null + || (c = cs[index & m]) == null || !(uncontended = ((r = doubleToRawLongBits (function.applyAsDouble (longBitsToDouble(v = c.value), x))) == v) || c.cas(v, r))) - doubleAccumulate(x, function, uncontended); + doubleAccumulate(x, function, uncontended, index); } }