Index: Source/heap/ThreadState.h |
diff --git a/Source/heap/ThreadState.h b/Source/heap/ThreadState.h |
index 3e799158c144d011152f6ef167165fbfacc7b935..776dccb31cedfc9720db8ba603b22f234b103f2b 100644 |
--- a/Source/heap/ThreadState.h |
+++ b/Source/heap/ThreadState.h |
@@ -278,6 +278,15 @@ public: |
void setGCRequested(); |
void clearGCRequested(); |
+ // Was the last GC forced for testing? This is set when garbage collection |
+ // is forced for testing and there are pointers on the stack. It remains |
+ // set until a garbage collection is triggered with no pointers on the stack. |
+ // This is used for layout tests that trigger GCs and check if objects are |
+ // dead at a given point in time. That only reliably works when we get |
+ // precise GCs with no conservative stack scanning. |
+ void setForcedForTesting(bool); |
+ bool forcePreciseGCForTesting(); |
+ |
bool sweepRequested(); |
void setSweepRequested(); |
void clearSweepRequested(); |
@@ -497,6 +506,8 @@ private: |
m_safePointScopeMarker = 0; |
} |
+ void performPendingGC(StackState); |
+ |
// Finds the Blink HeapPage in this thread-specific heap |
// corresponding to a given address. Return 0 if the address is |
// not contained in any of the pages. This does not consider |
@@ -540,6 +551,7 @@ private: |
bool m_atSafePoint; |
Vector<Interruptor*> m_interruptors; |
bool m_gcRequested; |
+ bool m_forcePreciseGCForTesting; |
volatile int m_sweepRequested; |
bool m_sweepInProgress; |
size_t m_noAllocationCount; |