Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(178)

Side by Side Diff: third_party/WebKit/Source/wtf/Vector.h

Issue 2710183002: WTF::Vector: Enable static_asserts in a Vector constructor.
Patch Set: Add a "temporarily allowed" rule in DEPS. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/core/layout/line/RootInlineBox.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 2 * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 1176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1187 "an off-heap Vector. Use HeapVector<Member<T>> instead."); 1187 "an off-heap Vector. Use HeapVector<Member<T>> instead.");
1188 1188
1189 ANNOTATE_NEW_BUFFER(begin(), capacity(), size); 1189 ANNOTATE_NEW_BUFFER(begin(), capacity(), size);
1190 m_size = size; 1190 m_size = size;
1191 TypeOperations::initialize(begin(), end()); 1191 TypeOperations::initialize(begin(), end());
1192 } 1192 }
1193 1193
1194 template <typename T, size_t inlineCapacity, typename Allocator> 1194 template <typename T, size_t inlineCapacity, typename Allocator>
1195 inline Vector<T, inlineCapacity, Allocator>::Vector(size_t size, const T& val) 1195 inline Vector<T, inlineCapacity, Allocator>::Vector(size_t size, const T& val)
1196 : Base(size) { 1196 : Base(size) {
1197 // TODO(yutak): Introduce these assertions. Some use sites call this function 1197 static_assert(!std::is_polymorphic<T>::value ||
1198 // in the context where T is an incomplete type. 1198 !VectorTraits<T>::canInitializeWithMemset,
1199 // 1199 "Cannot initialize with memset if there is a vtable");
1200 // static_assert(!std::is_polymorphic<T>::value || 1200 static_assert(Allocator::isGarbageCollected ||
1201 // !VectorTraits<T>::canInitializeWithMemset, 1201 !AllowsOnlyPlacementNew<T>::value ||
1202 // "Cannot initialize with memset if there is a vtable"); 1202 !IsTraceable<T>::value,
1203 // static_assert(Allocator::isGarbageCollected || 1203 "Cannot put DISALLOW_NEW_EXCEPT_PLACEMENT_NEW objects that "
1204 // !AllowsOnlyPlacementNew<T>::value || 1204 "have trace methods into an off-heap Vector");
1205 // !IsTraceable<T>::value, 1205 static_assert(Allocator::isGarbageCollected ||
1206 // "Cannot put DISALLOW_NEW_EXCEPT_PLACEMENT_NEW objects that " 1206 !IsPointerToGarbageCollectedType<T>::value,
1207 // "have trace methods into an off-heap Vector"); 1207 "Cannot put raw pointers to garbage-collected classes into "
1208 // static_assert(Allocator::isGarbageCollected || 1208 "an off-heap Vector. Use HeapVector<Member<T>> instead.");
1209 // !IsPointerToGarbageCollectedType<T>::value,
1210 // "Cannot put raw pointers to garbage-collected classes into "
1211 // "an off-heap Vector. Use HeapVector<Member<T>> instead.");
1212 1209
1213 ANNOTATE_NEW_BUFFER(begin(), capacity(), size); 1210 ANNOTATE_NEW_BUFFER(begin(), capacity(), size);
1214 m_size = size; 1211 m_size = size;
1215 TypeOperations::uninitializedFill(begin(), end(), val); 1212 TypeOperations::uninitializedFill(begin(), end(), val);
1216 } 1213 }
1217 1214
1218 template <typename T, size_t inlineCapacity, typename Allocator> 1215 template <typename T, size_t inlineCapacity, typename Allocator>
1219 Vector<T, inlineCapacity, Allocator>::Vector(const Vector& other) 1216 Vector<T, inlineCapacity, Allocator>::Vector(const Vector& other)
1220 : Base(other.capacity()) { 1217 : Base(other.capacity()) {
1221 ANNOTATE_NEW_BUFFER(begin(), capacity(), other.size()); 1218 ANNOTATE_NEW_BUFFER(begin(), capacity(), other.size());
(...skipping 571 matching lines...) Expand 10 before | Expand all | Expand 10 after
1793 visitor, *const_cast<T*>(bufferEntry)); 1790 visitor, *const_cast<T*>(bufferEntry));
1794 checkUnusedSlots(buffer() + size(), buffer() + capacity()); 1791 checkUnusedSlots(buffer() + size(), buffer() + capacity());
1795 } 1792 }
1796 } 1793 }
1797 1794
1798 } // namespace WTF 1795 } // namespace WTF
1799 1796
1800 using WTF::Vector; 1797 using WTF::Vector;
1801 1798
1802 #endif // WTF_Vector_h 1799 #endif // WTF_Vector_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/layout/line/RootInlineBox.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698