Changeset 64849 in webkit for trunk/JavaScriptCore/runtime/Collector.cpp
- Timestamp:
- Aug 6, 2010, 7:55:54 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/runtime/Collector.cpp
r64695 r64849 171 171 freeBlocks(); 172 172 173 for (unsigned i = 0; i < m_weakGCHandlePools.size(); ++i) 174 m_weakGCHandlePools[i].deallocate(); 175 173 176 #if ENABLE(JSC_MULTIPLE_THREADS) 174 177 if (m_currentThreadRegistrar) { … … 190 193 NEVER_INLINE CollectorBlock* Heap::allocateBlock() 191 194 { 192 Aligned Block allocation = m_blockallocator.allocate();195 AlignedCollectorBlock allocation = m_blockallocator.allocate(); 193 196 CollectorBlock* block = static_cast<CollectorBlock*>(allocation.base()); 194 197 if (!block) … … 208 211 size_t numBlocks = m_heap.numBlocks; 209 212 if (m_heap.usedBlocks == numBlocks) { 210 static const size_t maxNumBlocks = ULONG_MAX / sizeof(Aligned Block) / GROWTH_FACTOR;213 static const size_t maxNumBlocks = ULONG_MAX / sizeof(AlignedCollectorBlock) / GROWTH_FACTOR; 211 214 if (numBlocks > maxNumBlocks) 212 215 CRASH(); 213 216 numBlocks = max(MIN_ARRAY_SIZE, numBlocks * GROWTH_FACTOR); 214 217 m_heap.numBlocks = numBlocks; 215 m_heap.blocks = static_cast<Aligned Block*>(fastRealloc(m_heap.blocks, numBlocks * sizeof(AlignedBlock)));218 m_heap.blocks = static_cast<AlignedCollectorBlock*>(fastRealloc(m_heap.blocks, numBlocks * sizeof(AlignedCollectorBlock))); 216 219 } 217 220 m_heap.blocks[m_heap.usedBlocks++] = allocation; … … 236 239 if (m_heap.numBlocks > MIN_ARRAY_SIZE && m_heap.usedBlocks < m_heap.numBlocks / LOW_WATER_FACTOR) { 237 240 m_heap.numBlocks = m_heap.numBlocks / GROWTH_FACTOR; 238 m_heap.blocks = static_cast<Aligned Block*>(fastRealloc(m_heap.blocks, m_heap.numBlocks * sizeof(AlignedBlock)));241 m_heap.blocks = static_cast<AlignedCollectorBlock*>(fastRealloc(m_heap.blocks, m_heap.numBlocks * sizeof(AlignedCollectorBlock))); 239 242 } 240 243 } … … 907 910 } 908 911 912 void Heap::updateWeakGCHandles() 913 { 914 for (unsigned i = 0; i < m_weakGCHandlePools.size(); ++i) 915 weakGCHandlePool(i)->update(); 916 } 917 918 void WeakGCHandlePool::update() 919 { 920 for (unsigned i = 1; i < WeakGCHandlePool::numPoolEntries; ++i) { 921 if (m_entries[i].isValidPtr()) { 922 JSCell* cell = m_entries[i].get(); 923 if (!cell || !Heap::isCellMarked(cell)) 924 m_entries[i].invalidate(); 925 } 926 } 927 } 928 929 WeakGCHandle* Heap::addWeakGCHandle(JSCell* ptr) 930 { 931 for (unsigned i = 0; i < m_weakGCHandlePools.size(); ++i) 932 if (!weakGCHandlePool(i)->isFull()) 933 return weakGCHandlePool(i)->allocate(ptr); 934 935 AlignedMemory<WeakGCHandlePool::poolSize> allocation = m_weakGCHandlePoolAllocator.allocate(); 936 m_weakGCHandlePools.append(allocation); 937 938 WeakGCHandlePool* pool = new (allocation) WeakGCHandlePool(); 939 return pool->allocate(ptr); 940 } 941 909 942 void Heap::protect(JSValue k) 910 943 { … … 1043 1076 markStack.compact(); 1044 1077 1078 updateWeakGCHandles(); 1079 1045 1080 m_heap.operationInProgress = NoOperation; 1046 1081 }
Note:
See TracChangeset
for help on using the changeset viewer.