OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 #include "base/memory/aligned_memory.h" | 5 #include "base/memory/aligned_memory.h" |
6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 | 8 |
9 #define EXPECT_ALIGNED(ptr, align) \ | 9 #define EXPECT_ALIGNED(ptr, align) \ |
10 EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(ptr) & (align - 1)) | 10 EXPECT_EQ(0u, reinterpret_cast<uintptr_t>(ptr) & (align - 1)) |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 EXPECT_ALIGNED(raw256.void_data(), 256); | 44 EXPECT_ALIGNED(raw256.void_data(), 256); |
45 | 45 |
46 // TODO(ios): This test hits an armv7 bug in clang. crbug.com/138066 | 46 // TODO(ios): This test hits an armv7 bug in clang. crbug.com/138066 |
47 #if !(defined(OS_IOS) && defined(ARCH_CPU_ARM_FAMILY)) | 47 #if !(defined(OS_IOS) && defined(ARCH_CPU_ARM_FAMILY)) |
48 AlignedMemory<8, 4096> raw4096; | 48 AlignedMemory<8, 4096> raw4096; |
49 EXPECT_EQ(4096u, ALIGNOF(raw4096)); | 49 EXPECT_EQ(4096u, ALIGNOF(raw4096)); |
50 EXPECT_ALIGNED(raw4096.void_data(), 4096); | 50 EXPECT_ALIGNED(raw4096.void_data(), 4096); |
51 #endif // !(defined(OS_IOS) && defined(ARCH_CPU_ARM_FAMILY)) | 51 #endif // !(defined(OS_IOS) && defined(ARCH_CPU_ARM_FAMILY)) |
52 } | 52 } |
53 | 53 |
| 54 TEST(AlignedMemoryTest, DynamicAllocation) { |
| 55 void* p = base::AlignedAlloc(8, 8); |
| 56 EXPECT_TRUE(p); |
| 57 EXPECT_ALIGNED(p, 8); |
| 58 base::AlignedFree(p); |
| 59 |
| 60 p = base::AlignedAlloc(8, 16); |
| 61 EXPECT_TRUE(p); |
| 62 EXPECT_ALIGNED(p, 16); |
| 63 base::AlignedFree(p); |
| 64 |
| 65 p = base::AlignedAlloc(8, 256); |
| 66 EXPECT_TRUE(p); |
| 67 EXPECT_ALIGNED(p, 256); |
| 68 base::AlignedFree(p); |
| 69 |
| 70 p = base::AlignedAlloc(8, 4096); |
| 71 EXPECT_TRUE(p); |
| 72 EXPECT_ALIGNED(p, 4096); |
| 73 base::AlignedFree(p); |
| 74 } |
| 75 |
| 76 TEST(AlignedMemoryTest, ScopedDynamicAllocation) { |
| 77 scoped_ptr_malloc<float, base::ScopedPtrAlignedFree> p( |
| 78 static_cast<float*>(base::AlignedAlloc(8, 8))); |
| 79 EXPECT_TRUE(p.get()); |
| 80 EXPECT_ALIGNED(p.get(), 8); |
| 81 } |
| 82 |
54 } // namespace | 83 } // namespace |
OLD | NEW |