Changeset 179211 in webkit for trunk/Source/JavaScriptCore/heap/CopiedBlock.h
- Timestamp:
- Jan 27, 2015, 1:34:32 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/CopiedBlock.h
r179192 r179211 27 27 #define CopiedBlock_h 28 28 29 #include "BlockAllocator.h" 29 30 #include "CopyWorkList.h" 30 31 #include "HeapBlock.h" … … 32 33 #include "Options.h" 33 34 #include <wtf/Atomics.h> 34 #include <wtf/TCSpinLock.h>35 35 36 36 namespace JSC { … … 42 42 friend class CopiedAllocator; 43 43 public: 44 static CopiedBlock* create( size_t);45 static CopiedBlock* createNoZeroFill( size_t);44 static CopiedBlock* create(DeadBlock*); 45 static CopiedBlock* createNoZeroFill(DeadBlock*); 46 46 47 47 void pin(); … … 87 87 88 88 private: 89 CopiedBlock( size_t);89 CopiedBlock(Region*); 90 90 void zeroFillWilderness(); // Can be called at any time to zero-fill to the end of the block. 91 91 … … 95 95 std::unique_ptr<CopyWorkList> m_workList; 96 96 97 size_t m_blockSize;98 97 size_t m_remaining; 99 98 bool m_isPinned : 1; … … 105 104 }; 106 105 107 inline CopiedBlock* CopiedBlock::createNoZeroFill(size_t blockSize) 108 { 109 return new(NotNull, fastAlignedMalloc(CopiedBlock::blockSize, blockSize)) CopiedBlock(blockSize); 110 } 111 112 inline CopiedBlock* CopiedBlock::create(size_t blockSize) 113 { 114 CopiedBlock* newBlock = createNoZeroFill(blockSize); 106 inline CopiedBlock* CopiedBlock::createNoZeroFill(DeadBlock* block) 107 { 108 Region* region = block->region(); 109 return new(NotNull, block) CopiedBlock(region); 110 } 111 112 inline CopiedBlock* CopiedBlock::create(DeadBlock* block) 113 { 114 CopiedBlock* newBlock = createNoZeroFill(block); 115 115 newBlock->zeroFillWilderness(); 116 116 return newBlock; … … 129 129 } 130 130 131 inline CopiedBlock::CopiedBlock(size_t blockSize) 132 : HeapBlock<CopiedBlock>() 133 , m_blockSize(blockSize) 131 inline CopiedBlock::CopiedBlock(Region* region) 132 : HeapBlock<CopiedBlock>(region) 134 133 , m_remaining(payloadCapacity()) 135 134 , m_isPinned(false) … … 205 204 inline bool CopiedBlock::isOversize() 206 205 { 207 return m_blockSize != blockSize;206 return region()->isCustomSize(); 208 207 } 209 208 … … 221 220 inline char* CopiedBlock::payloadEnd() 222 221 { 223 return reinterpret_cast<char*>(this) + m_blockSize;222 return reinterpret_cast<char*>(this) + region()->blockSize(); 224 223 } 225 224 … … 266 265 inline size_t CopiedBlock::capacity() 267 266 { 268 return m_blockSize;267 return region()->blockSize(); 269 268 } 270 269
Note:
See TracChangeset
for help on using the changeset viewer.