| Index: third_party/WebKit/Source/platform/heap/ThreadState.cpp
|
| diff --git a/third_party/WebKit/Source/platform/heap/ThreadState.cpp b/third_party/WebKit/Source/platform/heap/ThreadState.cpp
|
| index ce2ba90164c3810e91c762226146f62924a43ce1..7c0d566a64c290a8940105d8c0997bd7fb257d49 100644
|
| --- a/third_party/WebKit/Source/platform/heap/ThreadState.cpp
|
| +++ b/third_party/WebKit/Source/platform/heap/ThreadState.cpp
|
| @@ -1139,10 +1139,18 @@ void ThreadState::poisonAllHeaps() {
|
| // Poisoning all unmarked objects in the other arenas.
|
| for (int i = 1; i < BlinkGC::NumberOfArenas; i++)
|
| m_arenas[i]->poisonArena();
|
| + // CrossThreadPersistents in unmarked objects may be accessed from other
|
| + // threads (e.g. in CrossThreadPersistentRegion::shouldTracePersistent) and
|
| + // that would be fine.
|
| + ProcessHeap::crossThreadPersistentRegion().unpoisonCrossThreadPersistents();
|
| }
|
|
|
| void ThreadState::poisonEagerArena() {
|
| m_arenas[BlinkGC::EagerSweepArenaIndex]->poisonArena();
|
| + // CrossThreadPersistents in unmarked objects may be accessed from other
|
| + // threads (e.g. in CrossThreadPersistentRegion::shouldTracePersistent) and
|
| + // that would be fine.
|
| + ProcessHeap::crossThreadPersistentRegion().unpoisonCrossThreadPersistents();
|
| }
|
| #endif
|
|
|
|
|