diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-20 13:01:08 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-06-20 13:01:08 +0200 |
commit | 49233e234e5c787396cadb2cea33b31ae0cd65c1 (patch) | |
tree | 5410cb9a8fd53168bb60d62c54b654d86f03c38d /Source/JavaScriptCore/heap/IncrementalSweeper.cpp | |
parent | b211c645d8ab690f713515dfdc84d80b11c27d2c (diff) | |
download | qtwebkit-49233e234e5c787396cadb2cea33b31ae0cd65c1.tar.gz |
Imported WebKit commit 3a8c29f35d00659d2ce7a0ccdfa8304f14e82327 (http://svn.webkit.org/repository/webkit/trunk@120813)
New snapshot with Windows build fixes
Diffstat (limited to 'Source/JavaScriptCore/heap/IncrementalSweeper.cpp')
-rw-r--r-- | Source/JavaScriptCore/heap/IncrementalSweeper.cpp | 32 |
1 files changed, 10 insertions, 22 deletions
diff --git a/Source/JavaScriptCore/heap/IncrementalSweeper.cpp b/Source/JavaScriptCore/heap/IncrementalSweeper.cpp index 08a9f6c73..0d0116f42 100644 --- a/Source/JavaScriptCore/heap/IncrementalSweeper.cpp +++ b/Source/JavaScriptCore/heap/IncrementalSweeper.cpp @@ -14,33 +14,20 @@ namespace JSC { #if USE(CF) -static const CFTimeInterval decade = 60 * 60 * 24 * 365 * 10; static const CFTimeInterval sweepTimeSlicePerBlock = 0.01; static const CFTimeInterval sweepTimeMultiplier = 1.0 / sweepTimeSlicePerBlock; -void IncrementalSweeper::timerDidFire(CFRunLoopTimerRef, void* info) +void IncrementalSweeper::doWork() { - Heap* heap = static_cast<Heap*>(info); - APIEntryShim shim(heap->globalData()); - heap->sweeper()->doSweep(WTF::monotonicallyIncreasingTime()); + APIEntryShim shim(m_globalData); + doSweep(WTF::monotonicallyIncreasingTime()); } IncrementalSweeper::IncrementalSweeper(Heap* heap, CFRunLoopRef runLoop) - : m_heap(heap) + : HeapTimer(heap->globalData(), runLoop) , m_currentBlockToSweepIndex(0) , m_lengthOfLastSweepIncrement(0.0) { - memset(&m_context, 0, sizeof(CFRunLoopTimerContext)); - m_context.info = m_heap; - m_runLoop = runLoop; - m_timer.adoptCF(CFRunLoopTimerCreate(0, CFAbsoluteTimeGetCurrent(), decade, 0, 0, &timerDidFire, &m_context)); - CFRunLoopAddTimer(m_runLoop.get(), m_timer.get(), kCFRunLoopCommonModes); -} - -IncrementalSweeper::~IncrementalSweeper() -{ - CFRunLoopRemoveTimer(m_runLoop.get(), m_timer.get(), kCFRunLoopCommonModes); - CFRunLoopTimerInvalidate(m_timer.get()); } PassOwnPtr<IncrementalSweeper> IncrementalSweeper::create(Heap* heap) @@ -55,7 +42,7 @@ void IncrementalSweeper::scheduleTimer() void IncrementalSweeper::cancelTimer() { - CFRunLoopTimerSetNextFireDate(m_timer.get(), CFAbsoluteTimeGetCurrent() + decade); + CFRunLoopTimerSetNextFireDate(m_timer.get(), CFAbsoluteTimeGetCurrent() + s_decade); } void IncrementalSweeper::doSweep(double sweepBeginTime) @@ -85,17 +72,18 @@ void IncrementalSweeper::startSweeping(const HashSet<MarkedBlock*>& blockSnapsho #else -IncrementalSweeper::IncrementalSweeper() +IncrementalSweeper::IncrementalSweeper(JSGlobalData* globalData) + : HeapTimer(globalData) { } -IncrementalSweeper::~IncrementalSweeper() +void IncrementalSweeper::doWork() { } -PassOwnPtr<IncrementalSweeper> IncrementalSweeper::create(Heap*) +PassOwnPtr<IncrementalSweeper> IncrementalSweeper::create(Heap* heap) { - return adoptPtr(new IncrementalSweeper()); + return adoptPtr(new IncrementalSweeper(heap->globalData())); } void IncrementalSweeper::startSweeping(const HashSet<MarkedBlock*>&) |