Changeset 79087 in webkit
- Timestamp:
- Feb 18, 2011 8:24:14 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r79083 r79087 1 2011-02-18 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Sam Weinig. 4 5 Made MarkedSpace block iteration size-class agnostic 6 https://bugs.webkit.org/show_bug.cgi?id=54792 7 8 SunSpider reports no change. 9 10 * runtime/MarkedSpace.cpp: 11 (JSC::MarkedSpace::clearMarks): 12 (JSC::MarkedSpace::sweep): 13 (JSC::MarkedSpace::objectCount): 14 (JSC::MarkedSpace::size): 15 (JSC::MarkedSpace::capacity): 16 * runtime/MarkedSpace.h: 17 (JSC::MarkedSpace::forEach): Iterate blocks in hashing order instead of 18 size class list order. This is a much simpler convention in a world 19 of many different size classes. 20 1 21 2011-02-18 Kristian Amlie <kristian.amlie@nokia.com> 2 22 -
trunk/Source/JavaScriptCore/runtime/MarkedSpace.cpp
r79079 r79087 94 94 void MarkedSpace::clearMarks() 95 95 { 96 for (size_t i = 0; i < m_heap.blocks.size(); ++i) 97 m_heap.collectorBlock(i)->clearMarks(); 96 BlockIterator end = m_blocks.end(); 97 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 98 (*it)->clearMarks(); 98 99 } 99 100 100 101 void MarkedSpace::sweep() 101 102 { 102 for (size_t i = 0; i < m_heap.blocks.size(); ++i) 103 m_heap.collectorBlock(i)->sweep(); 103 BlockIterator end = m_blocks.end(); 104 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 105 (*it)->sweep(); 104 106 } 105 107 … … 107 109 { 108 110 size_t result = 0; 109 for (size_t i = 0; i < m_heap.blocks.size(); ++i) 110 result += m_heap.collectorBlock(i)->markCount(); 111 BlockIterator end = m_blocks.end(); 112 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 113 result += (*it)->markCount(); 111 114 return result; 112 115 } … … 115 118 { 116 119 size_t result = 0; 117 for (size_t i = 0; i < m_heap.blocks.size(); ++i) 118 result += m_heap.collectorBlock(i)->size(); 120 BlockIterator end = m_blocks.end(); 121 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 122 result += (*it)->size(); 119 123 return result; 120 124 } … … 123 127 { 124 128 size_t result = 0; 125 for (size_t i = 0; i < m_heap.blocks.size(); ++i) 126 result += m_heap.collectorBlock(i)->capacity(); 129 BlockIterator end = m_blocks.end(); 130 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 131 result += (*it)->capacity(); 127 132 return result; 128 133 } -
trunk/Source/JavaScriptCore/runtime/MarkedSpace.h
r79079 r79087 98 98 99 99 private: 100 typedef HashSet<MarkedBlock*>::iterator BlockIterator; 101 100 102 NEVER_INLINE MarkedBlock* allocateBlock(); 101 103 NEVER_INLINE void freeBlock(size_t); … … 144 146 template <typename Functor> inline void MarkedSpace::forEach(Functor& functor) 145 147 { 146 for (size_t i = 0; i < m_heap.blocks.size(); ++i) 147 m_heap.collectorBlock(i)->forEach(functor); 148 BlockIterator end = m_blocks.end(); 149 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 150 (*it)->forEach(functor); 148 151 } 149 152
Note: See TracChangeset
for help on using the changeset viewer.