#ifndef IncrementalSweeper_h #define IncrementalSweeper_h #include "MarkedBlock.h" #include #include #include #include #if USE(CF) #include #endif namespace JSC { class Heap; class IncrementalSweeper { public: ~IncrementalSweeper(); static PassOwnPtr create(Heap*); void startSweeping(const HashSet& blockSnapshot); private: #if USE(CF) IncrementalSweeper(Heap*, CFRunLoopRef); static void timerDidFire(CFRunLoopTimerRef, void*); void doSweep(double startTime); void scheduleTimer(); void cancelTimer(); Heap* m_heap; unsigned m_currentBlockToSweepIndex; RetainPtr m_timer; RetainPtr m_runLoop; CFRunLoopTimerContext m_context; double m_lengthOfLastSweepIncrement; Vector m_blocksToSweep; #else IncrementalSweeper(); #endif }; } // namespace JSC #endif