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

Unified Diff: Source/platform/heap/HeapTest.cpp

Issue 1236183002: Oilpan: Replace Heap::collectGarbage(...) with a helper function (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 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 | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/platform/heap/HeapTest.cpp
diff --git a/Source/platform/heap/HeapTest.cpp b/Source/platform/heap/HeapTest.cpp
index 41beeb9f9fd9bcd6e70851161f4fc78808a0a143..297a3c1bf480e0adcb933d32987dedfadd9783b7 100644
--- a/Source/platform/heap/HeapTest.cpp
+++ b/Source/platform/heap/HeapTest.cpp
@@ -48,6 +48,16 @@
namespace blink {
+static void preciselyCollectGarbage()
+{
+ Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+}
+
+static void conservativelyCollectGarbage()
+{
+ Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+}
+
class IntWrapper : public GarbageCollectedFinalized<IntWrapper> {
public:
static IntWrapper* create(int x)
@@ -410,7 +420,7 @@ static void clearOutOldGarbage()
{
while (true) {
size_t used = Heap::objectPayloadSizeForTesting();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
if (Heap::objectPayloadSizeForTesting() >= used)
break;
}
@@ -530,7 +540,7 @@ protected:
}
if (gcCount < gcPerThread) {
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
gcCount++;
atomicIncrement(&m_gcCount);
}
@@ -539,7 +549,7 @@ protected:
// TODO(haraken): This snapshot GC causes crashes, so disable
// it at the moment. Fix the crash and enable it.
// Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::TakeSnapshot, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(wrapper->value(), 0x0bbac0de);
EXPECT_EQ((*globalPersistent)->value(), 0x0ed0cabb);
}
@@ -585,7 +595,7 @@ private:
}
if (gcCount < gcPerThread) {
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
gcCount++;
atomicIncrement(&m_gcCount);
}
@@ -594,7 +604,7 @@ private:
// TODO(haraken): This snapshot GC causes crashes, so disable
// it at the moment. Fix the crash and enable it.
// Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::TakeSnapshot, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(weakMap->isEmpty());
EXPECT_TRUE(weakMap2.isEmpty());
}
@@ -1406,7 +1416,7 @@ public:
void doStuff(PassRefPtrWillBeRawPtr<SuperClass> targetPass, PointsBack* pointsBack, int superClassCount)
{
RefPtrWillBeRawPtr<SuperClass> target = targetPass;
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(pointsBack, target->pointsBack());
EXPECT_EQ(superClassCount, SuperClass::s_aliveCount);
}
@@ -1684,10 +1694,10 @@ TEST(HeapTest, Transition)
{
RefPtrWillBePersistent<TransitionRefCounted> refCounted = TransitionRefCounted::create();
EXPECT_EQ(1, TransitionRefCounted::s_aliveCount);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, TransitionRefCounted::s_aliveCount);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, TransitionRefCounted::s_aliveCount);
RefPtrWillBePersistent<PointsBack> pointsBack1 = PointsBack::create();
@@ -1699,7 +1709,7 @@ TEST(HeapTest, Transition)
EXPECT_EQ(1, SubClass::s_aliveCount);
EXPECT_EQ(1, SubData::s_aliveCount);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, TransitionRefCounted::s_aliveCount);
EXPECT_EQ(2, PointsBack::s_aliveCount);
EXPECT_EQ(2, SuperClass::s_aliveCount);
@@ -1707,7 +1717,7 @@ TEST(HeapTest, Transition)
EXPECT_EQ(1, SubData::s_aliveCount);
superClass->doStuff(superClass.release(), pointsBack1.get(), 2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, PointsBack::s_aliveCount);
EXPECT_EQ(1, SuperClass::s_aliveCount);
EXPECT_EQ(1, SubClass::s_aliveCount);
@@ -1715,14 +1725,14 @@ TEST(HeapTest, Transition)
EXPECT_EQ(0, pointsBack1->backPointer());
pointsBack1.release();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, PointsBack::s_aliveCount);
EXPECT_EQ(1, SuperClass::s_aliveCount);
EXPECT_EQ(1, SubClass::s_aliveCount);
EXPECT_EQ(1, SubData::s_aliveCount);
subClass->doStuff(subClass.release(), pointsBack2.get(), 1);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, PointsBack::s_aliveCount);
EXPECT_EQ(0, SuperClass::s_aliveCount);
EXPECT_EQ(0, SubClass::s_aliveCount);
@@ -1730,7 +1740,7 @@ TEST(HeapTest, Transition)
EXPECT_EQ(0, pointsBack2->backPointer());
pointsBack2.release();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, PointsBack::s_aliveCount);
EXPECT_EQ(0, SuperClass::s_aliveCount);
EXPECT_EQ(0, SubClass::s_aliveCount);
@@ -1787,7 +1797,7 @@ TEST(HeapTest, BasicFunctionality)
EXPECT_EQ(alloc64->get(0), 27);
EXPECT_EQ(alloc64->get(63), 27);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(alloc32->get(0), 40);
EXPECT_EQ(alloc32->get(31), 40);
@@ -1898,13 +1908,13 @@ TEST(HeapTest, SimplePersistent)
Persistent<TraceCounter> traceCounter = TraceCounter::create();
EXPECT_EQ(0, traceCounter->traceCount());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, traceCounter->traceCount());
Persistent<ClassWithMember> classWithMember = ClassWithMember::create();
EXPECT_EQ(0, classWithMember->traceCount());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, classWithMember->traceCount());
EXPECT_EQ(2, traceCounter->traceCount());
}
@@ -1914,11 +1924,11 @@ TEST(HeapTest, SimpleFinalization)
{
Persistent<SimpleFinalizedObject> finalized = SimpleFinalizedObject::create();
EXPECT_EQ(0, SimpleFinalizedObject::s_destructorCalls);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, SimpleFinalizedObject::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, SimpleFinalizedObject::s_destructorCalls);
}
@@ -1930,7 +1940,7 @@ TEST(HeapTest, FreelistReuse)
for (int i = 0; i < 100; i++)
new IntWrapper(i);
IntWrapper* p1 = new IntWrapper(100);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// In non-production builds, we delay reusing freed memory for at least
// one GC cycle.
for (int i = 0; i < 100; i++) {
@@ -1938,8 +1948,8 @@ TEST(HeapTest, FreelistReuse)
EXPECT_NE(p1, p2);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
// Now the freed memory in the first GC should be reused.
bool reusedMemoryFound = false;
for (int i = 0; i < 10000; i++) {
@@ -1967,7 +1977,7 @@ TEST(HeapTest, LazySweepingPages)
for (int i = 0; i < 10000; i++)
SimpleFinalizedObject::create();
EXPECT_EQ(1000, SimpleFinalizedObject::s_destructorCalls);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(11000, SimpleFinalizedObject::s_destructorCalls);
}
@@ -1982,8 +1992,8 @@ TEST(HeapTest, LazySweepingLargeObjectPages)
new IntWrapper(i);
}
Persistent<IntWrapper> p2 = new IntWrapper(2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
LargeHeapObject::s_destructorCalls = 0;
EXPECT_EQ(0, LargeHeapObject::s_destructorCalls);
@@ -2000,7 +2010,7 @@ TEST(HeapTest, LazySweepingLargeObjectPages)
EXPECT_EQ(10, LargeHeapObject::s_destructorCalls);
Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithoutSweep, Heap::ForcedGC);
EXPECT_EQ(10, LargeHeapObject::s_destructorCalls);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(22, LargeHeapObject::s_destructorCalls);
}
@@ -2093,11 +2103,11 @@ TEST(HeapTest, Finalization)
}
// Nothing is marked so the GC should free everything and call
// the finalizer on all three objects.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, HeapTestSubClass::s_destructorCalls);
EXPECT_EQ(3, HeapTestSuperClass::s_destructorCalls);
// Destructors not called again when GCing again.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, HeapTestSubClass::s_destructorCalls);
EXPECT_EQ(3, HeapTestSuperClass::s_destructorCalls);
}
@@ -2131,19 +2141,19 @@ TEST(HeapTest, Members)
Persistent<Baz> h2;
{
h1 = Baz::create(Bar::create());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, Bar::s_live);
h2 = Baz::create(Bar::create());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2u, Bar::s_live);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2u, Bar::s_live);
h1->clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, Bar::s_live);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live);
}
@@ -2159,14 +2169,14 @@ TEST(HeapTest, MarkTest)
ASSERT(ThreadState::current()->findPageFromAddress(foo));
EXPECT_EQ(2u, Bar::s_live);
EXPECT_TRUE(reinterpret_cast<Address>(foo) != reinterpret_cast<Address>(bar.get()));
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(foo != bar); // To make sure foo is kept alive.
EXPECT_EQ(2u, Bar::s_live);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, Bar::s_live);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live);
}
@@ -2186,11 +2196,11 @@ TEST(HeapTest, DeepTest)
ASSERT(ThreadState::current()->findPageFromAddress(foo));
}
EXPECT_EQ(depth + 2, Bar::s_live);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(foo != bar); // To make sure foo and bar are kept alive.
EXPECT_EQ(depth + 2, Bar::s_live);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live);
}
@@ -2201,14 +2211,14 @@ TEST(HeapTest, WideTest)
Bars* bars = Bars::create();
unsigned width = Bars::width;
EXPECT_EQ(width + 1, Bar::s_live);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(width + 1, Bar::s_live);
// Use bars here to make sure that it will be on the stack
// for the conservative stack scan to find.
EXPECT_EQ(width, bars->getWidth());
}
EXPECT_EQ(Bars::width + 1, Bar::s_live);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live);
}
@@ -2232,7 +2242,7 @@ TEST(HeapTest, HashMapOfMembers)
size_t afterSetWasCreated = Heap::objectPayloadSizeForTesting();
EXPECT_TRUE(afterSetWasCreated > initialObjectPayloadSize);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
size_t afterGC = Heap::objectPayloadSizeForTesting();
EXPECT_EQ(afterGC, afterSetWasCreated);
@@ -2259,13 +2269,13 @@ TEST(HeapTest, HashMapOfMembers)
// backing store. We make sure to not use conservative
// stack scanning as that could find a pointer to the
// old backing.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
size_t afterAddAndGC = Heap::objectPayloadSizeForTesting();
EXPECT_TRUE(afterAddAndGC >= afterOneAdd);
EXPECT_EQ(map->size(), 2u); // Two different wrappings of '1' are distinct.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(map->contains(one));
EXPECT_TRUE(map->contains(anotherOne));
@@ -2292,12 +2302,12 @@ TEST(HeapTest, HashMapOfMembers)
EXPECT_EQ(gross->value(), 144);
// This should clear out any junk backings created by all the adds.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
size_t afterGC3 = Heap::objectPayloadSizeForTesting();
EXPECT_TRUE(afterGC3 <= afterAdding1000);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The objects 'one', anotherOne, and the 999 other pairs.
EXPECT_EQ(IntWrapper::s_destructorCalls, 2000);
size_t afterGC4 = Heap::objectPayloadSizeForTesting();
@@ -2369,7 +2379,7 @@ TEST(HeapTest, LargeHeapObjects)
EXPECT_TRUE(initialAllocatedSpace == Heap::allocatedSpace());
EXPECT_EQ(11, IntWrapper::s_destructorCalls);
EXPECT_EQ(11, LargeHeapObject::s_destructorCalls);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
}
typedef std::pair<Member<IntWrapper>, int> PairWrappedUnwrapped;
@@ -2446,20 +2456,20 @@ TEST(HeapTest, HeapVectorWithInlineCapacity)
HeapVector<Member<IntWrapper>, 2> vector;
vector.append(one);
vector.append(two);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(vector.contains(one));
EXPECT_TRUE(vector.contains(two));
vector.append(three);
vector.append(four);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(vector.contains(one));
EXPECT_TRUE(vector.contains(two));
EXPECT_TRUE(vector.contains(three));
EXPECT_TRUE(vector.contains(four));
vector.shrink(1);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(vector.contains(one));
EXPECT_FALSE(vector.contains(two));
EXPECT_FALSE(vector.contains(three));
@@ -2472,7 +2482,7 @@ TEST(HeapTest, HeapVectorWithInlineCapacity)
vector1.append(one);
vector2.append(two);
vector1.swap(vector2);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(vector1.contains(two));
EXPECT_TRUE(vector2.contains(one));
}
@@ -2487,7 +2497,7 @@ TEST(HeapTest, HeapVectorWithInlineCapacity)
vector2.append(five);
vector2.append(six);
vector1.swap(vector2);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(vector1.contains(three));
EXPECT_TRUE(vector1.contains(four));
EXPECT_TRUE(vector1.contains(five));
@@ -2680,7 +2690,7 @@ TEST(HeapTest, HeapCollectionTypes)
// Collect garbage. This should change nothing since we are keeping
// alive the IntWrapper objects with on-stack pointers.
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_TRUE(dequeContains(*deque, oneB));
@@ -2802,7 +2812,7 @@ TEST(HeapTest, HeapCollectionTypes)
EXPECT_FALSE(dequeContains(*dequeUW2, PairUnwrappedWrapped(103, &*threeF)));
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(4u, memberMember->size());
EXPECT_EQ(0u, memberMember2->size());
@@ -2836,8 +2846,8 @@ TEST(HeapTest, HeapCollectionTypes)
EXPECT_EQ(3, deque->begin()->get()->value());
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
EXPECT_EQ(4u, memberMember->size());
EXPECT_EQ(4u, primitiveMember->size());
@@ -2968,7 +2978,7 @@ TEST(HeapTest, HeapWeakCollectionSimple)
keepNumbersAlive[0] = nullptr;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, weakStrong->size());
EXPECT_EQ(0u, strongWeak->size());
@@ -3068,7 +3078,7 @@ void orderedSetHelper(bool strong)
keepNumbersAlive[0] = nullptr;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2u + (strong ? 1u : 0u), set1->size());
@@ -3157,8 +3167,8 @@ static void heapMapDestructorHelper(bool clearMaps)
Map stackMap;
RefMap stackRefMap;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
stackMap.add(IntWrapper::create(42), ThingWithDestructor(1729));
stackMap.add(luck, ThingWithDestructor(8128));
@@ -3175,8 +3185,8 @@ static void heapMapDestructorHelper(bool clearMaps)
// The RefCountedAndGarbageCollected things need an extra GC to discover
// that they are no longer ref counted.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
EXPECT_EQ(baseLine - 2, ThingWithDestructor::s_liveThingsWithDestructor);
EXPECT_EQ(refBaseLine + 2, RefCountedAndGarbageCollected::s_destructorCalls);
@@ -3198,15 +3208,15 @@ static void heapMapDestructorHelper(bool clearMaps)
} else {
map.clear(); // Clear Persistent handle, not map.
refMap.clear(); // Clear Persistent handle, not map.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
}
EXPECT_EQ(baseLine - 2, ThingWithDestructor::s_liveThingsWithDestructor);
// Need a GC to make sure that the RefCountedAndGarbageCollected thing
// noticies it's been decremented to zero.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(refBaseLine + 2, RefCountedAndGarbageCollected::s_destructorCalls);
}
@@ -3325,7 +3335,7 @@ void weakPairsHelper()
checkPairSets<WSSet, SWSet, WUSet, UWSet>(weakStrong, strongWeak, weakUnwrapped, unwrappedWeak, true, two);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
checkPairSets<WSSet, SWSet, WUSet, UWSet>(weakStrong, strongWeak, weakUnwrapped, unwrappedWeak, false, two);
}
@@ -3417,7 +3427,7 @@ TEST(HeapTest, HeapWeakCollectionTypes)
// Collect garbage. This should change nothing since we are keeping
// alive the IntWrapper objects.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(64u, weakStrong->size());
EXPECT_EQ(64u, strongWeak->size());
@@ -3457,7 +3467,7 @@ TEST(HeapTest, HeapWeakCollectionTypes)
WeakOrderedSet::iterator it5 = weakOrderedSet->begin();
// Collect garbage. This should change nothing since the
// iterators make the collections strong.
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
if (collectionNumber == weakStrongIndex) {
EXPECT_EQ(64u, weakStrong->size());
MapIteratorCheck(it1, weakStrong->end(), 64);
@@ -3477,7 +3487,7 @@ TEST(HeapTest, HeapWeakCollectionTypes)
} else {
// Collect garbage. This causes weak processing to remove
// things from the collections.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
unsigned count = 0;
for (int i = 0; i < 128; i += 2) {
bool firstAlive = keepNumbersAlive[i];
@@ -3545,7 +3555,7 @@ TEST(HeapTest, HeapWeakCollectionTypes)
}
for (unsigned i = 0; i < 128 + added; i++)
keepNumbersAlive[i] = nullptr;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, weakStrong->size());
EXPECT_EQ(0u, strongWeak->size());
EXPECT_EQ(0u, weakWeak->size());
@@ -3565,24 +3575,24 @@ TEST(HeapTest, RefCountedGarbageCollected)
{
Persistent<RefCountedAndGarbageCollected> refPtr1 = RefCountedAndGarbageCollected::create();
Persistent<RefCountedAndGarbageCollected> refPtr2 = RefCountedAndGarbageCollected::create();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, RefCountedAndGarbageCollected::s_destructorCalls);
persistent = refPtr1.get();
}
// Reference count is zero for both objects but one of
// them is kept alive by a persistent handle.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, RefCountedAndGarbageCollected::s_destructorCalls);
refPtr3 = persistent.get();
}
// The persistent handle is gone but the ref count has been
// increased to 1.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, RefCountedAndGarbageCollected::s_destructorCalls);
}
// Both persistent handle is gone and ref count is zero so the
// object can be collected.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, RefCountedAndGarbageCollected::s_destructorCalls);
}
@@ -3603,11 +3613,11 @@ TEST(HeapTest, RefCountedGarbageCollectedWithStackPointers)
ThreadState::current()->visitPersistents(&visitor);
EXPECT_TRUE(visitor.validate());
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, RefCountedAndGarbageCollected::s_destructorCalls);
EXPECT_EQ(0, RefCountedAndGarbageCollected2::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, RefCountedAndGarbageCollected::s_destructorCalls);
EXPECT_EQ(0, RefCountedAndGarbageCollected2::s_destructorCalls);
@@ -3626,17 +3636,17 @@ TEST(HeapTest, RefCountedGarbageCollectedWithStackPointers)
ThreadState::current()->visitPersistents(&visitor);
EXPECT_TRUE(visitor.validate());
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, RefCountedAndGarbageCollected::s_destructorCalls);
EXPECT_EQ(0, RefCountedAndGarbageCollected2::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, RefCountedAndGarbageCollected::s_destructorCalls);
EXPECT_EQ(0, RefCountedAndGarbageCollected2::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, RefCountedAndGarbageCollected::s_destructorCalls);
EXPECT_EQ(1, RefCountedAndGarbageCollected2::s_destructorCalls);
}
@@ -3648,14 +3658,14 @@ TEST(HeapTest, WeakMembers)
Persistent<Bar> h1 = Bar::create();
Persistent<Weak> h4;
Persistent<WithWeakMember> h5;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
ASSERT_EQ(1u, Bar::s_live); // h1 is live.
{
Bar* h2 = Bar::create();
Bar* h3 = Bar::create();
h4 = Weak::create(h2, h3);
h5 = WithWeakMember::create(h2, h3);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(5u, Bar::s_live); // The on-stack pointer keeps h3 alive.
EXPECT_FALSE(h3->hasBeenFinalized());
EXPECT_TRUE(h4->strongIsThere());
@@ -3664,20 +3674,20 @@ TEST(HeapTest, WeakMembers)
EXPECT_TRUE(h5->weakIsThere());
}
// h3 is collected, weak pointers from h4 and h5 don't keep it alive.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(4u, Bar::s_live);
EXPECT_TRUE(h4->strongIsThere());
EXPECT_FALSE(h4->weakIsThere()); // h3 is gone from weak pointer.
EXPECT_TRUE(h5->strongIsThere());
EXPECT_FALSE(h5->weakIsThere()); // h3 is gone from weak pointer.
h1.release(); // Zero out h1.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(3u, Bar::s_live); // Only h4, h5 and h2 are left.
EXPECT_TRUE(h4->strongIsThere()); // h2 is still pointed to from h4.
EXPECT_TRUE(h5->strongIsThere()); // h2 is still pointed to from h5.
}
// h4 and h5 have gone out of scope now and they were keeping h2 alive.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live); // All gone.
}
@@ -3691,7 +3701,7 @@ TEST(HeapTest, FinalizationObserver)
}
// FinalizationObserver doesn't have a strong reference to |foo|. So |foo|
// and its member will be collected.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live);
EXPECT_TRUE(o->didCallWillFinalize());
@@ -3702,7 +3712,7 @@ TEST(HeapTest, FinalizationObserver)
foo = 0;
// FinalizationObserverWithHashMap doesn't have a strong reference to
// |foo|. So |foo| and its member will be collected.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, Bar::s_live);
EXPECT_EQ(0u, map.size());
EXPECT_TRUE(FinalizationObserverWithHashMap::s_didCallWillFinalize);
@@ -3717,7 +3727,7 @@ TEST(HeapTest, PreFinalizer)
Observable* foo = Observable::create(Bar::create());
ThreadState::current()->registerPreFinalizer(foo);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(Observable::s_willFinalizeWasCalled);
}
@@ -3729,7 +3739,7 @@ TEST(HeapTest, PreFinalizerIsNotCalledIfUnregistered)
ThreadState::current()->registerPreFinalizer(foo);
ThreadState::current()->unregisterPreFinalizer(foo);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_FALSE(Observable::s_willFinalizeWasCalled);
}
@@ -3737,7 +3747,7 @@ TEST(HeapTest, PreFinalizerUnregistersItself)
{
ObservableWithPreFinalizer::s_disposeWasCalled = false;
ObservableWithPreFinalizer::create();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(ObservableWithPreFinalizer::s_disposeWasCalled);
// Don't crash, and assertions don't fail.
}
@@ -3748,7 +3758,7 @@ TEST(HeapTest, NestedPreFinalizer)
s_disposeWasCalledForPreFinalizerSubClass = false;
s_disposeWasCalledForPreFinalizerMixin = false;
PreFinalizerSubClass::create();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(s_disposeWasCalledForPreFinalizerBase);
EXPECT_TRUE(s_disposeWasCalledForPreFinalizerSubClass);
EXPECT_TRUE(s_disposeWasCalledForPreFinalizerMixin);
@@ -3889,7 +3899,7 @@ TEST(HeapTest, PersistentHeapCollectionTypes)
// Collect |vec| and |one|.
vec = 0;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, IntWrapper::s_destructorCalls);
EXPECT_EQ(2u, pVec.size());
@@ -3918,12 +3928,12 @@ TEST(HeapTest, PersistentHeapCollectionTypes)
EXPECT_EQ(1u, wpMap.size());
EXPECT_EQ(eleven, wpMap.get(ten));
ten.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, wpMap.size());
}
// Collect previous roots.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(11, IntWrapper::s_destructorCalls);
}
@@ -3962,14 +3972,14 @@ TEST(HeapTest, CollectionNesting)
map2->add(key + 1 + i, IntDeque());
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, map->get(key).size());
EXPECT_EQ(1u, map2->get(key).size());
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
keepAlive = nullptr;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, IntWrapper::s_destructorCalls);
}
@@ -3979,17 +3989,17 @@ TEST(HeapTest, GarbageCollectedMixin)
Persistent<UseMixin> usemixin = UseMixin::create();
EXPECT_EQ(0, UseMixin::s_traceCount);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1, UseMixin::s_traceCount);
Persistent<Mixin> mixin = usemixin;
usemixin = nullptr;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, UseMixin::s_traceCount);
PersistentHeapHashSet<WeakMember<Mixin>> weakMap;
weakMap.add(UseMixin::create());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, weakMap.size());
}
@@ -4010,7 +4020,7 @@ TEST(HeapTest, CollectionNesting2)
EXPECT_EQ(1u, map->get(key).size());
Persistent<HeapHashMap<void*, IntSet>> keepAlive(map);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, map->get(key).size());
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
}
@@ -4039,7 +4049,7 @@ TEST(HeapTest, CollectionNesting3)
Persistent<HeapVector<IntVector>> keepAlive(vector);
Persistent<HeapDeque<IntDeque>> keepAlive2(deque);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, it->size());
EXPECT_EQ(1u, it2->size());
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
@@ -4065,7 +4075,7 @@ TEST(HeapTest, EmbeddedInVector)
vectorInheritedTrace.append(it1);
vectorInheritedTrace.append(it2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, SimpleFinalizedObject::s_destructorCalls);
// Since VectorObjectNoTrace has no trace method it will
@@ -4077,10 +4087,10 @@ TEST(HeapTest, EmbeddedInVector)
VectorObjectNoTrace n1, n2;
vectorNoTrace.append(n1);
vectorNoTrace.append(n2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, SimpleFinalizedObject::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(8, SimpleFinalizedObject::s_destructorCalls);
}
@@ -4104,7 +4114,7 @@ TEST(HeapTest, EmbeddedInDeque)
dequeInheritedTrace.append(it1);
dequeInheritedTrace.append(it2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, SimpleFinalizedObject::s_destructorCalls);
// Since VectorObjectNoTrace has no trace method it will
@@ -4116,10 +4126,10 @@ TEST(HeapTest, EmbeddedInDeque)
VectorObjectNoTrace n1, n2;
dequeNoTrace.append(n1);
dequeNoTrace.append(n2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, SimpleFinalizedObject::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(8, SimpleFinalizedObject::s_destructorCalls);
}
@@ -4230,7 +4240,7 @@ TEST(HeapTest, VectorDestructors)
vector.append(i1);
vector.append(i2);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// This is not EXPECT_EQ but EXPECT_LE because a HeapVectorBacking calls
// destructors for all elements in (not the size but) the capacity of
// the vector. Thus the number of destructors called becomes larger
@@ -4244,7 +4254,7 @@ TEST(HeapTest, VectorDestructors)
vector.append(i1);
vector.append(i2); // This allocates an out-of-line buffer.
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_LE(4, InlinedVectorObject::s_destructorCalls);
InlinedVectorObject::s_destructorCalls = 0;
@@ -4254,16 +4264,16 @@ TEST(HeapTest, VectorDestructors)
vector.append(i1);
vector.append(i2);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_LE(4, InlinedVectorObject::s_destructorCalls);
InlinedVectorObject::s_destructorCalls = 0;
{
Persistent<InlinedVectorObjectWrapper> vectorWrapper = new InlinedVectorObjectWrapper();
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(2, InlinedVectorObject::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_LE(8, InlinedVectorObject::s_destructorCalls);
}
@@ -4280,7 +4290,7 @@ TEST(HeapTest, VectorDestructorsWithVtable)
vector.append(i1);
vector.append(i2);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(4, InlinedVectorObjectWithVtable::s_destructorCalls);
InlinedVectorObjectWithVtable::s_destructorCalls = 0;
@@ -4290,7 +4300,7 @@ TEST(HeapTest, VectorDestructorsWithVtable)
vector.append(i1);
vector.append(i2); // This allocates an out-of-line buffer.
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(5, InlinedVectorObjectWithVtable::s_destructorCalls);
InlinedVectorObjectWithVtable::s_destructorCalls = 0;
@@ -4300,16 +4310,16 @@ TEST(HeapTest, VectorDestructorsWithVtable)
vector.append(i1);
vector.append(i2);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(4, InlinedVectorObjectWithVtable::s_destructorCalls);
InlinedVectorObjectWithVtable::s_destructorCalls = 0;
{
Persistent<InlinedVectorObjectWithVtableWrapper> vectorWrapper = new InlinedVectorObjectWithVtableWrapper();
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(3, InlinedVectorObjectWithVtable::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(9, InlinedVectorObjectWithVtable::s_destructorCalls);
}
#endif
@@ -4352,7 +4362,7 @@ TEST(HeapTest, HeapTerminatedArray)
arr = builder.release();
}
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
EXPECT_EQ(prefixSize, arr->size());
for (size_t i = 0; i < prefixSize; i++)
@@ -4366,7 +4376,7 @@ TEST(HeapTest, HeapTerminatedArray)
arr = builder.release();
}
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
EXPECT_EQ(prefixSize + suffixSize, arr->size());
for (size_t i = 0; i < prefixSize + suffixSize; i++)
@@ -4375,7 +4385,7 @@ TEST(HeapTest, HeapTerminatedArray)
{
Persistent<HeapTerminatedArray<TerminatedArrayItem>> persistentArr = arr;
arr = 0;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
arr = persistentArr.get();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
EXPECT_EQ(prefixSize + suffixSize, arr->size());
@@ -4384,7 +4394,7 @@ TEST(HeapTest, HeapTerminatedArray)
}
arr = 0;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(8, IntWrapper::s_destructorCalls);
}
@@ -4400,7 +4410,7 @@ TEST(HeapTest, HeapLinkedStack)
for (size_t i = 0; i < stackSize; i++)
stack->push(TerminatedArrayItem(IntWrapper::create(i)));
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
EXPECT_EQ(stackSize, stack->size());
while (!stack->isEmpty()) {
@@ -4410,7 +4420,7 @@ TEST(HeapTest, HeapLinkedStack)
Persistent<HeapLinkedStack<TerminatedArrayItem>> pStack = stack;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(stackSize, static_cast<size_t>(IntWrapper::s_destructorCalls));
EXPECT_EQ(0u, pStack->size());
}
@@ -4425,7 +4435,7 @@ TEST(HeapTest, AllocationDuringFinalization)
Persistent<IntWrapper> wrapper;
new FinalizationAllocator(&wrapper);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
EXPECT_EQ(0, OneKiloByteObject::s_destructorCalls);
EXPECT_EQ(0, LargeHeapObject::s_destructorCalls);
@@ -4434,7 +4444,7 @@ TEST(HeapTest, AllocationDuringFinalization)
EXPECT_EQ(42, wrapper->value());
wrapper.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The 42 IntWrappers were the ones allocated in ~FinalizationAllocator
// and the ones allocated in LargeHeapObject.
EXPECT_EQ(42, IntWrapper::s_destructorCalls);
@@ -4452,7 +4462,7 @@ TEST(HeapTest, AllocationDuringPrefinalizer)
Persistent<IntWrapper> wrapper;
new PreFinalizationAllocator(&wrapper);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
EXPECT_EQ(0, OneKiloByteObject::s_destructorCalls);
EXPECT_EQ(0, LargeHeapObject::s_destructorCalls);
@@ -4461,7 +4471,7 @@ TEST(HeapTest, AllocationDuringPrefinalizer)
EXPECT_EQ(42, wrapper->value());
wrapper.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The 42 IntWrappers were the ones allocated in the pre-finalizer
// of PreFinalizationAllocator and the ones allocated in LargeHeapObject.
EXPECT_EQ(42, IntWrapper::s_destructorCalls);
@@ -4510,14 +4520,14 @@ void destructorsCalledOnGC(bool addLots)
}
EXPECT_FALSE(RefCountedWithDestructor::s_wasDestructed);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_FALSE(RefCountedWithDestructor::s_wasDestructed);
}
// The destructors of the sets don't call the destructors of the elements
// in the heap sets. You have to actually remove the elments, call clear()
// or have a GC to get the destructors called.
EXPECT_FALSE(RefCountedWithDestructor::s_wasDestructed);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(RefCountedWithDestructor::s_wasDestructed);
}
@@ -4611,15 +4621,15 @@ TEST(HeapTest, MultipleMixins)
MultipleMixins* obj = new MultipleMixins();
{
Persistent<MixinA> a = obj;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
}
{
Persistent<MixinB> b = obj;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0, IntWrapper::s_destructorCalls);
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(3, IntWrapper::s_destructorCalls);
}
@@ -4712,7 +4722,7 @@ void setWithCustomWeaknessHandling()
set2.add(PairWithWeakHandling(IntWrapper::create(0), IntWrapper::create(1)));
set3->add(PairWithWeakHandling(IntWrapper::create(2), IntWrapper::create(3)));
set1->add(PairWithWeakHandling(IntWrapper::create(4), IntWrapper::create(5)));
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
// The first set is pointed to from a persistent, so it's referenced, but
// the weak processing may have taken place.
if (set1->size()) {
@@ -4733,7 +4743,7 @@ void setWithCustomWeaknessHandling()
EXPECT_EQ(3, i3->second->value());
}
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, set1->size());
set1->add(PairWithWeakHandling(IntWrapper::create(103), livingInt));
set1->add(PairWithWeakHandling(livingInt, IntWrapper::create(103))); // This one gets zapped at GC time because nothing holds the 103 alive.
@@ -4741,7 +4751,7 @@ void setWithCustomWeaknessHandling()
set1->add(PairWithWeakHandling(livingInt, livingInt));
set1->add(PairWithWeakHandling(livingInt, livingInt)); // This one is identical to the previous and doesn't add anything.
EXPECT_EQ(4u, set1->size());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2u, set1->size());
Iterator i1 = set1->begin();
EXPECT_TRUE(i1->first->value() == 103 || i1->first == livingInt);
@@ -4774,7 +4784,7 @@ TEST(HeapTest, MapWithCustomWeaknessHandling)
map1->add(PairWithWeakHandling(IntWrapper::create(4), IntWrapper::create(5)), OffHeapInt::create(1003));
EXPECT_EQ(0, OffHeapInt::s_destructorCalls);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
// The first map2 is pointed to from a persistent, so it's referenced, but
// the weak processing may have taken place.
if (map1->size()) {
@@ -4798,7 +4808,7 @@ TEST(HeapTest, MapWithCustomWeaknessHandling)
EXPECT_EQ(1002, i3->value->value());
}
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, map1->size());
EXPECT_EQ(3, OffHeapInt::s_destructorCalls);
@@ -4815,7 +4825,7 @@ TEST(HeapTest, MapWithCustomWeaknessHandling)
EXPECT_EQ(0, OffHeapInt::s_destructorCalls);
EXPECT_EQ(4u, map1->size());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, OffHeapInt::s_destructorCalls);
EXPECT_EQ(2u, map1->size());
Iterator i1 = map1->begin();
@@ -4844,7 +4854,7 @@ TEST(HeapTest, MapWithCustomWeaknessHandling2)
map1->add(OffHeapInt::create(1003), PairWithWeakHandling(IntWrapper::create(4), IntWrapper::create(5)));
EXPECT_EQ(0, OffHeapInt::s_destructorCalls);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
// The first map2 is pointed to from a persistent, so it's referenced, but
// the weak processing may have taken place.
if (map1->size()) {
@@ -4868,7 +4878,7 @@ TEST(HeapTest, MapWithCustomWeaknessHandling2)
EXPECT_EQ(1002, i3->key->value());
}
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, map1->size());
EXPECT_EQ(3, OffHeapInt::s_destructorCalls);
@@ -4885,7 +4895,7 @@ TEST(HeapTest, MapWithCustomWeaknessHandling2)
EXPECT_EQ(0, OffHeapInt::s_destructorCalls);
EXPECT_EQ(4u, map1->size());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2, OffHeapInt::s_destructorCalls);
EXPECT_EQ(2u, map1->size());
Iterator i1 = map1->begin();
@@ -4910,19 +4920,19 @@ TEST(HeapTest, RegressNullIsStrongified)
Persistent<HeapHashMap<int, WeakMember<IntWrapper>>> map = new HeapHashMap<int, WeakMember<IntWrapper>>();
addElementsToWeakMap(map);
HeapHashMap<int, WeakMember<IntWrapper>>::AddResult result = map->add(800, nullptr);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
result.storedValue->value = IntWrapper::create(42);
}
TEST(HeapTest, Bind)
{
OwnPtr<Closure> closure = bind(static_cast<void (Bar::*)(Visitor*)>(&Bar::trace), Bar::create(), static_cast<Visitor*>(0));
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The closure should have a persistent handle to the Bar.
EXPECT_EQ(1u, Bar::s_live);
OwnPtr<Closure> closure2 = bind(static_cast<void (Bar::*)(Visitor*)>(&Bar::trace), RawPtr<Bar>(Bar::create()), static_cast<Visitor*>(0));
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The closure should have a persistent handle to the Bar.
EXPECT_EQ(2u, Bar::s_live);
// RawPtr<OffHeapInt> should not make Persistent.
@@ -4931,7 +4941,7 @@ TEST(HeapTest, Bind)
UseMixin::s_traceCount = 0;
Mixin* mixin = UseMixin::create();
OwnPtr<Closure> mixinClosure = bind(static_cast<void (Mixin::*)(Visitor*)>(&Mixin::trace), mixin, static_cast<Visitor*>(0));
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The closure should have a persistent handle to the mixin.
EXPECT_EQ(1, UseMixin::s_traceCount);
}
@@ -4996,7 +5006,7 @@ TEST(HeapTest, RemoveEmptySets)
map->add(OffHeapInt::create(2), WeakSet());
EXPECT_EQ(2u, map->size());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, map->size()); // The one with key 2 was removed.
EXPECT_EQ(1, OffHeapInt::s_destructorCalls);
{
@@ -5005,7 +5015,7 @@ TEST(HeapTest, RemoveEmptySets)
}
livingInt.clear(); // The weak set can no longer keep the '42' alive now.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, map->size());
}
@@ -5026,7 +5036,7 @@ TEST(HeapTest, EphemeronsInEphemerons)
one.clear();
if (!keepInnerAlive)
two.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
if (keepOuterAlive) {
const InnerMap& inner = outer->get(one);
if (keepInnerAlive) {
@@ -5052,7 +5062,7 @@ TEST(HeapTest, EphemeronsInEphemerons)
newEntry.storedValue->value.add(composite, home);
}
composite.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(10000u, outer->size());
for (int i = 0; i < 10000; i++) {
IntWrapper* value = keepAlive->at(i);
@@ -5060,7 +5070,7 @@ TEST(HeapTest, EphemeronsInEphemerons)
if (i & 1)
keepAlive->at(i) = nullptr;
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(5000u, outer->size());
}
}
@@ -5096,7 +5106,7 @@ TEST(HeapTest, EphemeronsPointToEphemerons)
chain->map().add(IntWrapper::create(103), new EphemeronWrapper());
}
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EphemeronWrapper* wrapper = chain;
for (int i = 0; i< 100; i++) {
@@ -5109,7 +5119,7 @@ TEST(HeapTest, EphemeronsPointToEphemerons)
EXPECT_EQ(nullptr, wrapper);
key2.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
wrapper = chain;
for (int i = 0; i < 50; i++) {
@@ -5119,7 +5129,7 @@ TEST(HeapTest, EphemeronsPointToEphemerons)
EXPECT_EQ(nullptr, wrapper);
key.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, chain->map().size());
}
@@ -5168,7 +5178,7 @@ TEST(HeapTest, Ephemeron)
set->add(pw1);
set->add(pw2);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2u, weakPairMap->size());
EXPECT_EQ(2u, weakPairMap2->size());
@@ -5184,7 +5194,7 @@ TEST(HeapTest, Ephemeron)
pw2.clear(); // Kills all entries in the pairWeakMaps except the first.
for (int i = 0; i < 2; i++) {
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, weakPairMap->size());
EXPECT_EQ(0u, weakPairMap2->size());
@@ -5200,7 +5210,7 @@ TEST(HeapTest, Ephemeron)
wp1.clear();
pw1.clear();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, weakPairMap->size());
EXPECT_EQ(0u, pairWeakMap->size());
@@ -5231,16 +5241,16 @@ TEST(HeapTest, IndirectStrongToWeak)
map->add(deadObject, new Link1(deadObject));
map->add(lifeObject, new Link1(lifeObject));
EXPECT_EQ(2u, map->size());
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(2u, map->size());
EXPECT_EQ(deadObject, map->get(deadObject)->link());
EXPECT_EQ(lifeObject, map->get(lifeObject)->link());
deadObject.clear(); // Now it can live up to its name.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(1u, map->size());
EXPECT_EQ(lifeObject, map->get(lifeObject)->link());
lifeObject.clear(); // Despite its name.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, map->size());
}
@@ -5310,7 +5320,7 @@ public:
// GC will not find it.
// Also at this point the worker is waiting for the main thread
// to be parked and will not do any sweep of its heap.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// Since the worker thread is not sweeping the worker object should
// not have been finalized.
@@ -5323,7 +5333,7 @@ public:
uintptr_t stackPtrValue = s_workerObjectPointer;
s_workerObjectPointer = 0;
ASSERT_UNUSED(stackPtrValue, stackPtrValue);
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
// Since the worker thread is not sweeping the worker object should
// not have been finalized.
@@ -5413,8 +5423,8 @@ public:
// and mark unmarked objects dead. The collection on the worker
// heap is found through the persistent and the backing should
// be marked.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
+ preciselyCollectGarbage();
// Wake up the worker thread so it can continue. It will sweep
// and perform another GC where the backing store of its
@@ -5479,7 +5489,7 @@ private:
{
// Prevent weak processing with an iterator and GC.
WeakCollectionType::iterator it = collection->begin();
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
// The backing should be strongified because of the iterator.
EXPECT_EQ(6u, collection->size());
@@ -5488,7 +5498,7 @@ private:
// Disregarding the iterator but keeping the collection alive
// with a persistent should lead to weak processing.
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(0u, collection->size());
}
@@ -5506,7 +5516,7 @@ TEST(HeapTest, ThreadedStrongification)
static bool allocateAndReturnBool()
{
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
return true;
}
@@ -5616,7 +5626,7 @@ public:
// until the main thread has done its GC.
wakeWorkerThread();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// The worker thread should not have swept yet since it is waiting
// to get the global mutex.
@@ -5801,7 +5811,7 @@ public:
AllocatesOnAssignment(const AllocatesOnAssignment& other)
{
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
m_value = new IntWrapper(other.m_value->value());
}
@@ -5941,7 +5951,7 @@ Persistent<IntNode>* NonNodeAllocatingNodeInDestructor::s_node = 0;
TEST(HeapTest, NonNodeAllocatingNodeInDestructor)
{
new NonNodeAllocatingNodeInDestructor();
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_EQ(10, (*NonNodeAllocatingNodeInDestructor::s_node)->value());
delete NonNodeAllocatingNodeInDestructor::s_node;
NonNodeAllocatingNodeInDestructor::s_node = 0;
@@ -6009,7 +6019,7 @@ TEST(HeapTest, TraceDeepEagerly)
obj = new DeepEagerly(obj);
Persistent<DeepEagerly> persistent(obj);
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
// Verify that the DeepEagerly chain isn't completely unravelled
// by performing eager trace() calls, but the explicit mark
@@ -6324,7 +6334,7 @@ private:
, m_traceCounter(TraceCounter::create())
{
ASSERT(!ThreadState::current()->isGCForbidden());
- Heap::collectGarbage(ThreadState::HeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ conservativelyCollectGarbage();
EXPECT_GT(member->traceCount(), 0);
EXPECT_GT(traceCount(), 0);
}
@@ -6354,10 +6364,10 @@ TEST(HeapTest, WeakPersistent)
{
Persistent<IntWrapper> object = new IntWrapper(20);
OwnPtr<WeakPersistentHolder> holder = adoptPtr(new WeakPersistentHolder(object));
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_TRUE(holder->object());
object = nullptr;
- Heap::collectGarbage(ThreadState::NoHeapPointersOnStack, ThreadState::GCWithSweep, Heap::ForcedGC);
+ preciselyCollectGarbage();
EXPECT_FALSE(holder->object());
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698