ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/jsr166/jsr166/src/jsr166y/LinkedTransferQueue.java
(Generate patch)

Comparing jsr166/src/jsr166y/LinkedTransferQueue.java (file contents):
Revision 1.11 by jsr166, Mon Jan 5 03:53:26 2009 UTC vs.
Revision 1.12 by dl, Mon Jan 12 17:16:18 2009 UTC

# Line 298 | Line 298 | public class LinkedTransferQueue<E> exte
298              else if (s.waiter == null)
299                  s.waiter = w;
300              else if (mode != TIMEOUT) {
301 <                //                LockSupport.park(this);
302 <                LockSupport.park(); // allows run on java5
301 >                LockSupport.park(this);
302                  s.waiter = null;
303                  spins = -1;
304              }
305              else if (nanos > spinForTimeoutThreshold) {
306 <                //                LockSupport.parkNanos(this, nanos);
308 <                LockSupport.parkNanos(nanos);
306 >                LockSupport.parkNanos(this, nanos);
307                  s.waiter = null;
308                  spins = -1;
309              }
# Line 730 | Line 728 | public class LinkedTransferQueue<E> exte
728  
729  
730      // Support for resetting head/tail while deserializing
731 +    private void resetHeadAndTail() {
732 +        QNode dummy = new QNode(null, false);
733 +        _unsafe.putObjectVolatile(this, headOffset,
734 +                                  new PaddedAtomicReference<QNode>(dummy));
735 +        _unsafe.putObjectVolatile(this, tailOffset,
736 +                                  new PaddedAtomicReference<QNode>(dummy));
737 +        _unsafe.putObjectVolatile(this, cleanMeOffset,
738 +                                  new PaddedAtomicReference<QNode>(null));
739 +    }
740  
741      // Temporary Unsafe mechanics for preliminary release
742      private static final Unsafe _unsafe;
# Line 756 | Line 763 | public class LinkedTransferQueue<E> exte
763          }
764      }
765  
759    private void resetHeadAndTail() {
760        QNode dummy = new QNode(null, false);
761        _unsafe.putObjectVolatile(this, headOffset,
762                                  new PaddedAtomicReference<QNode>(dummy));
763        _unsafe.putObjectVolatile(this, tailOffset,
764                                  new PaddedAtomicReference<QNode>(dummy));
765        _unsafe.putObjectVolatile(this, cleanMeOffset,
766                                  new PaddedAtomicReference<QNode>(null));
767
768    }
769
766   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines