#define IncrementalSweeper_h
#include "HeapTimer.h"
-#include "MarkedBlock.h"
-#include <wtf/HashSet.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/RetainPtr.h>
#include <wtf/Vector.h>
namespace JSC {
class Heap;
+class MarkedBlock;
class IncrementalSweeper : public HeapTimer {
+ WTF_MAKE_FAST_ALLOCATED;
public:
- static PassOwnPtr<IncrementalSweeper> create(Heap*);
- void startSweeping(Vector<MarkedBlock*>&);
-#if PLATFORM(IOS)
- JS_EXPORT_PRIVATE virtual void doWork();
+#if USE(CF)
+ JS_EXPORT_PRIVATE IncrementalSweeper(Heap*, CFRunLoopRef);
#else
- virtual void doWork();
+ explicit IncrementalSweeper(VM*);
#endif
- void sweepNextBlock();
+
+ void startSweeping();
+
+ JS_EXPORT_PRIVATE virtual void doWork() override;
+ bool sweepNextBlock();
void willFinishSweeping();
-#if USE(CF) || PLATFORM(BLACKBERRY) || PLATFORM(QT)
#if USE(CF)
-protected:
- JS_EXPORT_PRIVATE IncrementalSweeper(Heap*, CFRunLoopRef);
-#else
-private:
- IncrementalSweeper(Heap*);
-#endif
-
private:
void doSweep(double startTime);
void scheduleTimer();
void cancelTimer();
- unsigned m_currentBlockToSweepIndex;
Vector<MarkedBlock*>& m_blocksToSweep;
-#else
-
-private:
- IncrementalSweeper(VM*);
-
#endif
};