< prev index next >

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

Print this page
8234131: Miscellaneous changes imported from jsr166 CVS 2021-01
Reviewed-by: martin

@@ -109,20 +109,21 @@
         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[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);
         }
     }
 
     /**
      * Returns the current value.  The returned value is <em>NOT</em>
< prev index next >