| Index: Source/platform/heap/ThreadState.h | 
| diff --git a/Source/platform/heap/ThreadState.h b/Source/platform/heap/ThreadState.h | 
| index 5d93b22443d6fdd4070326c53671b7770a675050..d091630d9db7f8fe4a0812eb83f586fa43a43629 100644 | 
| --- a/Source/platform/heap/ThreadState.h | 
| +++ b/Source/platform/heap/ThreadState.h | 
| @@ -144,11 +144,11 @@ using EphemeronCallback = VisitorCallback; | 
| #define TypedHeapEnumName(Type) Type##HeapIndex, | 
|  | 
| enum HeapIndices { | 
| -    NormalPage1HeapIndex = 0, | 
| +    EagerSweepHeapIndex = 0, | 
| +    NormalPage1HeapIndex, | 
| NormalPage2HeapIndex, | 
| NormalPage3HeapIndex, | 
| NormalPage4HeapIndex, | 
| -    EagerSweepHeapIndex, | 
| Vector1HeapIndex, | 
| Vector2HeapIndex, | 
| Vector3HeapIndex, | 
| @@ -161,6 +161,20 @@ enum HeapIndices { | 
| NumberOfHeaps, | 
| }; | 
|  | 
| +#if defined(ADDRESS_SANITIZER) | 
| +// Heaps can have their object payloads be poisoned, or cleared | 
| +// of their poisoning. | 
| +enum Poisoning { | 
| +    SetPoison, | 
| +    ClearPoison, | 
| +}; | 
| + | 
| +enum ObjectsToPoison { | 
| +    UnmarkedOnly, | 
| +    UnmarkedOrMarked, | 
| +}; | 
| +#endif | 
| + | 
| #if ENABLE(GC_PROFILING) | 
| const size_t numberOfGenerationsToTrack = 8; | 
| const size_t maxHeapObjectAge = numberOfGenerationsToTrack - 1; | 
| @@ -644,6 +658,11 @@ private: | 
|  | 
| void eagerSweep(); | 
|  | 
| +#if defined(ADDRESS_SANITIZER) | 
| +    void poisonEagerHeap(Poisoning); | 
| +    void poisonAllHeaps(); | 
| +#endif | 
| + | 
| // When ThreadState is detaching from non-main thread its | 
| // heap is expected to be empty (because it is going away). | 
| // Perform registered cleanup tasks and garbage collection | 
|  |