src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java
changeset 48232 bf476235671a
parent 47216 71c04702a3d5
child 52729 0775f246731b
--- a/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java	Fri Dec 08 15:22:58 2017 -0800
+++ b/src/java.base/share/classes/java/util/concurrent/atomic/DoubleAccumulator.java	Fri Dec 08 15:26:56 2017 -0800
@@ -105,20 +105,20 @@
      * @param x the value
      */
     public void accumulate(double x) {
-        Cell[] as; long b, v, r; int m; Cell a;
-        if ((as = cells) != null
+        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 (as == null
-                || (m = as.length - 1) < 0
-                || (a = as[getProbe() & m]) == null
+            if (cs == null
+                || (m = cs.length - 1) < 0
+                || (c = cs[getProbe() & m]) == null
                 || !(uncontended =
                      ((r = doubleToRawLongBits
                        (function.applyAsDouble
-                        (longBitsToDouble(v = a.value), x))) == v)
-                     || a.cas(v, r)))
+                        (longBitsToDouble(v = c.value), x))) == v)
+                     || c.cas(v, r)))
                 doubleAccumulate(x, function, uncontended);
         }
     }
@@ -133,13 +133,13 @@
      * @return the current value
      */
     public double get() {
-        Cell[] as = cells;
+        Cell[] cs = cells;
         double result = longBitsToDouble(base);
-        if (as != null) {
-            for (Cell a : as)
-                if (a != null)
+        if (cs != null) {
+            for (Cell c : cs)
+                if (c != null)
                     result = function.applyAsDouble
-                        (result, longBitsToDouble(a.value));
+                        (result, longBitsToDouble(c.value));
         }
         return result;
     }
@@ -153,12 +153,12 @@
      * updating.
      */
     public void reset() {
-        Cell[] as = cells;
+        Cell[] cs = cells;
         base = identity;
-        if (as != null) {
-            for (Cell a : as)
-                if (a != null)
-                    a.reset(identity);
+        if (cs != null) {
+            for (Cell c : cs)
+                if (c != null)
+                    c.reset(identity);
         }
     }
 
@@ -173,14 +173,12 @@
      * @return the value before reset
      */
     public double getThenReset() {
-        Cell[] as = cells;
-        double result = longBitsToDouble(base);
-        base = identity;
-        if (as != null) {
-            for (Cell a : as) {
-                if (a != null) {
-                    double v = longBitsToDouble(a.value);
-                    a.reset(identity);
+        Cell[] cs = cells;
+        double result = longBitsToDouble(getAndSetBase(identity));
+        if (cs != null) {
+            for (Cell c : cs) {
+                if (c != null) {
+                    double v = longBitsToDouble(c.getAndSet(identity));
                     result = function.applyAsDouble(result, v);
                 }
             }