Changeset 222871 in webkit for trunk/Source/JavaScriptCore/assembler/ProbeStack.cpp
- Timestamp:
- Oct 4, 2017, 1:00:01 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/assembler/ProbeStack.cpp
r222058 r222871 35 35 namespace Probe { 36 36 37 static void* const maxLowWatermark = reinterpret_cast<void*>(std::numeric_limits<uintptr_t>::max()); 38 37 39 #if ASAN_ENABLED 38 40 // FIXME: we should consider using the copy function for both ASan and non-ASan builds. … … 50 52 } 51 53 #else 52 #define copyStackPage(dst, src, size) std::memcpy(dst, src, size) ;54 #define copyStackPage(dst, src, size) std::memcpy(dst, src, size) 53 55 #endif 54 56 … … 85 87 } 86 88 89 void* Page::lowWatermarkFromVisitingDirtyChunks() 90 { 91 uint64_t dirtyBits = m_dirtyBits; 92 size_t offset = 0; 93 while (dirtyBits) { 94 if (dirtyBits & 1) 95 return reinterpret_cast<uint8_t*>(m_baseLogicalAddress) + offset; 96 dirtyBits = dirtyBits >> 1; 97 offset += s_chunkSize; 98 } 99 return maxLowWatermark; 100 } 101 87 102 Stack::Stack(Stack&& other) 88 : m_newStackPointer(other.m_newStackPointer) 89 , m_lowWatermark(other.m_lowWatermark) 90 , m_stackBounds(WTFMove(other.m_stackBounds)) 103 : m_stackBounds(WTFMove(other.m_stackBounds)) 91 104 , m_pages(WTFMove(other.m_pages)) 92 105 { 106 m_savedStackPointer = other.m_savedStackPointer; 93 107 #if !ASSERT_DISABLED 94 108 other.m_isValid = false; … … 129 143 } 130 144 145 void* Stack::lowWatermarkFromVisitingDirtyPages() 146 { 147 void* low = maxLowWatermark; 148 for (auto it = m_pages.begin(); it != m_pages.end(); ++it) { 149 Page& page = *it->value; 150 if (!page.hasWritesToFlush() || low < page.baseAddress()) 151 continue; 152 low = std::min(low, page.lowWatermarkFromVisitingDirtyChunks()); 153 } 154 return low; 155 } 156 131 157 } // namespace Probe 132 158 } // namespace JSC
Note:
See TracChangeset
for help on using the changeset viewer.