| Index: base/trace_event/heap_profiler_allocation_register_unittest.cc
|
| diff --git a/base/trace_event/heap_profiler_allocation_register_unittest.cc b/base/trace_event/heap_profiler_allocation_register_unittest.cc
|
| index b356aa7853bc7e0e1e52c72df82e77fc8f40cf9f..4668df31dd403514dc920ece26c30ab325d9878e 100644
|
| --- a/base/trace_event/heap_profiler_allocation_register_unittest.cc
|
| +++ b/base/trace_event/heap_profiler_allocation_register_unittest.cc
|
| @@ -16,7 +16,10 @@ namespace trace_event {
|
|
|
| class AllocationRegisterTest : public testing::Test {
|
| public:
|
| - static const uint32_t kNumBuckets = AllocationRegister::kNumBuckets;
|
| + // Use a lower number of cells for unittests to avoid reserving a virtual
|
| + // region which is too big.
|
| + static const uint32_t kNumCellsForTesting =
|
| + AllocationRegister::kNumBuckets + 100;
|
|
|
| // Returns the number of cells that the |AllocationRegister| can store per
|
| // system page.
|
| @@ -56,7 +59,7 @@ size_t SumAllSizes(const AllocationRegister& reg) {
|
| }
|
|
|
| TEST_F(AllocationRegisterTest, InsertRemove) {
|
| - AllocationRegister reg;
|
| + AllocationRegister reg(kNumCellsForTesting);
|
| AllocationContext ctx;
|
|
|
| // Zero-sized allocations should be discarded.
|
| @@ -90,7 +93,7 @@ TEST_F(AllocationRegisterTest, InsertRemove) {
|
| }
|
|
|
| TEST_F(AllocationRegisterTest, DoubleFreeIsAllowed) {
|
| - AllocationRegister reg;
|
| + AllocationRegister reg(kNumCellsForTesting);
|
| AllocationContext ctx;
|
|
|
| reg.Insert(reinterpret_cast<void*>(1), 1, ctx);
|
| @@ -103,9 +106,7 @@ TEST_F(AllocationRegisterTest, DoubleFreeIsAllowed) {
|
| }
|
|
|
| TEST_F(AllocationRegisterTest, DoubleInsertOverwrites) {
|
| - // TODO(ruuda): Although double insert happens in practice, it should not.
|
| - // Find out the cause and ban double insert if possible.
|
| - AllocationRegister reg;
|
| + AllocationRegister reg(kNumCellsForTesting);
|
| AllocationContext ctx;
|
| StackFrame frame1 = StackFrame::FromTraceEventName("Foo");
|
| StackFrame frame2 = StackFrame::FromTraceEventName("Bar");
|
| @@ -139,12 +140,12 @@ TEST_F(AllocationRegisterTest, DoubleInsertOverwrites) {
|
| // register still behaves correctly.
|
| TEST_F(AllocationRegisterTest, InsertRemoveCollisions) {
|
| size_t expected_sum = 0;
|
| - AllocationRegister reg;
|
| + AllocationRegister reg(kNumCellsForTesting);
|
| AllocationContext ctx;
|
|
|
| // By inserting 100 more entries than the number of buckets, there will be at
|
| - // least 100 collisions.
|
| - for (uintptr_t i = 1; i <= kNumBuckets + 100; i++) {
|
| + // least 100 collisions (100 = kNumCellsForTesting - kNumBuckets).
|
| + for (uintptr_t i = 1; i <= kNumCellsForTesting; i++) {
|
| size_t size = i % 31;
|
| expected_sum += size;
|
| reg.Insert(reinterpret_cast<void*>(i), size, ctx);
|
| @@ -156,7 +157,7 @@ TEST_F(AllocationRegisterTest, InsertRemoveCollisions) {
|
|
|
| EXPECT_EQ(expected_sum, SumAllSizes(reg));
|
|
|
| - for (uintptr_t i = 1; i <= kNumBuckets + 100; i++) {
|
| + for (uintptr_t i = 1; i <= kNumCellsForTesting; i++) {
|
| size_t size = i % 31;
|
| expected_sum -= size;
|
| reg.Remove(reinterpret_cast<void*>(i));
|
| @@ -176,7 +177,7 @@ TEST_F(AllocationRegisterTest, InsertRemoveCollisions) {
|
| // free list is utilised properly.
|
| TEST_F(AllocationRegisterTest, InsertRemoveRandomOrder) {
|
| size_t expected_sum = 0;
|
| - AllocationRegister reg;
|
| + AllocationRegister reg(kNumCellsForTesting);
|
| AllocationContext ctx;
|
|
|
| uintptr_t generator = 3;
|
| @@ -217,7 +218,7 @@ TEST_F(AllocationRegisterTest, InsertRemoveRandomOrder) {
|
| TEST_F(AllocationRegisterTest, ChangeContextAfterInsertion) {
|
| using Allocation = AllocationRegister::Allocation;
|
| const char kStdString[] = "std::string";
|
| - AllocationRegister reg;
|
| + AllocationRegister reg(kNumCellsForTesting);
|
| AllocationContext ctx;
|
|
|
| reg.Insert(reinterpret_cast<void*>(17), 1, ctx);
|
|
|