Lines Matching full:tail
165 Segment *Tail; variable
263 DCHECK_EQ(Tail, &SentinelSegment); in InitHeadAndTail()
271 Tail = S; in InitHeadAndTail()
272 DCHECK_EQ(Head, Tail); in InitHeadAndTail()
273 DCHECK_EQ(Tail->Next, &SentinelSegment); in InitHeadAndTail()
274 DCHECK_EQ(Tail->Prev, &SentinelSegment); in InitHeadAndTail()
282 DCHECK_NE(Tail, &SentinelSegment); in AppendNewSegment()
283 DCHECK_EQ(Tail->Next, &SentinelSegment); in AppendNewSegment()
286 S->Prev = Tail; in AppendNewSegment()
287 Tail->Next = S; in AppendNewSegment()
288 Tail = S; in AppendNewSegment()
290 DCHECK_EQ(Tail->Next, &SentinelSegment); in AppendNewSegment()
298 Tail(&SentinelSegment), in Array()
304 Tail(&SentinelSegment), in Array()
313 Tail(O.Tail), in Array()
318 O.Tail = &SentinelSegment; in Array()
328 Tail = O.Tail;
329 O.Tail = &SentinelSegment;
353 DCHECK((Size == 0 && Head == &SentinelSegment && Head == Tail) || in AppendEmplace()
354 (Size != 0 && Head != &SentinelSegment && Tail != &SentinelSegment)); in AppendEmplace()
362 DCHECK_NE(Tail, &SentinelSegment); in AppendEmplace()
369 DCHECK_NE(Tail, &SentinelSegment); in AppendEmplace()
370 auto Base = &Tail->Data; in AppendEmplace()
385 DCHECK((Size == 0 && Head == &SentinelSegment && Head == Tail) || in Append()
386 (Size != 0 && Head != &SentinelSegment && Tail != &SentinelSegment)); in Append()
394 DCHECK_NE(Tail, &SentinelSegment); in Append()
401 DCHECK_NE(Tail, &SentinelSegment); in Append()
402 auto Base = &Tail->Data; in Append()
405 reinterpret_cast<unsigned char *>(Tail) + SegmentSize); in Append()
435 DCHECK_NE(Tail, &SentinelSegment); in back()
462 // We compute the number of segments we're going to return from the tail by in trim()
507 // Here we place the current tail segment to the freelist. To do this in trim()
515 DCHECK_NE(Tail, &SentinelSegment); in trim()
516 DCHECK_EQ(Tail->Next, &SentinelSegment); in trim()
523 // ^ Head ^ Tail in trim()
529 // ^ Head ^ Tail in trim()
531 // The first step for us is to hold a reference to the tail of Mainlist, in trim()
537 // Then, we also hold a reference to the "pre-tail" element, which we in trim()
553 // Tail = sPT in trim()
555 auto SPT = Tail->Prev; in trim()
557 Tail->Prev = &SentinelSegment; in trim()
558 Tail->Next = Freelist; in trim()
559 Freelist = Tail; in trim()
560 Tail = SPT; in trim()
563 DCHECK_EQ(Tail->Next, &SentinelSegment); in trim()
574 // ^ Head ^ Tail in trim()
581 // ^ Head ^ Tail in trim()
591 // Tail = sPT in trim()
595 auto SPT = Tail->Prev; in trim()
596 auto ST = Tail; in trim()
601 Tail = SPT; in trim()
605 DCHECK_EQ(Tail->Next, &SentinelSegment); in trim()
612 // main list is "empty", or both the head and tail pointing to the sentinel in trim()
614 if (Tail == &SentinelSegment) in trim()
615 Head = Tail; in trim()
618 (Size == 0 && Head == &SentinelSegment && Tail == &SentinelSegment) || in trim()
619 (Size != 0 && Head != &SentinelSegment && Tail != &SentinelSegment)); in trim()
622 (Freelist == &SentinelSegment && Tail->Next == &SentinelSegment)); in trim()
630 return Iterator<T>(Tail, Size, Size); in end()
636 return Iterator<const T>(Tail, Size, Size); in cend()