| 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 |