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

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

Issue 2657173002: Disallow sequences with lengths exceeding max allocation supported. (Closed)
Patch Set: re-add expected output Created 3 years, 10 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
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 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
328 }; 328 };
329 329
330 template <typename T, bool hasInlineCapacity, typename Allocator> 330 template <typename T, bool hasInlineCapacity, typename Allocator>
331 class VectorBufferBase { 331 class VectorBufferBase {
332 WTF_MAKE_NONCOPYABLE(VectorBufferBase); 332 WTF_MAKE_NONCOPYABLE(VectorBufferBase);
333 DISALLOW_NEW(); 333 DISALLOW_NEW();
334 334
335 public: 335 public:
336 void allocateBuffer(size_t newCapacity) { 336 void allocateBuffer(size_t newCapacity) {
337 DCHECK(newCapacity); 337 DCHECK(newCapacity);
338 DCHECK_LE(newCapacity,
339 Allocator::template maxElementCountInBackingStore<T>());
338 size_t sizeToAllocate = allocationSize(newCapacity); 340 size_t sizeToAllocate = allocationSize(newCapacity);
339 if (hasInlineCapacity) 341 if (hasInlineCapacity)
340 m_buffer = 342 m_buffer =
341 Allocator::template allocateInlineVectorBacking<T>(sizeToAllocate); 343 Allocator::template allocateInlineVectorBacking<T>(sizeToAllocate);
342 else 344 else
343 m_buffer = Allocator::template allocateVectorBacking<T>(sizeToAllocate); 345 m_buffer = Allocator::template allocateVectorBacking<T>(sizeToAllocate);
344 m_capacity = sizeToAllocate / sizeof(T); 346 m_capacity = sizeToAllocate / sizeof(T);
345 } 347 }
346 348
347 void allocateExpandedBuffer(size_t newCapacity) { 349 void allocateExpandedBuffer(size_t newCapacity) {
(...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after
990 992
991 template <typename Iterator> 993 template <typename Iterator>
992 void appendRange(Iterator start, Iterator end); 994 void appendRange(Iterator start, Iterator end);
993 995
994 void swap(Vector& other) { 996 void swap(Vector& other) {
995 Base::swapVectorBuffer(other, OffsetRange(), OffsetRange()); 997 Base::swapVectorBuffer(other, OffsetRange(), OffsetRange());
996 } 998 }
997 999
998 void reverse(); 1000 void reverse();
999 1001
1002 // Maximum element count supported; allocating a vector
1003 // buffer with a larger count will fail.
1004 static size_t maxCapacity() {
1005 return Allocator::template maxElementCountInBackingStore<T>();
1006 }
1007
1000 template <typename VisitorDispatcher> 1008 template <typename VisitorDispatcher>
1001 void trace(VisitorDispatcher); 1009 void trace(VisitorDispatcher);
1002 1010
1003 class GCForbiddenScope { 1011 class GCForbiddenScope {
1004 STACK_ALLOCATED(); 1012 STACK_ALLOCATED();
1005 1013
1006 public: 1014 public:
1007 GCForbiddenScope() { Allocator::enterGCForbiddenScope(); } 1015 GCForbiddenScope() { Allocator::enterGCForbiddenScope(); }
1008 ~GCForbiddenScope() { Allocator::leaveGCForbiddenScope(); } 1016 ~GCForbiddenScope() { Allocator::leaveGCForbiddenScope(); }
1009 }; 1017 };
(...skipping 601 matching lines...) Expand 10 before | Expand all | Expand 10 after
1611 visitor, *const_cast<T*>(bufferEntry)); 1619 visitor, *const_cast<T*>(bufferEntry));
1612 checkUnusedSlots(buffer() + size(), buffer() + capacity()); 1620 checkUnusedSlots(buffer() + size(), buffer() + capacity());
1613 } 1621 }
1614 } 1622 }
1615 1623
1616 } // namespace WTF 1624 } // namespace WTF
1617 1625
1618 using WTF::Vector; 1626 using WTF::Vector;
1619 1627
1620 #endif // WTF_Vector_h 1628 #endif // WTF_Vector_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/platform/heap/HeapAllocator.h ('k') | third_party/WebKit/Source/wtf/allocator/PartitionAllocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698