| Index: base/lazy_instance.h
|
| diff --git a/base/lazy_instance.h b/base/lazy_instance.h
|
| index 070e436d1f0c5a74534ba8fb1a8535a29db789e0..20a2336c0e4facee197381488e78064cd5b1610a 100644
|
| --- a/base/lazy_instance.h
|
| +++ b/base/lazy_instance.h
|
| @@ -36,12 +36,12 @@
|
| #define BASE_LAZY_INSTANCE_H_
|
|
|
| #include <new> // For placement new.
|
| +#include <type_traits>
|
|
|
| #include "base/atomicops.h"
|
| #include "base/base_export.h"
|
| #include "base/debug/leak_annotations.h"
|
| #include "base/logging.h"
|
| -#include "base/memory/aligned_memory.h"
|
| #include "base/threading/thread_restrictions.h"
|
|
|
| // LazyInstance uses its own struct initializer-list style static
|
| @@ -55,7 +55,7 @@ namespace base {
|
| template <typename Type>
|
| struct LazyInstanceTraitsBase {
|
| static Type* New(void* instance) {
|
| - DCHECK_EQ(reinterpret_cast<uintptr_t>(instance) & (ALIGNOF(Type) - 1), 0u);
|
| + DCHECK_EQ(reinterpret_cast<uintptr_t>(instance) & (alignof(Type) - 1), 0u);
|
| // Use placement new to initialize our instance in our preallocated space.
|
| // The parenthesis is very important here to force POD type initialization.
|
| return new (instance) Type();
|
| @@ -179,8 +179,7 @@ class LazyInstance {
|
| if (!(value & kLazyInstanceCreatedMask) &&
|
| internal::NeedsLazyInstance(&private_instance_)) {
|
| // Create the instance in the space provided by |private_buf_|.
|
| - value = reinterpret_cast<subtle::AtomicWord>(
|
| - Traits::New(private_buf_.void_data()));
|
| + value = reinterpret_cast<subtle::AtomicWord>(Traits::New(&private_buf_));
|
| internal::CompleteLazyInstance(&private_instance_, value, this,
|
| Traits::kRegisterOnExit ? OnExit : NULL);
|
| }
|
| @@ -192,7 +191,7 @@ class LazyInstance {
|
| case 0:
|
| return p == NULL;
|
| case internal::kLazyInstanceStateCreating:
|
| - return static_cast<void*>(p) == private_buf_.void_data();
|
| + return static_cast<void*>(p) == &private_buf_;
|
| default:
|
| return p == instance();
|
| }
|
| @@ -204,7 +203,7 @@ class LazyInstance {
|
|
|
| subtle::AtomicWord private_instance_;
|
| // Preallocated space for the Type instance.
|
| - base::AlignedMemory<sizeof(Type), ALIGNOF(Type)> private_buf_;
|
| + typename std::aligned_storage<sizeof(Type), alignof(Type)>::type private_buf_;
|
|
|
| private:
|
| Type* instance() {
|
|
|