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

Side by Side Diff: Source/platform/heap/HeapAllocator.h

Issue 1211243006: Oilpan: Replace checkHeader() with ASSERT(checkHeader()) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/heap/Heap.cpp ('k') | Source/platform/heap/HeapAllocator.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium 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 HeapAllocator_h 5 #ifndef HeapAllocator_h
6 #define HeapAllocator_h 6 #define HeapAllocator_h
7 7
8 #include "platform/heap/Heap.h" 8 #include "platform/heap/Heap.h"
9 #include "platform/heap/TraceTraits.h" 9 #include "platform/heap/TraceTraits.h"
10 #include "wtf/Assertions.h" 10 #include "wtf/Assertions.h"
(...skipping 265 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 276
277 template<typename T, typename Traits> 277 template<typename T, typename Traits>
278 void HeapVectorBacking<T, Traits>::finalize(void* pointer) 278 void HeapVectorBacking<T, Traits>::finalize(void* pointer)
279 { 279 {
280 static_assert(Traits::needsDestruction, "Only vector buffers with items requ iring destruction should be finalized"); 280 static_assert(Traits::needsDestruction, "Only vector buffers with items requ iring destruction should be finalized");
281 // See the comment in HeapVectorBacking::trace. 281 // See the comment in HeapVectorBacking::trace.
282 static_assert(Traits::canClearUnusedSlotsWithMemset || WTF::IsPolymorphic<T> ::value, "HeapVectorBacking doesn't support objects that cannot be cleared as un used with memset or don't have a vtable"); 282 static_assert(Traits::canClearUnusedSlotsWithMemset || WTF::IsPolymorphic<T> ::value, "HeapVectorBacking doesn't support objects that cannot be cleared as un used with memset or don't have a vtable");
283 283
284 ASSERT(!WTF::IsTriviallyDestructible<T>::value); 284 ASSERT(!WTF::IsTriviallyDestructible<T>::value);
285 HeapObjectHeader* header = HeapObjectHeader::fromPayload(pointer); 285 HeapObjectHeader* header = HeapObjectHeader::fromPayload(pointer);
286 header->checkHeader(); 286 ASSERT(header->checkHeader());
287 // Use the payload size as recorded by the heap to determine how many 287 // Use the payload size as recorded by the heap to determine how many
288 // elements to finalize. 288 // elements to finalize.
289 size_t length = header->payloadSize() / sizeof(T); 289 size_t length = header->payloadSize() / sizeof(T);
290 T* buffer = reinterpret_cast<T*>(pointer); 290 T* buffer = reinterpret_cast<T*>(pointer);
291 #ifdef ANNOTATE_CONTIGUOUS_CONTAINER 291 #ifdef ANNOTATE_CONTIGUOUS_CONTAINER
292 // As commented above, HeapVectorBacking calls finalizers for unused slots 292 // As commented above, HeapVectorBacking calls finalizers for unused slots
293 // (which are already zeroed out). 293 // (which are already zeroed out).
294 ANNOTATE_CHANGE_SIZE(buffer, length, 0, length); 294 ANNOTATE_CHANGE_SIZE(buffer, length, 0, length);
295 #endif 295 #endif
296 if (WTF::IsPolymorphic<T>::value) { 296 if (WTF::IsPolymorphic<T>::value) {
(...skipping 13 matching lines...) Expand all
310 static void finalize(void* pointer); 310 static void finalize(void* pointer);
311 void finalizeGarbageCollectedObject() { finalize(this); } 311 void finalizeGarbageCollectedObject() { finalize(this); }
312 }; 312 };
313 313
314 template<typename Table> 314 template<typename Table>
315 void HeapHashTableBacking<Table>::finalize(void* pointer) 315 void HeapHashTableBacking<Table>::finalize(void* pointer)
316 { 316 {
317 using Value = typename Table::ValueType; 317 using Value = typename Table::ValueType;
318 ASSERT(!WTF::IsTriviallyDestructible<Value>::value); 318 ASSERT(!WTF::IsTriviallyDestructible<Value>::value);
319 HeapObjectHeader* header = HeapObjectHeader::fromPayload(pointer); 319 HeapObjectHeader* header = HeapObjectHeader::fromPayload(pointer);
320 header->checkHeader(); 320 ASSERT(header->checkHeader());
321 // Use the payload size as recorded by the heap to determine how many 321 // Use the payload size as recorded by the heap to determine how many
322 // elements to finalize. 322 // elements to finalize.
323 size_t length = header->payloadSize() / sizeof(Value); 323 size_t length = header->payloadSize() / sizeof(Value);
324 Value* table = reinterpret_cast<Value*>(pointer); 324 Value* table = reinterpret_cast<Value*>(pointer);
325 for (unsigned i = 0; i < length; ++i) { 325 for (unsigned i = 0; i < length; ++i) {
326 if (!Table::isEmptyOrDeletedBucket(table[i])) 326 if (!Table::isEmptyOrDeletedBucket(table[i]))
327 table[i].~Value(); 327 table[i].~Value();
328 } 328 }
329 } 329 }
330 330
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 template<typename T, size_t i, typename U> 457 template<typename T, size_t i, typename U>
458 inline void swap(HeapListHashSet<T, i, U>& a, HeapListHashSet<T, i, U>& b) { a.s wap(b); } 458 inline void swap(HeapListHashSet<T, i, U>& a, HeapListHashSet<T, i, U>& b) { a.s wap(b); }
459 template<typename T, typename U, typename V> 459 template<typename T, typename U, typename V>
460 inline void swap(HeapLinkedHashSet<T, U, V>& a, HeapLinkedHashSet<T, U, V>& b) { a.swap(b); } 460 inline void swap(HeapLinkedHashSet<T, U, V>& a, HeapLinkedHashSet<T, U, V>& b) { a.swap(b); }
461 template<typename T, typename U, typename V> 461 template<typename T, typename U, typename V>
462 inline void swap(HeapHashCountedSet<T, U, V>& a, HeapHashCountedSet<T, U, V>& b) { a.swap(b); } 462 inline void swap(HeapHashCountedSet<T, U, V>& a, HeapHashCountedSet<T, U, V>& b) { a.swap(b); }
463 463
464 } // namespace blink 464 } // namespace blink
465 465
466 #endif 466 #endif
OLDNEW
« no previous file with comments | « Source/platform/heap/Heap.cpp ('k') | Source/platform/heap/HeapAllocator.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698