| Index: Source/platform/heap/Heap.h
|
| diff --git a/Source/platform/heap/Heap.h b/Source/platform/heap/Heap.h
|
| index 07312d258e0f0ac6630af91ec587a49e7b3063b3..af83b7c11ac4bdb74534cc6b3b538f6546208e7d 100644
|
| --- a/Source/platform/heap/Heap.h
|
| +++ b/Source/platform/heap/Heap.h
|
| @@ -1497,6 +1497,7 @@ Address HeapObjectHeader::payloadEnd()
|
| return reinterpret_cast<Address>(this) + size();
|
| }
|
|
|
| +NO_SANITIZE_ADDRESS
|
| void HeapObjectHeader::mark()
|
| {
|
| checkHeader();
|
| @@ -1505,12 +1506,8 @@ void HeapObjectHeader::mark()
|
| // Multiple threads can still read the old value and all store the
|
| // new value. However, the new value will be the same for all of
|
| // the threads and the end result is therefore consistent.
|
| - // We need to unpoison/poison the header on ASAN since
|
| - // acquireLoad/releaseStore don't have the NO_SANITIZE_ADDRESS flag.
|
| - ASAN_UNPOISON_MEMORY_REGION(this, sizeof(this));
|
| - unsigned size = acquireLoad(&m_size);
|
| - releaseStore(&m_size, size | markBitMask);
|
| - ASAN_POISON_MEMORY_REGION(this, sizeof(this));
|
| + unsigned size = asanUnsafeAcquireLoad(&m_size);
|
| + asanUnsafeReleaseStore(&m_size, size | markBitMask);
|
| }
|
|
|
| Address FinalizedHeapObjectHeader::payload()
|
|
|