| 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
|
|
|