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

Side by Side Diff: third_party/WebKit/Source/platform/heap/HeapTerminatedArray.h

Issue 2021713002: (Heap)TerminatedArrayBuilders are stack allocated. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: tidy HeapTerminatedArray Created 4 years, 6 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 | « no previous file | third_party/WebKit/Source/platform/heap/HeapTerminatedArrayBuilder.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 HeapTerminatedArray_h 5 #ifndef HeapTerminatedArray_h
6 #define HeapTerminatedArray_h 6 #define HeapTerminatedArray_h
7 7
8 #include "platform/heap/Heap.h" 8 #include "platform/heap/Heap.h"
9 #include "wtf/TerminatedArray.h" 9 #include "wtf/TerminatedArray.h"
10 #include "wtf/TerminatedArrayBuilder.h" 10 #include "wtf/TerminatedArrayBuilder.h"
11 11
12 namespace blink { 12 namespace blink {
13 13
14 template<typename T> 14 template<typename T>
15 class HeapTerminatedArray : public TerminatedArray<T> { 15 class HeapTerminatedArray : public TerminatedArray<T> {
16 DISALLOW_NEW(); 16 DISALLOW_NEW();
17 IS_GARBAGE_COLLECTED_TYPE(); 17 IS_GARBAGE_COLLECTED_TYPE();
18 public: 18 public:
19 using TerminatedArray<T>::begin; 19 using TerminatedArray<T>::begin;
20 using TerminatedArray<T>::end; 20 using TerminatedArray<T>::end;
21 21
22 DEFINE_INLINE_TRACE() 22 DEFINE_INLINE_TRACE()
23 { 23 {
24 for (typename TerminatedArray<T>::iterator it = begin(); it != end(); ++ it) 24 for (typename TerminatedArray<T>::iterator it = begin(); it != end(); ++ it)
25 visitor->trace(*it); 25 visitor->trace(*it);
26 } 26 }
27 27
28 private: 28 private:
29 // Allocator describes how HeapTerminatedArrayBuilder should create new inta nces 29 // Allocator describes how HeapTerminatedArrayBuilder should create new inta nces
30 // of TerminateArray and manage their lifetimes. 30 // of HeapTerminatedArray and manage their lifetimes.
31 struct Allocator final { 31 struct Allocator final {
32 STATIC_ONLY(Allocator); 32 STATIC_ONLY(Allocator);
33 typedef HeapTerminatedArray* PassPtr; 33 using PassPtr = HeapTerminatedArray*;
34 typedef HeapTerminatedArray* Ptr; 34 using Ptr = Member<HeapTerminatedArray>;
35 35
36 static PassPtr release(Ptr ptr) 36 static PassPtr release(Ptr& ptr)
37 { 37 {
38 return ptr; 38 return ptr;
39 } 39 }
40 40
41 static PassPtr create(size_t capacity) 41 static PassPtr create(size_t capacity)
42 { 42 {
43 return reinterpret_cast<HeapTerminatedArray*>(ThreadHeap::allocate<H eapTerminatedArray>(capacity * sizeof(T), IsEagerlyFinalizedType<T>::value)); 43 return reinterpret_cast<HeapTerminatedArray*>(ThreadHeap::allocate<H eapTerminatedArray>(capacity * sizeof(T), IsEagerlyFinalizedType<T>::value));
44 } 44 }
45 45
46 static PassPtr resize(PassPtr ptr, size_t capacity) 46 static PassPtr resize(PassPtr ptr, size_t capacity)
(...skipping 11 matching lines...) Expand all
58 58
59 template<typename T> 59 template<typename T>
60 class TraceEagerlyTrait<HeapTerminatedArray<T>> { 60 class TraceEagerlyTrait<HeapTerminatedArray<T>> {
61 public: 61 public:
62 static const bool value = TraceEagerlyTrait<T>::value; 62 static const bool value = TraceEagerlyTrait<T>::value;
63 }; 63 };
64 64
65 } // namespace blink 65 } // namespace blink
66 66
67 #endif // HeapTerminatedArray_h 67 #endif // HeapTerminatedArray_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/heap/HeapTerminatedArrayBuilder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698