OLD | NEW |
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 WTF_Allocator_h | 5 #ifndef WTF_Allocator_h |
6 #define WTF_Allocator_h | 6 #define WTF_Allocator_h |
7 | 7 |
8 #include "wtf/Assertions.h" | 8 #include "wtf/Assertions.h" |
9 #include "wtf/StdLibExtras.h" | 9 #include "wtf/TypeTraits.h" |
10 #include "wtf/allocator/Partitions.h" | 10 #include "wtf/allocator/Partitions.h" |
11 | 11 |
12 namespace WTF { | 12 namespace WTF { |
13 | 13 |
14 // Classes that contain references to garbage-collected objects but aren't | 14 // Classes that contain references to garbage-collected objects but aren't |
15 // themselves garbaged allocated, have some extra macros available which | 15 // themselves garbaged allocated, have some extra macros available which |
16 // allows their use to be restricted to cases where the garbage collector | 16 // allows their use to be restricted to cases where the garbage collector |
17 // is able to discover their references. These macros will be useful for | 17 // is able to discover their references. These macros will be useful for |
18 // non-garbage-collected objects to avoid unintended allocations. | 18 // non-garbage-collected objects to avoid unintended allocations. |
19 // | 19 // |
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 // variant provides type info unconditionally, so it should be used sparingly. | 139 // variant provides type info unconditionally, so it should be used sparingly. |
140 // Furthermore, the |WITH_TYPE_NAME| variant does not work if |type| is a | 140 // Furthermore, the |WITH_TYPE_NAME| variant does not work if |type| is a |
141 // template argument; |USING_FAST_MALLOC| does. | 141 // template argument; |USING_FAST_MALLOC| does. |
142 #define USING_FAST_MALLOC(type) \ | 142 #define USING_FAST_MALLOC(type) \ |
143 USING_FAST_MALLOC_INTERNAL(type, WTF_HEAP_PROFILER_TYPE_NAME(type)) | 143 USING_FAST_MALLOC_INTERNAL(type, WTF_HEAP_PROFILER_TYPE_NAME(type)) |
144 #define USING_FAST_MALLOC_WITH_TYPE_NAME(type) \ | 144 #define USING_FAST_MALLOC_WITH_TYPE_NAME(type) \ |
145 USING_FAST_MALLOC_INTERNAL(type, #type) | 145 USING_FAST_MALLOC_INTERNAL(type, #type) |
146 | 146 |
147 } // namespace WTF | 147 } // namespace WTF |
148 | 148 |
| 149 // This version of placement new omits a 0 check. |
| 150 enum NotNullTag { NotNull }; |
| 151 inline void* operator new(size_t, NotNullTag, void* location) { |
| 152 DCHECK(location); |
| 153 return location; |
| 154 } |
| 155 |
149 #endif /* WTF_Allocator_h */ | 156 #endif /* WTF_Allocator_h */ |
OLD | NEW |