ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/main/java/util/concurrent/CompletableFuture.java
(Generate patch)

Comparing jsr166/src/main/java/util/concurrent/CompletableFuture.java (file contents):
Revision 1.195 by jsr166, Fri Jun 3 01:42:22 2016 UTC vs.
Revision 1.196 by jsr166, Sat Jun 4 19:51:49 2016 UTC

# Line 231 | Line 231 | public class CompletableFuture<T> implem
231      /** Returns true if successfully pushed c onto stack. */
232      final boolean tryPushStack(Completion c) {
233          Completion h = stack;
234 <        NEXT.setRelease(c, h);
234 >        NEXT.set(c, h);         // CAS piggyback
235          return STACK.compareAndSet(this, h, c);
236      }
237  
# Line 531 | Line 531 | public class CompletableFuture<T> implem
531          if (c != null) {
532              while (!tryPushStack(c)) {
533                  if (result != null) {
534 <                    NEXT.setRelease(c, null);
534 >                    NEXT.set(c, null);
535                      break;
536                  }
537              }
# Line 1095 | Line 1095 | public class CompletableFuture<T> implem
1095          if (c != null) {
1096              Object r;
1097              while ((r = result) == null && !tryPushStack(c))
1098 <                NEXT.setRelease(c, null);  // clear on failure
1098 >                NEXT.set(c, null);  // clear on failure
1099              if (b != null && b != this && b.result == null) {
1100                  Completion q = (r != null) ? c : new CoCompletion(c);
1101                  while (b.result == null && !b.tryPushStack(q))
1102 <                    NEXT.setRelease(q, null);  // clear on failure
1102 >                    NEXT.set(q, null);  // clear on failure
1103              }
1104          }
1105      }
# Line 1414 | Line 1414 | public class CompletableFuture<T> implem
1414                          Completion q = new CoCompletion(c);
1415                          while (result == null && b.result == null &&
1416                                 !b.tryPushStack(q))
1417 <                            NEXT.setRelease(q, null);  // clear on failure
1417 >                            NEXT.set(q, null);  // clear on failure
1418                      }
1419                      break;
1420                  }
1421 <                NEXT.setRelease(c, null);  // clear on failure
1421 >                NEXT.set(c, null);  // clear on failure
1422              }
1423          }
1424      }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines