Changeset 220777 in webkit for trunk/Source/JavaScriptCore/runtime/VM.cpp
- Timestamp:
- Aug 15, 2017, 5:03:45 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/runtime/VM.cpp
r220606 r220777 195 195 , prototypeMap(*this) 196 196 , interpreter(0) 197 , sizeOfLastScratchBuffer(0)198 197 , entryScope(0) 199 198 , m_regExpCache(new RegExpCache(this)) … … 424 423 425 424 #if ENABLE(DFG_JIT) 426 for (unsigned i = 0; i < scratchBuffers.size(); ++i)427 fastFree( scratchBuffers[i]);425 for (unsigned i = 0; i < m_scratchBuffers.size(); ++i) 426 fastFree(m_scratchBuffers[i]); 428 427 #endif 429 428 } … … 747 746 void VM::gatherConservativeRoots(ConservativeRoots& conservativeRoots) 748 747 { 749 for (auto* scratchBuffer : scratchBuffers) { 748 auto lock = holdLock(m_scratchBufferLock); 749 for (auto* scratchBuffer : m_scratchBuffers) { 750 750 if (scratchBuffer->activeLength()) { 751 751 void* bufferStart = scratchBuffer->dataBuffer(); … … 1009 1009 #endif // USE(CF) 1010 1010 1011 ScratchBuffer* VM::scratchBufferForSize(size_t size) 1012 { 1013 if (!size) 1014 return nullptr; 1015 1016 auto locker = holdLock(m_scratchBufferLock); 1017 1018 if (size > m_sizeOfLastScratchBuffer) { 1019 // Protect against a N^2 memory usage pathology by ensuring 1020 // that at worst, we get a geometric series, meaning that the 1021 // total memory usage is somewhere around 1022 // max(scratch buffer size) * 4. 1023 m_sizeOfLastScratchBuffer = size * 2; 1024 1025 ScratchBuffer* newBuffer = ScratchBuffer::create(m_sizeOfLastScratchBuffer); 1026 RELEASE_ASSERT(newBuffer); 1027 m_scratchBuffers.append(newBuffer); 1028 } 1029 1030 ScratchBuffer* result = m_scratchBuffers.last(); 1031 return result; 1032 } 1033 1011 1034 } // namespace JSC
Note:
See TracChangeset
for help on using the changeset viewer.