Index: third_party/WebKit/Source/wtf/Vector.h |
diff --git a/third_party/WebKit/Source/wtf/Vector.h b/third_party/WebKit/Source/wtf/Vector.h |
index 9b068f1cf5d160133f12d2b49a7fb99805bd211a..9483a550d1d182afa15bdd7cd81ff2e9baf536b4 100644 |
--- a/third_party/WebKit/Source/wtf/Vector.h |
+++ b/third_party/WebKit/Source/wtf/Vector.h |
@@ -57,6 +57,14 @@ static const size_t kInitialVectorSize = WTF_VECTOR_INITIAL_SIZE; |
template <typename T, size_t inlineBuffer, typename Allocator> |
class Deque; |
+// |
+// Vector Traits |
+// |
+ |
+// Bunch of traits for Vector are defined here, with which you can customize |
+// Vector's behavior. In most cases the default traits are appropriate, so you |
+// usually don't have to specialize those traits by yourself. |
+ |
template <bool needsDestruction, typename T> |
struct VectorDestructor; |
@@ -279,6 +287,9 @@ struct VectorElementComparer<std::unique_ptr<T>> { |
} |
}; |
+// A collection of all the traits used by Vector. This is basically an |
+// implementation detail of Vector, and you should specialize individual traits |
+// defined above, if you want to customize Vector's behavior. |
template <typename T> |
struct VectorTypeOperations { |
STATIC_ONLY(VectorTypeOperations); |
@@ -327,6 +338,16 @@ struct VectorTypeOperations { |
} |
}; |
+// |
+// VectorBuffer |
+// |
+ |
+// VectorBuffer is an implementation detail of Vector and Deque. It manages |
+// Vector's underlying buffer, and does operations like allocation or |
+// expansion. |
+// |
+// Not meant for general consumption. |
+ |
template <typename T, bool hasInlineCapacity, typename Allocator> |
class VectorBufferBase { |
WTF_MAKE_NONCOPYABLE(VectorBufferBase); |
@@ -795,12 +816,17 @@ class VectorBuffer : protected VectorBufferBase<T, true, Allocator> { |
template <typename U, size_t inlineBuffer, typename V> |
friend class Deque; |
}; |
-// Heap-allocated vectors with no inlineCapacity never need a destructor. |
+ |
+// |
+// Vector |
+// |
+ |
template <typename T, |
size_t inlineCapacity = 0, |
typename Allocator = PartitionAllocator> |
class Vector |
: private VectorBuffer<T, INLINE_CAPACITY, Allocator>, |
+ // Heap-allocated vectors with no inlineCapacity never need a destructor. |
public ConditionalDestructor<Vector<T, INLINE_CAPACITY, Allocator>, |
(INLINE_CAPACITY == 0) && |
Allocator::isGarbageCollected> { |
@@ -1040,6 +1066,10 @@ class Vector |
using Base::allocationSize; |
}; |
+// |
+// Vector out-of-line implementation |
+// |
+ |
template <typename T, size_t inlineCapacity, typename Allocator> |
Vector<T, inlineCapacity, Allocator>::Vector(const Vector& other) |
: Base(other.capacity()) { |