Changeset 226725 in webkit for trunk/Source/JavaScriptCore/heap/IsoCellSet.cpp
- Timestamp:
- Jan 10, 2018, 11:41:12 AM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/IsoCellSet.cpp
r226667 r226725 45 45 if (isOnList()) 46 46 BasicRawSentinelNode<IsoCellSet>::remove(); 47 }48 49 RefPtr<SharedTask<MarkedBlock::Handle*()>> IsoCellSet::parallelNotEmptyMarkedBlockSource()50 {51 class Task : public SharedTask<MarkedBlock::Handle*()> {52 public:53 Task(IsoCellSet& set)54 : m_set(set)55 , m_allocator(set.m_subspace.m_allocator)56 {57 }58 59 MarkedBlock::Handle* run() override60 {61 if (m_done)62 return nullptr;63 auto locker = holdLock(m_lock);64 auto bits = m_allocator.m_markingNotEmpty & m_set.m_blocksWithBits;65 m_index = bits.findBit(m_index, true);66 if (m_index >= m_allocator.m_blocks.size()) {67 m_done = true;68 return nullptr;69 }70 return m_allocator.m_blocks[m_index++];71 }72 73 private:74 IsoCellSet& m_set;75 MarkedAllocator& m_allocator;76 size_t m_index { 0 };77 Lock m_lock;78 bool m_done { false };79 };80 81 return adoptRef(new Task(*this));82 47 } 83 48
Note:
See TracChangeset
for help on using the changeset viewer.