Lines Matching refs:tail

244             Segment head, tail;  in ToArray()
246 SnapForObservation(out head, out headHead, out tail, out tailTail); in ToArray()
250 long count = GetCount(head, headHead, tail, tailTail); in ToArray()
254 using (IEnumerator<T> e = Enumerate(head, headHead, tail, tailTail)) in ToArray()
281 Segment head, tail;
288 tail = _tail;
292 if (head == tail)
307 else if (head._nextSegment == tail)
312 tailHead = Volatile.Read(ref tail._headAndTail.Head);
313 tailTail = Volatile.Read(ref tail._headAndTail.Tail);
315 tail == _tail &&
318 tailHead == Volatile.Read(ref tail._headAndTail.Head) &&
319 tailTail == Volatile.Read(ref tail._headAndTail.Tail))
323 … return GetCount(head, headHead, headTail) + GetCount(tail, tailHead, tailTail);
330 SnapForObservation(out head, out headHead, out tail, out tailTail);
331 return unchecked((int)GetCount(head, headHead, tail, tailTail));
342 private static int GetCount(Segment s, int head, int tail) in GetCount() argument
344 if (head != tail && head != tail - s.FreezeOffset) in GetCount()
347 tail &= s._slotsMask; in GetCount()
348 return head < tail ? tail - head : s._slots.Length - head + tail; in GetCount()
354 private static long GetCount(Segment head, int headHead, Segment tail, int tailTail) in GetCount() argument
360 Debug.Assert(tail._preservedForObservation); in GetCount()
361 Debug.Assert(tail._frozenForEnqueues); in GetCount()
368 …int headTail = (head == tail ? tailTail : Volatile.Read(ref head._headAndTail.Tail)) - head.Freeze… in GetCount()
384 if (head != tail) in GetCount()
390 for (Segment s = head._nextSegment; s != tail; s = s._nextSegment) in GetCount()
401 count += tailTail - tail.FreezeOffset; in GetCount()
440 Segment head, tail; in CopyTo()
442 SnapForObservation(out head, out headHead, out tail, out tailTail); in CopyTo()
445 long count = GetCount(head, headHead, tail, tailTail); in CopyTo()
453 using (IEnumerator<T> e = Enumerate(head, headHead, tail, tailTail)) in CopyTo()
474 Segment head, tail; in GetEnumerator()
476 SnapForObservation(out head, out headHead, out tail, out tailTail); in GetEnumerator()
477 return Enumerate(head, headHead, tail, tailTail); in GetEnumerator()
485 …private void SnapForObservation(out Segment head, out int headHead, out Segment tail, out int tail… in SnapForObservation() argument
491 tail = _tail; in SnapForObservation()
493 Debug.Assert(tail != null); in SnapForObservation()
494 Debug.Assert(tail._nextSegment == null); in SnapForObservation()
501 if (s == tail) break; in SnapForObservation()
504 tail.EnsureFrozenForEnqueues(); // we want to prevent the tailTail from moving in SnapForObservation()
510 tailTail = Volatile.Read(ref tail._headAndTail.Tail); in SnapForObservation()
537 private IEnumerator<T> Enumerate(Segment head, int headHead, Segment tail, int tailTail) in Enumerate() argument
541 Debug.Assert(tail._preservedForObservation); in Enumerate()
542 Debug.Assert(tail._frozenForEnqueues); in Enumerate()
548 …int headTail = (head == tail ? tailTail : Volatile.Read(ref head._headAndTail.Tail)) - head.Freeze… in Enumerate()
566 if (head != tail) in Enumerate()
570 for (Segment s = head._nextSegment; s != tail; s = s._nextSegment) in Enumerate()
584 tailTail -= tail.FreezeOffset; in Enumerate()
587 yield return GetItemWhenAvailable(tail, i); in Enumerate()
625 Segment tail = _tail; in EnqueueSlow()
628 if (tail.TryEnqueue(item)) in EnqueueSlow()
638 if (tail == _tail) in EnqueueSlow()
641 tail.EnsureFrozenForEnqueues(); in EnqueueSlow()
652 …int nextSize = tail._preservedForObservation ? InitialSegmentLength : Math.Min(tail.Capacity * 2, … in EnqueueSlow()
656 tail._nextSegment = newTail; in EnqueueSlow()
908 int tail = Volatile.Read(ref _headAndTail.Tail); in EnsureFrozenForEnqueues()
909 … if (Interlocked.CompareExchange(ref _headAndTail.Tail, tail + FreezeOffset, tail) == tail) in EnsureFrozenForEnqueues()