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

Side by Side Diff: third_party/WebKit/Source/platform/wtf/StdLibExtras.h

Issue 2932053002: Use C++11 alignment primitives (Closed)
Patch Set: Fix merge Created 3 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution. 11 * documentation and/or other materials provided with the distribution.
12 * 12 *
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */ 24 */
25 25
26 #ifndef WTF_StdLibExtras_h 26 #ifndef WTF_StdLibExtras_h
27 #define WTF_StdLibExtras_h 27 #define WTF_StdLibExtras_h
28 28
29 #include <cstddef> 29 #include <cstddef>
30 #include "base/memory/aligned_memory.h"
31 #include "base/numerics/safe_conversions.h" 30 #include "base/numerics/safe_conversions.h"
32 #include "platform/wtf/Assertions.h" 31 #include "platform/wtf/Assertions.h"
33 #include "platform/wtf/CPU.h" 32 #include "platform/wtf/CPU.h"
34 #include "platform/wtf/LeakAnnotations.h" 33 #include "platform/wtf/LeakAnnotations.h"
35 #include "platform/wtf/Noncopyable.h" 34 #include "platform/wtf/Noncopyable.h"
36 #include "platform/wtf/TypeTraits.h" 35 #include "platform/wtf/TypeTraits.h"
37 36
38 #if DCHECK_IS_ON() 37 #if DCHECK_IS_ON()
39 #include "platform/wtf/Threading.h" 38 #include "platform/wtf/Threading.h"
40 #endif 39 #endif
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
156 155
157 private: 156 private:
158 T* pointer_; 157 T* pointer_;
159 }; 158 };
160 159
161 template <typename T> 160 template <typename T>
162 class InstanceStorage<T, true> { 161 class InstanceStorage<T, true> {
163 public: 162 public:
164 template <typename HeapNew, typename PlacementNew> 163 template <typename HeapNew, typename PlacementNew>
165 InstanceStorage(const HeapNew&, const PlacementNew& placement_new) { 164 InstanceStorage(const HeapNew&, const PlacementNew& placement_new) {
166 placement_new(object_.void_data()); 165 placement_new(&object_);
167 } 166 }
168 T* Get() { return object_.template data_as<T>(); } 167 T* Get() { return reinterpret_cast<T*>(object_); }
169 168
170 private: 169 private:
171 base::AlignedMemory<sizeof(T), ALIGNOF(T)> object_; 170 alignas(T) char object_[sizeof(T)];
172 }; 171 };
173 172
174 InstanceStorage<WrapperType> instance_; 173 InstanceStorage<WrapperType> instance_;
175 #if DCHECK_IS_ON() 174 #if DCHECK_IS_ON()
176 bool safely_initialized_; 175 bool safely_initialized_;
177 ThreadIdentifier thread_; 176 ThreadIdentifier thread_;
178 #endif 177 #endif
179 }; 178 };
180 179
181 } // namespace WTF 180 } // namespace WTF
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 char (&ArrayLengthHelperFunction(T (&)[0]))[0]; 291 char (&ArrayLengthHelperFunction(T (&)[0]))[0];
293 #endif 292 #endif
294 #define WTF_ARRAY_LENGTH(array) sizeof(::WTF::ArrayLengthHelperFunction(array)) 293 #define WTF_ARRAY_LENGTH(array) sizeof(::WTF::ArrayLengthHelperFunction(array))
295 294
296 } // namespace WTF 295 } // namespace WTF
297 296
298 using WTF::BitwiseCast; 297 using WTF::BitwiseCast;
299 using WTF::SafeCast; 298 using WTF::SafeCast;
300 299
301 #endif // WTF_StdLibExtras_h 300 #endif // WTF_StdLibExtras_h
OLDNEW
« no previous file with comments | « styleguide/c++/c++11.html ('k') | third_party/crashpad/crashpad/util/stdlib/aligned_allocator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698