| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_UTILS_H_ | 5 #ifndef V8_UTILS_H_ |
| 6 #define V8_UTILS_H_ | 6 #define V8_UTILS_H_ |
| 7 | 7 |
| 8 #include <limits.h> | 8 #include <limits.h> |
| 9 #include <stdlib.h> | 9 #include <stdlib.h> |
| 10 #include <string.h> | 10 #include <string.h> |
| (...skipping 1630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1641 }; | 1641 }; |
| 1642 | 1642 |
| 1643 Iterator begin() { return Iterator(&head_); } | 1643 Iterator begin() { return Iterator(&head_); } |
| 1644 Iterator end() { return Iterator(tail_); } | 1644 Iterator end() { return Iterator(tail_); } |
| 1645 | 1645 |
| 1646 void Rewind(Iterator reset_point) { | 1646 void Rewind(Iterator reset_point) { |
| 1647 tail_ = reset_point.entry_; | 1647 tail_ = reset_point.entry_; |
| 1648 *tail_ = nullptr; | 1648 *tail_ = nullptr; |
| 1649 } | 1649 } |
| 1650 | 1650 |
| 1651 void MoveTail(ThreadedList<T>* parent, Iterator location) { |
| 1652 if (parent->end() != location) { |
| 1653 DCHECK_NULL(*tail_); |
| 1654 *tail_ = *location; |
| 1655 tail_ = parent->tail_; |
| 1656 parent->Rewind(location); |
| 1657 } |
| 1658 } |
| 1659 |
| 1651 bool is_empty() const { return head_ == nullptr; } | 1660 bool is_empty() const { return head_ == nullptr; } |
| 1652 | 1661 |
| 1653 // Slow. For testing purposes. | 1662 // Slow. For testing purposes. |
| 1654 int LengthForTest() { | 1663 int LengthForTest() { |
| 1655 int result = 0; | 1664 int result = 0; |
| 1656 for (Iterator t = begin(); t != end(); ++t) ++result; | 1665 for (Iterator t = begin(); t != end(); ++t) ++result; |
| 1657 return result; | 1666 return result; |
| 1658 } | 1667 } |
| 1659 T* AtForTest(int i) { | 1668 T* AtForTest(int i) { |
| 1660 Iterator t = begin(); | 1669 Iterator t = begin(); |
| 1661 while (i-- > 0) ++t; | 1670 while (i-- > 0) ++t; |
| 1662 return *t; | 1671 return *t; |
| 1663 } | 1672 } |
| 1664 | 1673 |
| 1665 private: | 1674 private: |
| 1666 T* head_; | 1675 T* head_; |
| 1667 T** tail_; | 1676 T** tail_; |
| 1668 DISALLOW_COPY_AND_ASSIGN(ThreadedList); | 1677 DISALLOW_COPY_AND_ASSIGN(ThreadedList); |
| 1669 }; | 1678 }; |
| 1670 | 1679 |
| 1671 } // namespace internal | 1680 } // namespace internal |
| 1672 } // namespace v8 | 1681 } // namespace v8 |
| 1673 | 1682 |
| 1674 #endif // V8_UTILS_H_ | 1683 #endif // V8_UTILS_H_ |
| OLD | NEW |