Changeset 161540 in webkit for trunk/Source/JavaScriptCore/heap/MarkStack.cpp
- Timestamp:
- Jan 8, 2014, 7:49:38 PM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/MarkStack.cpp
r140195 r161540 58 58 MarkStackArray::~MarkStackArray() 59 59 { 60 ASSERT(m_numberOfSegments == 1 && m_segments.size() == 1); 60 ASSERT(m_numberOfSegments == 1); 61 ASSERT(m_segments.size() == 1); 61 62 m_blockAllocator.deallocate(MarkStackSegment::destroy(m_segments.removeHead())); 63 m_numberOfSegments--; 64 ASSERT(!m_numberOfSegments); 65 ASSERT(!m_segments.size()); 66 } 67 68 void MarkStackArray::clear() 69 { 70 if (!m_segments.head()) 71 return; 72 MarkStackSegment* next; 73 for (MarkStackSegment* current = m_segments.head(); current->next(); current = next) { 74 next = current->next(); 75 m_segments.remove(current); 76 m_blockAllocator.deallocate(MarkStackSegment::destroy(current)); 77 } 78 m_top = 0; 79 m_numberOfSegments = 1; 80 #if !ASSERT_DISABLED 81 m_segments.head()->m_top = 0; 82 #endif 62 83 } 63 84 … … 168 189 } 169 190 191 void MarkStackArray::fillVector(Vector<const JSCell*>& vector) 192 { 193 ASSERT(vector.size() == size()); 194 195 MarkStackSegment* currentSegment = m_segments.head(); 196 if (!currentSegment) 197 return; 198 199 unsigned count = 0; 200 for (unsigned i = 0; i < m_top; ++i) { 201 ASSERT(currentSegment->data()[i]); 202 vector[count++] = currentSegment->data()[i]; 203 } 204 205 currentSegment = currentSegment->next(); 206 while (currentSegment) { 207 for (unsigned i = 0; i < s_segmentCapacity; ++i) { 208 ASSERT(currentSegment->data()[i]); 209 vector[count++] = currentSegment->data()[i]; 210 } 211 currentSegment = currentSegment->next(); 212 } 213 } 214 170 215 } // namespace JSC
Note:
See TracChangeset
for help on using the changeset viewer.