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

Unified Diff: base/memory/discardable_memory_allocator_android_unittest.cc

Issue 136723005: Align ashmem region sizes to page size after ashmem creation failed. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address William's comments Created 6 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/memory/discardable_memory_allocator_android.cc ('k') | base/memory/discardable_memory_android.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/discardable_memory_allocator_android_unittest.cc
diff --git a/base/memory/discardable_memory_allocator_android_unittest.cc b/base/memory/discardable_memory_allocator_android_unittest.cc
index d800598d42a9240cf2131bd3e29d3f6fc6294c33..1da510d4226a2a4481526e229442bedd9fcd7c53 100644
--- a/base/memory/discardable_memory_allocator_android_unittest.cc
+++ b/base/memory/discardable_memory_allocator_android_unittest.cc
@@ -23,6 +23,9 @@ const char kAllocatorName[] = "allocator-for-testing";
const size_t kAshmemRegionSizeForTesting = 32 * 1024 * 1024;
const size_t kPageSize = 4096;
+const size_t kMaxAllowedAllocationSize =
+ std::numeric_limits<size_t>::max() - kPageSize + 1;
+
class DiscardableMemoryAllocatorTest : public testing::Test {
protected:
DiscardableMemoryAllocatorTest()
@@ -52,10 +55,8 @@ TEST_F(DiscardableMemoryAllocatorTest, ZeroAllocationIsNotSupported) {
}
TEST_F(DiscardableMemoryAllocatorTest, TooLargeAllocationFails) {
- const size_t max_allowed_allocation_size =
- std::numeric_limits<size_t>::max() - kPageSize + 1;
scoped_ptr<DiscardableMemory> memory(
- allocator_.Allocate(max_allowed_allocation_size + 1));
+ allocator_.Allocate(kMaxAllowedAllocationSize + 1));
// Page-alignment would have caused an overflow resulting in a small
// allocation if the input size wasn't checked correctly.
ASSERT_FALSE(memory);
@@ -63,17 +64,28 @@ TEST_F(DiscardableMemoryAllocatorTest, TooLargeAllocationFails) {
TEST_F(DiscardableMemoryAllocatorTest,
AshmemRegionsAreNotSmallerThanRequestedSize) {
- const size_t size = std::numeric_limits<size_t>::max() - kPageSize + 1;
// The creation of the underlying ashmem region is expected to fail since
// there should not be enough room in the address space. When ashmem creation
// fails, the allocator repetitively retries by dividing the size by 2. This
// size should not be smaller than the size the user requested so the
// allocation here should just fail (and not succeed with the minimum ashmem
// region size).
- scoped_ptr<DiscardableMemory> memory(allocator_.Allocate(size));
+ scoped_ptr<DiscardableMemory> memory(
+ allocator_.Allocate(kMaxAllowedAllocationSize));
ASSERT_FALSE(memory);
}
+TEST_F(DiscardableMemoryAllocatorTest, AshmemRegionsAreAlwaysPageAligned) {
+ // Use a separate allocator here so that we can override the ashmem region
+ // size.
+ DiscardableMemoryAllocator allocator(
+ kAllocatorName, kMaxAllowedAllocationSize);
+ scoped_ptr<DiscardableMemory> memory(allocator.Allocate(kPageSize));
+ ASSERT_TRUE(memory);
+ EXPECT_GT(kMaxAllowedAllocationSize, allocator.last_ashmem_region_size());
+ ASSERT_TRUE(allocator.last_ashmem_region_size() % kPageSize == 0);
+}
+
TEST_F(DiscardableMemoryAllocatorTest, LargeAllocation) {
// Note that large allocations should just use DiscardableMemoryAndroidSimple
// instead.
« no previous file with comments | « base/memory/discardable_memory_allocator_android.cc ('k') | base/memory/discardable_memory_android.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698