[cvs] / jsr166 / src / main / java / util / concurrent / LinkedTransferQueue.java Repository:
ViewVC logotype

Diff of /jsr166/src/main/java/util/concurrent/LinkedTransferQueue.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.137, Sat Jan 7 21:49:33 2017 UTC revision 1.138, Sun Jan 8 03:48:36 2017 UTC
# Line 1488  Line 1488 
1488                  }                  }
1489                  else if (!p.isData)                  else if (!p.isData)
1490                      break;                      break;
1491                  for (Node c = p;;) {                  for (Node c = p;; q = p.next) {
1492                      if ((q = p.next) == null || !q.isMatched()) {                      if (q == null || !q.isMatched()) {
1493                          pred = skipDeadNodes(pred, c, p, q); p = q; break;                          pred = skipDeadNodes(pred, c, p, q); p = q; break;
1494                      }                      }
1495                      if (p == (p = q)) continue restartFromHead;                      if (p == (p = q)) continue restartFromHead;
# Line 1522  Line 1522 
1522                  }                  }
1523                  else if (!p.isData)                  else if (!p.isData)
1524                      break;                      break;
1525                  for (Node c = p;;) {                  for (Node c = p;; q = p.next) {
1526                      if ((q = p.next) == null || !q.isMatched()) {                      if (q == null || !q.isMatched()) {
1527                          pred = skipDeadNodes(pred, c, p, q); p = q; break;                          pred = skipDeadNodes(pred, c, p, q); p = q; break;
1528                      }                      }
1529                      if (p == (p = q)) continue restartFromHead;                      if (p == (p = q)) continue restartFromHead;
# Line 1625  Line 1625 
1625              // c will be CASed to collapse intervening dead nodes between              // c will be CASed to collapse intervening dead nodes between
1626              // pred (or head if null) and p.              // pred (or head if null) and p.
1627              for (Node p = head, c = p, pred = null, q; p != null; p = q) {              for (Node p = head, c = p, pred = null, q; p != null; p = q) {
1628                    q = p.next;
1629                  final Object item; boolean pAlive;                  final Object item; boolean pAlive;
1630                  if (pAlive = ((item = p.item) != null && p.isData)) {                  if (pAlive = ((item = p.item) != null && p.isData)) {
1631                      if (filter.test((E) item)) {                      if (filter.test((E) item)) {
# Line 1635  Line 1636 
1636                  }                  }
1637                  else if (!p.isData && item == null)                  else if (!p.isData && item == null)
1638                      break;                      break;
1639                  if ((q = p.next) == null || pAlive || --hops == 0) {                  if (pAlive || q == null || --hops == 0) {
1640                      // p might already be self-linked here, but if so:                      // p might already be self-linked here, but if so:
1641                      // - CASing head will surely fail                      // - CASing head will surely fail
1642                      // - CASing pred's next will be useless but harmless.                      // - CASing pred's next will be useless but harmless.
# Line 1670  Line 1671 
1671              }              }
1672              else if (!p.isData)              else if (!p.isData)
1673                  break;                  break;
1674              for (Node c = p;;) {              for (Node c = p;; q = p.next) {
1675                  if ((q = p.next) == null || !q.isMatched()) {                  if (q == null || !q.isMatched()) {
1676                      pred = skipDeadNodes(pred, c, p, q); p = q; break;                      pred = skipDeadNodes(pred, c, p, q); p = q; break;
1677                  }                  }
1678                  if (p == (p = q)) { pred = null; p = head; break; }                  if (p == (p = q)) { pred = null; p = head; break; }

Legend:
Removed from v.1.137  
changed lines
  Added in v.1.138

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8