| Index: Source/platform/heap/HeapTest.cpp
|
| diff --git a/Source/platform/heap/HeapTest.cpp b/Source/platform/heap/HeapTest.cpp
|
| index 79e7d01e641633b71237bd57032f72528d1d4c4a..b0cc938c0a1af8471e22baafffd763ddeb8635b0 100644
|
| --- a/Source/platform/heap/HeapTest.cpp
|
| +++ b/Source/platform/heap/HeapTest.cpp
|
| @@ -222,11 +222,11 @@
|
| bool m_parkedAllThreads; // False if we fail to park all threads
|
| };
|
|
|
| -static size_t objectPayloadSize()
|
| +static void getHeapStats(HeapStats* stats)
|
| {
|
| TestGCScope scope(ThreadState::NoHeapPointersOnStack);
|
| EXPECT_TRUE(scope.allThreadsParked());
|
| - return Heap::objectPayloadSizeForTesting();
|
| + Heap::getStatsForTesting(stats);
|
| }
|
|
|
| #define DEFINE_VISITOR_METHODS(Type) \
|
| @@ -369,12 +369,14 @@
|
|
|
| // Do several GCs to make sure that later GCs don't free up old memory from
|
| // previously run tests in this process.
|
| -static void clearOutOldGarbage()
|
| +static void clearOutOldGarbage(HeapStats* heapStats)
|
| {
|
| while (true) {
|
| - size_t used = objectPayloadSize();
|
| + getHeapStats(heapStats);
|
| + size_t used = heapStats->totalObjectSpace();
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| - if (objectPayloadSize() >= used)
|
| + getHeapStats(heapStats);
|
| + if (heapStats->totalObjectSpace() >= used)
|
| break;
|
| }
|
| }
|
| @@ -1513,17 +1515,17 @@
|
|
|
| TEST(HeapTest, BasicFunctionality)
|
| {
|
| - clearOutOldGarbage();
|
| - size_t initialObjectPayloadSize = objectPayloadSize();
|
| + HeapStats heapStats;
|
| + clearOutOldGarbage(&heapStats);
|
| {
|
| size_t slack = 0;
|
|
|
| // When the test starts there may already have been leaked some memory
|
| // on the heap, so we establish a base line.
|
| - size_t baseLevel = initialObjectPayloadSize;
|
| + size_t baseLevel = heapStats.totalObjectSpace();
|
| bool testPagesAllocated = !baseLevel;
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(Heap::allocatedSpace(), 0ul);
|
| + EXPECT_EQ(heapStats.totalAllocatedSpace(), 0ul);
|
|
|
| // This allocates objects on the general heap which should add a page of memory.
|
| DynamicallySizedObject* alloc32 = DynamicallySizedObject::create(32);
|
| @@ -1535,9 +1537,10 @@
|
|
|
| size_t total = 96;
|
|
|
| - CheckWithSlack(baseLevel + total, objectPayloadSize(), slack);
|
| + getHeapStats(&heapStats);
|
| + CheckWithSlack(baseLevel + total, heapStats.totalObjectSpace(), slack);
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(Heap::allocatedSpace(), 2 * blinkPageSize);
|
| + EXPECT_EQ(heapStats.totalAllocatedSpace(), 2 * blinkPageSize);
|
|
|
| EXPECT_EQ(alloc32->get(0), 40);
|
| EXPECT_EQ(alloc32->get(31), 40);
|
| @@ -1552,13 +1555,13 @@
|
| EXPECT_EQ(alloc64->get(63), 27);
|
| }
|
|
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&heapStats);
|
| size_t total = 0;
|
| size_t slack = 0;
|
| - size_t baseLevel = objectPayloadSize();
|
| + size_t baseLevel = heapStats.totalObjectSpace();
|
| bool testPagesAllocated = !baseLevel;
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(Heap::allocatedSpace(), 0ul);
|
| + EXPECT_EQ(heapStats.totalAllocatedSpace(), 0ul);
|
|
|
| size_t big = 1008;
|
| Persistent<DynamicallySizedObject> bigArea = DynamicallySizedObject::create(big);
|
| @@ -1574,9 +1577,10 @@
|
| total += size;
|
| persistents[persistentCount++] = new Persistent<DynamicallySizedObject>(DynamicallySizedObject::create(size));
|
| slack += 4;
|
| - CheckWithSlack(baseLevel + total, objectPayloadSize(), slack);
|
| + getHeapStats(&heapStats);
|
| + CheckWithSlack(baseLevel + total, heapStats.totalObjectSpace(), slack);
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(0ul, Heap::allocatedSpace() & (blinkPageSize - 1));
|
| + EXPECT_EQ(0ul, heapStats.totalAllocatedSpace() & (blinkPageSize - 1));
|
| }
|
|
|
| {
|
| @@ -1589,30 +1593,33 @@
|
| EXPECT_TRUE(alloc32b != alloc64b);
|
|
|
| total += 96;
|
| - CheckWithSlack(baseLevel + total, objectPayloadSize(), slack);
|
| + getHeapStats(&heapStats);
|
| + CheckWithSlack(baseLevel + total, heapStats.totalObjectSpace(), slack);
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(0ul, Heap::allocatedSpace() & (blinkPageSize - 1));
|
| - }
|
| -
|
| - clearOutOldGarbage();
|
| + EXPECT_EQ(0ul, heapStats.totalAllocatedSpace() & (blinkPageSize - 1));
|
| + }
|
| +
|
| + clearOutOldGarbage(&heapStats);
|
| total -= 96;
|
| slack -= 8;
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(0ul, Heap::allocatedSpace() & (blinkPageSize - 1));
|
| + EXPECT_EQ(0ul, heapStats.totalAllocatedSpace() & (blinkPageSize - 1));
|
|
|
| // Clear the persistent, so that the big area will be garbage collected.
|
| bigArea.release();
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&heapStats);
|
|
|
| total -= big;
|
| slack -= 4;
|
| - CheckWithSlack(baseLevel + total, objectPayloadSize(), slack);
|
| + getHeapStats(&heapStats);
|
| + CheckWithSlack(baseLevel + total, heapStats.totalObjectSpace(), slack);
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(0ul, Heap::allocatedSpace() & (blinkPageSize - 1));
|
| -
|
| - CheckWithSlack(baseLevel + total, objectPayloadSize(), slack);
|
| + EXPECT_EQ(0ul, heapStats.totalAllocatedSpace() & (blinkPageSize - 1));
|
| +
|
| + getHeapStats(&heapStats);
|
| + CheckWithSlack(baseLevel + total, heapStats.totalObjectSpace(), slack);
|
| if (testPagesAllocated)
|
| - EXPECT_EQ(0ul, Heap::allocatedSpace() & (blinkPageSize - 1));
|
| + EXPECT_EQ(0ul, heapStats.totalAllocatedSpace() & (blinkPageSize - 1));
|
|
|
| for (size_t i = 0; i < persistentCount; i++) {
|
| delete persistents[i];
|
| @@ -1636,12 +1643,15 @@
|
|
|
| TEST(HeapTest, SimpleAllocation)
|
| {
|
| - clearOutOldGarbage();
|
| - EXPECT_EQ(0ul, objectPayloadSize());
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
| + EXPECT_EQ(0ul, initialHeapStats.totalObjectSpace());
|
|
|
| // Allocate an object in the heap.
|
| HeapAllocatedArray* array = new HeapAllocatedArray();
|
| - EXPECT_TRUE(objectPayloadSize() >= sizeof(HeapAllocatedArray));
|
| + HeapStats statsAfterAllocation;
|
| + getHeapStats(&statsAfterAllocation);
|
| + EXPECT_TRUE(statsAfterAllocation.totalObjectSpace() >= sizeof(HeapAllocatedArray));
|
|
|
| // Sanity check of the contents in the heap.
|
| EXPECT_EQ(0, array->at(0));
|
| @@ -1812,10 +1822,10 @@
|
|
|
| TEST(HeapTest, HashMapOfMembers)
|
| {
|
| + HeapStats initialHeapSize;
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| - clearOutOldGarbage();
|
| - size_t initialObjectPayloadSize = objectPayloadSize();
|
| + clearOutOldGarbage(&initialHeapSize);
|
| {
|
| typedef HeapHashMap<
|
| Member<IntWrapper>,
|
| @@ -1827,12 +1837,14 @@
|
| Persistent<HeapObjectIdentityMap> map = new HeapObjectIdentityMap();
|
|
|
| map->clear();
|
| - size_t afterSetWasCreated = objectPayloadSize();
|
| - EXPECT_TRUE(afterSetWasCreated > initialObjectPayloadSize);
|
| + HeapStats afterSetWasCreated;
|
| + getHeapStats(&afterSetWasCreated);
|
| + EXPECT_TRUE(afterSetWasCreated.totalObjectSpace() > initialHeapSize.totalObjectSpace());
|
|
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| - size_t afterGC = objectPayloadSize();
|
| - EXPECT_EQ(afterGC, afterSetWasCreated);
|
| + HeapStats afterGC;
|
| + getHeapStats(&afterGC);
|
| + EXPECT_EQ(afterGC.totalObjectSpace(), afterSetWasCreated.totalObjectSpace());
|
|
|
| // If the additions below cause garbage collections, these
|
| // pointers should be found by conservative stack scanning.
|
| @@ -1841,8 +1853,9 @@
|
|
|
| map->add(one, one);
|
|
|
| - size_t afterOneAdd = objectPayloadSize();
|
| - EXPECT_TRUE(afterOneAdd > afterGC);
|
| + HeapStats afterOneAdd;
|
| + getHeapStats(&afterOneAdd);
|
| + EXPECT_TRUE(afterOneAdd.totalObjectSpace() > afterGC.totalObjectSpace());
|
|
|
| HeapObjectIdentityMap::iterator it(map->begin());
|
| HeapObjectIdentityMap::iterator it2(map->begin());
|
| @@ -1858,8 +1871,9 @@
|
| // stack scanning as that could find a pointer to the
|
| // old backing.
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| - size_t afterAddAndGC = objectPayloadSize();
|
| - EXPECT_TRUE(afterAddAndGC >= afterOneAdd);
|
| + HeapStats afterAddAndGC;
|
| + getHeapStats(&afterAddAndGC);
|
| + EXPECT_TRUE(afterAddAndGC.totalObjectSpace() >= afterOneAdd.totalObjectSpace());
|
|
|
| EXPECT_EQ(map->size(), 2u); // Two different wrappings of '1' are distinct.
|
|
|
| @@ -1871,8 +1885,9 @@
|
| EXPECT_EQ(gotten->value(), one->value());
|
| EXPECT_EQ(gotten, one);
|
|
|
| - size_t afterGC2 = objectPayloadSize();
|
| - EXPECT_EQ(afterGC2, afterAddAndGC);
|
| + HeapStats afterGC2;
|
| + getHeapStats(&afterGC2);
|
| + EXPECT_EQ(afterGC2.totalObjectSpace(), afterAddAndGC.totalObjectSpace());
|
|
|
| IntWrapper* dozen = 0;
|
|
|
| @@ -1883,42 +1898,44 @@
|
| if (i == 12)
|
| dozen = iWrapper;
|
| }
|
| - size_t afterAdding1000 = objectPayloadSize();
|
| - EXPECT_TRUE(afterAdding1000 > afterGC2);
|
| + HeapStats afterAdding1000;
|
| + getHeapStats(&afterAdding1000);
|
| + EXPECT_TRUE(afterAdding1000.totalObjectSpace() > afterGC2.totalObjectSpace());
|
|
|
| IntWrapper* gross(map->get(dozen));
|
| EXPECT_EQ(gross->value(), 144);
|
|
|
| // This should clear out any junk backings created by all the adds.
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| - size_t afterGC3 = objectPayloadSize();
|
| - EXPECT_TRUE(afterGC3 <= afterAdding1000);
|
| + HeapStats afterGC3;
|
| + getHeapStats(&afterGC3);
|
| + EXPECT_TRUE(afterGC3.totalObjectSpace() <= afterAdding1000.totalObjectSpace());
|
| }
|
|
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| // The objects 'one', anotherOne, and the 999 other pairs.
|
| EXPECT_EQ(IntWrapper::s_destructorCalls, 2000);
|
| - size_t afterGC4 = objectPayloadSize();
|
| - EXPECT_EQ(afterGC4, initialObjectPayloadSize);
|
| + HeapStats afterGC4;
|
| + getHeapStats(&afterGC4);
|
| + EXPECT_EQ(afterGC4.totalObjectSpace(), initialHeapSize.totalObjectSpace());
|
| }
|
|
|
| TEST(HeapTest, NestedAllocation)
|
| {
|
| - clearOutOldGarbage();
|
| - size_t initialObjectPayloadSize = objectPayloadSize();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| {
|
| Persistent<ConstructorAllocation> constructorAllocation = ConstructorAllocation::create();
|
| }
|
| - clearOutOldGarbage();
|
| - size_t afterFree = objectPayloadSize();
|
| - EXPECT_TRUE(initialObjectPayloadSize == afterFree);
|
| + HeapStats afterFree;
|
| + clearOutOldGarbage(&afterFree);
|
| + EXPECT_TRUE(initialHeapSize == afterFree);
|
| }
|
|
|
| TEST(HeapTest, LargeObjects)
|
| {
|
| - clearOutOldGarbage();
|
| - size_t initialObjectPayloadSize = objectPayloadSize();
|
| - size_t initialAllocatedSpace = Heap::allocatedSpace();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| IntWrapper::s_destructorCalls = 0;
|
| LargeObject::s_destructorCalls = 0;
|
| {
|
| @@ -1933,38 +1950,41 @@
|
| EXPECT_NE(info, ThreadState::current()->findGCInfo(reinterpret_cast<Address>(object.get()) + sizeof(LargeObject)));
|
| EXPECT_NE(info, ThreadState::current()->findGCInfo(reinterpret_cast<Address>(object.get()) - 1));
|
| #endif
|
| - clearOutOldGarbage();
|
| - size_t afterAllocation = Heap::allocatedSpace();
|
| + HeapStats afterAllocation;
|
| + clearOutOldGarbage(&afterAllocation);
|
| {
|
| object->set(0, 'a');
|
| EXPECT_EQ('a', object->get(0));
|
| object->set(object->length() - 1, 'b');
|
| EXPECT_EQ('b', object->get(object->length() - 1));
|
| - size_t expectedObjectPayloadSize = sizeof(LargeObject) + sizeof(IntWrapper);
|
| - size_t actualObjectPayloadSize = objectPayloadSize() - initialObjectPayloadSize;
|
| - CheckWithSlack(expectedObjectPayloadSize, actualObjectPayloadSize, slack);
|
| + size_t expectedObjectSpace = sizeof(LargeObject) + sizeof(IntWrapper);
|
| + size_t actualObjectSpace =
|
| + afterAllocation.totalObjectSpace() - initialHeapSize.totalObjectSpace();
|
| + CheckWithSlack(expectedObjectSpace, actualObjectSpace, slack);
|
| // There is probably space for the IntWrapper in a heap page without
|
| // allocating extra pages. However, the IntWrapper allocation might cause
|
| // the addition of a heap page.
|
| size_t largeObjectAllocationSize =
|
| sizeof(LargeObject) + sizeof(LargeHeapObject<FinalizedHeapObjectHeader>) + sizeof(FinalizedHeapObjectHeader);
|
| - size_t allocatedSpaceLowerBound = initialAllocatedSpace + largeObjectAllocationSize;
|
| + size_t allocatedSpaceLowerBound =
|
| + initialHeapSize.totalAllocatedSpace() + largeObjectAllocationSize;
|
| size_t allocatedSpaceUpperBound = allocatedSpaceLowerBound + slack + blinkPageSize;
|
| - EXPECT_LE(allocatedSpaceLowerBound, afterAllocation);
|
| - EXPECT_LE(afterAllocation, allocatedSpaceUpperBound);
|
| + EXPECT_LE(allocatedSpaceLowerBound, afterAllocation.totalAllocatedSpace());
|
| + EXPECT_LE(afterAllocation.totalAllocatedSpace(), allocatedSpaceUpperBound);
|
| EXPECT_EQ(0, IntWrapper::s_destructorCalls);
|
| EXPECT_EQ(0, LargeObject::s_destructorCalls);
|
| for (int i = 0; i < 10; i++)
|
| object = LargeObject::create();
|
| }
|
| - clearOutOldGarbage();
|
| - EXPECT_TRUE(Heap::allocatedSpace() == afterAllocation);
|
| + HeapStats oneLargeObject;
|
| + clearOutOldGarbage(&oneLargeObject);
|
| + EXPECT_TRUE(oneLargeObject == afterAllocation);
|
| EXPECT_EQ(10, IntWrapper::s_destructorCalls);
|
| EXPECT_EQ(10, LargeObject::s_destructorCalls);
|
| }
|
| - clearOutOldGarbage();
|
| - EXPECT_TRUE(initialObjectPayloadSize == objectPayloadSize());
|
| - EXPECT_TRUE(initialAllocatedSpace == Heap::allocatedSpace());
|
| + HeapStats backToInitial;
|
| + clearOutOldGarbage(&backToInitial);
|
| + EXPECT_TRUE(initialHeapSize == backToInitial);
|
| EXPECT_EQ(11, IntWrapper::s_destructorCalls);
|
| EXPECT_EQ(11, LargeObject::s_destructorCalls);
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| @@ -2164,6 +2184,7 @@
|
|
|
| TEST(HeapTest, HeapCollectionTypes)
|
| {
|
| + HeapStats initialHeapSize;
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| typedef HeapHashMap<Member<IntWrapper>, Member<IntWrapper> > MemberMember;
|
| @@ -2203,7 +2224,7 @@
|
| Persistent<DequeUW> dequeUW2 = new DequeUW();
|
| Persistent<Container> container = Container::create();
|
|
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&initialHeapSize);
|
| {
|
| Persistent<IntWrapper> one(IntWrapper::create(1));
|
| Persistent<IntWrapper> two(IntWrapper::create(2));
|
| @@ -2486,7 +2507,8 @@
|
|
|
| TEST(HeapTest, HeapWeakCollectionSimple)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| PersistentHeapVector<Member<IntWrapper> > keepNumbersAlive;
|
| @@ -2547,7 +2569,8 @@
|
| template<typename Set>
|
| void orderedSetHelper(bool strong)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| PersistentHeapVector<Member<IntWrapper> > keepNumbersAlive;
|
| @@ -2706,7 +2729,8 @@
|
|
|
| static void heapMapDestructorHelper(bool clearMaps)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
| ThingWithDestructor::s_liveThingsWithDestructor = 0;
|
|
|
| typedef HeapHashMap<WeakMember<IntWrapper>, Member<RefCountedAndGarbageCollected> > RefMap;
|
| @@ -2930,6 +2954,7 @@
|
|
|
| TEST(HeapTest, HeapWeakCollectionTypes)
|
| {
|
| + HeapStats initialHeapSize;
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| typedef HeapHashMap<WeakMember<IntWrapper>, Member<IntWrapper> > WeakStrong;
|
| @@ -2938,7 +2963,7 @@
|
| typedef HeapHashSet<WeakMember<IntWrapper> > WeakSet;
|
| typedef HeapLinkedHashSet<WeakMember<IntWrapper> > WeakOrderedSet;
|
|
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&initialHeapSize);
|
|
|
| const int weakStrongIndex = 0;
|
| const int strongWeakIndex = 1;
|
| @@ -3324,7 +3349,8 @@
|
|
|
| TEST(HeapTest, CheckAndMarkPointer)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
|
|
| Vector<Address> objectAddresses;
|
| Vector<Address> endAddresses;
|
| @@ -3367,7 +3393,7 @@
|
| // This forces a GC without stack scanning which results in the objects
|
| // being collected. This will also rebuild the above mentioned freelists,
|
| // however we don't rely on that below since we don't have any allocations.
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&initialHeapStats);
|
| {
|
| TestGCScope scope(ThreadState::HeapPointersOnStack);
|
| EXPECT_TRUE(scope.allThreadsParked());
|
| @@ -3391,12 +3417,13 @@
|
| }
|
| // This round of GC is important to make sure that the object start
|
| // bitmap are cleared out and that the free lists are rebuild.
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&initialHeapStats);
|
| }
|
|
|
| TEST(HeapTest, VisitOffHeapCollections)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
| IntWrapper::s_destructorCalls = 0;
|
| Persistent<OffHeapContainer> container = OffHeapContainer::create();
|
| Heap::collectGarbage(ThreadState::NoHeapPointersOnStack);
|
| @@ -3408,6 +3435,7 @@
|
|
|
| TEST(HeapTest, PersistentHeapCollectionTypes)
|
| {
|
| + HeapStats initialHeapSize;
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| typedef HeapVector<Member<IntWrapper> > Vec;
|
| @@ -3419,7 +3447,7 @@
|
| typedef PersistentHeapHashMap<WeakMember<IntWrapper>, Member<IntWrapper> > WeakPMap;
|
| typedef PersistentHeapDeque<Member<IntWrapper> > PDeque;
|
|
|
| - clearOutOldGarbage();
|
| + clearOutOldGarbage(&initialHeapSize);
|
| {
|
| PVec pVec;
|
| PDeque pDeque;
|
| @@ -3501,7 +3529,8 @@
|
|
|
| TEST(HeapTest, CollectionNesting)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialStats;
|
| + clearOutOldGarbage(&initialStats);
|
| int* key = &IntWrapper::s_destructorCalls;
|
| IntWrapper::s_destructorCalls = 0;
|
| typedef HeapVector<Member<IntWrapper> > IntVector;
|
| @@ -3545,7 +3574,8 @@
|
|
|
| TEST(HeapTest, GarbageCollectedMixin)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapStats;
|
| + clearOutOldGarbage(&initialHeapStats);
|
|
|
| Persistent<UseMixin> usemixin = UseMixin::create();
|
| EXPECT_EQ(0, UseMixin::s_traceCount);
|
| @@ -3565,7 +3595,8 @@
|
|
|
| TEST(HeapTest, CollectionNesting2)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialStats;
|
| + clearOutOldGarbage(&initialStats);
|
| void* key = &IntWrapper::s_destructorCalls;
|
| IntWrapper::s_destructorCalls = 0;
|
| typedef HeapHashSet<Member<IntWrapper> > IntSet;
|
| @@ -3587,7 +3618,8 @@
|
|
|
| TEST(HeapTest, CollectionNesting3)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialStats;
|
| + clearOutOldGarbage(&initialStats);
|
| IntWrapper::s_destructorCalls = 0;
|
| typedef HeapVector<Member<IntWrapper> > IntVector;
|
| typedef HeapDeque<Member<IntWrapper> > IntDeque;
|
| @@ -3617,7 +3649,8 @@
|
|
|
| TEST(HeapTest, EmbeddedInVector)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialStats;
|
| + clearOutOldGarbage(&initialStats);
|
| SimpleFinalizedObject::s_destructorCalls = 0;
|
| {
|
| PersistentHeapVector<VectorObject, 2> inlineVector;
|
| @@ -3656,7 +3689,8 @@
|
|
|
| TEST(HeapTest, EmbeddedInDeque)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialStats;
|
| + clearOutOldGarbage(&initialStats);
|
| SimpleFinalizedObject::s_destructorCalls = 0;
|
| {
|
| PersistentHeapDeque<VectorObject, 2> inlineDeque;
|
| @@ -3715,7 +3749,8 @@
|
|
|
| TEST(HeapTest, HeapTerminatedArray)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| HeapTerminatedArray<TerminatedArrayItem>* arr = 0;
|
| @@ -3769,7 +3804,8 @@
|
|
|
| TEST(HeapTest, HeapLinkedStack)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| IntWrapper::s_destructorCalls = 0;
|
|
|
| HeapLinkedStack<TerminatedArrayItem>* stack = new HeapLinkedStack<TerminatedArrayItem>();
|
| @@ -3796,7 +3832,8 @@
|
|
|
| TEST(HeapTest, AllocationDuringFinalization)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| IntWrapper::s_destructorCalls = 0;
|
| OneKiloByteObject::s_destructorCalls = 0;
|
|
|
| @@ -3952,7 +3989,8 @@
|
| EXPECT_TRUE(s_isMixinTrue);
|
| EXPECT_FALSE(s_isMixinFalse);
|
|
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| IntWrapper::s_destructorCalls = 0;
|
| MultipleMixins* obj = new MultipleMixins();
|
| {
|
| @@ -4107,7 +4145,8 @@
|
| {
|
| typedef HeapHashMap<PairWithWeakHandling, RefPtr<OffHeapInt> > Map;
|
| typedef Map::iterator Iterator;
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| OffHeapInt::s_destructorCalls = 0;
|
|
|
| Persistent<Map> map1(new Map());
|
| @@ -4176,7 +4215,8 @@
|
| {
|
| typedef HeapHashMap<RefPtr<OffHeapInt>, PairWithWeakHandling> Map;
|
| typedef Map::iterator Iterator;
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| OffHeapInt::s_destructorCalls = 0;
|
|
|
| Persistent<Map> map1(new Map());
|
| @@ -4320,7 +4360,8 @@
|
| // HeapHashSet.
|
| TEST(HeapTest, RemoveEmptySets)
|
| {
|
| - clearOutOldGarbage();
|
| + HeapStats initialHeapSize;
|
| + clearOutOldGarbage(&initialHeapSize);
|
| OffHeapInt::s_destructorCalls = 0;
|
|
|
| Persistent<IntWrapper> livingInt(IntWrapper::create(42));
|
|
|