Changeset 222058 in webkit for trunk/Source/JavaScriptCore/assembler/ProbeStack.cpp
- Timestamp:
- Sep 14, 2017, 4:08:54 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/ProbeStack.cpp
r222009 r222058 28 28 29 29 #include <memory> 30 #include <wtf/StdLibExtras.h> 30 31 31 32 #if ENABLE(MASM_PROBE) … … 34 35 namespace Probe { 35 36 37 #if ASAN_ENABLED 38 // FIXME: we should consider using the copy function for both ASan and non-ASan builds. 39 // https://bugs.webkit.org/show_bug.cgi?id=176961 40 SUPPRESS_ASAN 41 static void copyStackPage(void* dst, void* src, size_t size) 42 { 43 ASSERT(roundUpToMultipleOf<sizeof(uintptr_t)>(dst) == dst); 44 ASSERT(roundUpToMultipleOf<sizeof(uintptr_t)>(src) == src); 45 46 uintptr_t* dstPointer = reinterpret_cast<uintptr_t*>(dst); 47 uintptr_t* srcPointer = reinterpret_cast<uintptr_t*>(src); 48 for (; size; size -= sizeof(uintptr_t)) 49 *dstPointer++ = *srcPointer++; 50 } 51 #else 52 #define copyStackPage(dst, src, size) std::memcpy(dst, src, size); 53 #endif 54 36 55 Page::Page(void* baseAddress) 37 56 : m_baseLogicalAddress(baseAddress) 57 , m_physicalAddressOffset(reinterpret_cast<uint8_t*>(&m_buffer) - reinterpret_cast<uint8_t*>(baseAddress)) 38 58 { 39 memcpy(&m_buffer, baseAddress, s_pageSize);59 copyStackPage(&m_buffer, baseAddress, s_pageSize); 40 60 } 41 61 42 62 void Page::flushWrites() 43 63 { 44 uint ptr_t dirtyBits = m_dirtyBits;64 uint64_t dirtyBits = m_dirtyBits; 45 65 size_t offset = 0; 46 66 while (dirtyBits) { … … 57 77 uint8_t* src = reinterpret_cast<uint8_t*>(&m_buffer) + startOffset; 58 78 uint8_t* dst = reinterpret_cast<uint8_t*>(m_baseLogicalAddress) + startOffset; 59 memcpy(dst, src, size);79 copyStackPage(dst, src, size); 60 80 } 61 81 dirtyBits = dirtyBits >> 1;
Note:
See TracChangeset
for help on using the changeset viewer.