[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.69, Fri Aug 16 13:40:27 2013 UTC revision 1.70, Mon Jun 23 23:04:42 2014 UTC
# Line 562  Line 562 
562      private static final int SYNC  = 2; // for transfer, take      private static final int SYNC  = 2; // for transfer, take
563      private static final int TIMED = 3; // for timed poll, tryTransfer      private static final int TIMED = 3; // for timed poll, tryTransfer
564    
     @SuppressWarnings("unchecked")  
     static <E> E cast(Object item) {  
         // assert item == null || item.getClass() != Node.class;  
         return (E) item;  
     }  
   
565      /**      /**
566       * Implements all queuing methods. See above for explanation.       * Implements all queuing methods. See above for explanation.
567       *       *
# Line 604  Line 598 
598                                  break;        // unless slack < 2                                  break;        // unless slack < 2
599                          }                          }
600                          LockSupport.unpark(p.waiter);                          LockSupport.unpark(p.waiter);
601                          return LinkedTransferQueue.<E>cast(item);                          @SuppressWarnings("unchecked") E itemE = (E) item;
602                            return itemE;
603                      }                      }
604                  }                  }
605                  Node n = p.next;                  Node n = p.next;
# Line 682  Line 677 
677              if (item != e) {                  // matched              if (item != e) {                  // matched
678                  // assert item != s;                  // assert item != s;
679                  s.forgetContents();           // avoid garbage                  s.forgetContents();           // avoid garbage
680                  return LinkedTransferQueue.<E>cast(item);                  @SuppressWarnings("unchecked") E itemE = (E) item;
681                    return itemE;
682              }              }
683              if ((w.isInterrupted() || (timed && nanos <= 0)) &&              if ((w.isInterrupted() || (timed && nanos <= 0)) &&
684                      s.casItem(e, s)) {        // cancel                      s.casItem(e, s)) {        // cancel
# Line 779  Line 775 
775          for (Node p = head; p != null; p = succ(p)) {          for (Node p = head; p != null; p = succ(p)) {
776              Object item = p.item;              Object item = p.item;
777              if (p.isData) {              if (p.isData) {
778                  if (item != null && item != p)                  if (item != null && item != p) {
779                      return LinkedTransferQueue.<E>cast(item);                      @SuppressWarnings("unchecked") E itemE = (E) item;
780                        return itemE;
781                    }
782              }              }
783              else if (item == null)              else if (item == null)
784                  return null;                  return null;
# Line 858  Line 856 
856                  Object item = s.item;                  Object item = s.item;
857                  if (s.isData) {                  if (s.isData) {
858                      if (item != null && item != s) {                      if (item != null && item != s) {
859                          nextItem = LinkedTransferQueue.<E>cast(item);                          @SuppressWarnings("unchecked") E itemE = (E) item;
860                            nextItem = itemE;
861                          nextNode = s;                          nextNode = s;
862                          return;                          return;
863                      }                      }

Legend:
Removed from v.1.69  
changed lines
  Added in v.1.70

Doug Lea
ViewVC Help
Powered by ViewVC 1.0.8