Changeset 122677 in webkit for trunk/Source/JavaScriptCore/heap/CopiedSpace.cpp
- Timestamp:
- Jul 14, 2012, 9:02:16 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/CopiedSpace.cpp
r121381 r122677 72 72 allocateBlock(); 73 73 74 *outPtr = m_allocator.allocate(bytes); 75 ASSERT(*outPtr); 74 *outPtr = m_allocator.forceAllocate(bytes); 76 75 return true; 77 76 } … … 94 93 m_blockSet.add(block); 95 94 96 *outPtr = allocateFromBlock(block, bytes); 95 CopiedAllocator allocator; 96 allocator.setCurrentBlock(block); 97 *outPtr = allocator.forceAllocate(bytes); 98 allocator.resetCurrentBlock(); 97 99 98 100 m_heap->didAllocate(blockSize); … … 108 110 void* oldPtr = *ptr; 109 111 ASSERT(!m_heap->globalData()->isInitializingObject()); 110 112 111 113 if (isOversize(oldSize) || isOversize(newSize)) 112 114 return tryReallocateOversize(ptr, oldSize, newSize); 113 114 if (m_allocator.wasLastAllocation(oldPtr, oldSize)) { 115 size_t delta = newSize - oldSize; 116 if (m_allocator.fitsInCurrentBlock(delta)) { 117 (void)m_allocator.allocate(delta); 118 return true; 119 } 120 } 115 116 if (m_allocator.tryReallocate(oldPtr, oldSize, newSize)) 117 return true; 121 118 122 119 void* result = 0; … … 158 155 void CopiedSpace::doneFillingBlock(CopiedBlock* block) 159 156 { 160 ASSERT(block);161 ASSERT(block->m_offset < reinterpret_cast<char*>(block) + HeapBlock::s_blockSize);162 157 ASSERT(m_inCopyingPhase); 163 164 if (block->m_offset == block->payload()) { 158 159 if (!block) 160 return; 161 162 if (!block->dataSize()) { 165 163 recycleBlock(block); 166 164 return; 167 165 } 168 166 169 block->zeroFill ToEnd();167 block->zeroFillWilderness(); 170 168 171 169 { … … 227 225 allocateBlock(); 228 226 else 229 m_allocator. resetCurrentBlock(static_cast<CopiedBlock*>(m_toSpace->head()));227 m_allocator.setCurrentBlock(static_cast<CopiedBlock*>(m_toSpace->head())); 230 228 } 231 229
Note:
See TracChangeset
for help on using the changeset viewer.