From e892e9bb4e741e71a6c920b0bf9ce4a5cdad2e62 Mon Sep 17 00:00:00 2001 From: Vinnie Falco Date: Thu, 5 Sep 2013 04:29:48 -0700 Subject: [PATCH] Replace obsolete OncePerSecond with DeadlineTimer --- Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj | 7 ------- .../Builds/VisualStudio2012/beast.vcxproj.filters | 6 ------ Subtrees/beast/modules/beast_core/beast_core.cpp | 1 - Subtrees/beast/modules/beast_core/beast_core.h | 1 - .../beast_core/memory/beast_PagedFreeStore.cpp | 11 +++++++---- .../modules/beast_core/memory/beast_PagedFreeStore.h | 5 +++-- 6 files changed, 10 insertions(+), 21 deletions(-) diff --git a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj index bd9f426edb..85fdc55d52 100644 --- a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj +++ b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj @@ -275,7 +275,6 @@ - @@ -1017,12 +1016,6 @@ true true - - true - true - true - true - true true diff --git a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters index e4c94c5e86..0b307e9f47 100644 --- a/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters +++ b/Subtrees/beast/Builds/VisualStudio2012/beast.vcxproj.filters @@ -809,9 +809,6 @@ beast_core\thread - - beast_core\thread - beast_core\thread @@ -1405,9 +1402,6 @@ beast_core\thread - - beast_core\thread - beast_core\thread diff --git a/Subtrees/beast/modules/beast_core/beast_core.cpp b/Subtrees/beast/modules/beast_core/beast_core.cpp index aae18a2485..e837f976d7 100644 --- a/Subtrees/beast/modules/beast_core/beast_core.cpp +++ b/Subtrees/beast/modules/beast_core/beast_core.cpp @@ -213,7 +213,6 @@ namespace beast #include "thread/impl/TrackedMutex.cpp" #include "thread/beast_DeadlineTimer.cpp" -#include "thread/beast_OncePerSecond.cpp" #include "thread/beast_InterruptibleThread.cpp" #include "thread/beast_Semaphore.cpp" #include "thread/beast_CallQueue.cpp" diff --git a/Subtrees/beast/modules/beast_core/beast_core.h b/Subtrees/beast/modules/beast_core/beast_core.h index 2e4702d078..87d0144bd8 100644 --- a/Subtrees/beast/modules/beast_core/beast_core.h +++ b/Subtrees/beast/modules/beast_core/beast_core.h @@ -409,7 +409,6 @@ extern BEAST_API void BEAST_CALLTYPE logAssertion (char const* file, int line) n #include "functional/beast_Function.h" #include "thread/beast_DeadlineTimer.h" -#include "thread/beast_OncePerSecond.h" #include "memory/beast_AllocatedBy.h" #include "memory/beast_PagedFreeStore.h" diff --git a/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.cpp b/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.cpp index cbdec29b74..fe022ecfc9 100644 --- a/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.cpp +++ b/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.cpp @@ -81,7 +81,8 @@ inline PagedFreeStore::Page* PagedFreeStore::toPage (void* const p) //------------------------------------------------------------------------------ PagedFreeStore::PagedFreeStore (const size_t pageBytes) - : m_pageBytes (pageBytes) + : m_timer (this) + , m_pageBytes (pageBytes) , m_pageBytesAvailable (pageBytes - Memory::sizeAdjustedForAlignment (sizeof (Page))) , m_newPagesLeft (int ((hardLimitMegaBytes * 1024 * 1024) / m_pageBytes)) #if LOG_GC @@ -91,12 +92,12 @@ PagedFreeStore::PagedFreeStore (const size_t pageBytes) m_hot = m_pool1; m_cold = m_pool2; - startOncePerSecond (); + m_timer.setExpiration (1.0); } PagedFreeStore::~PagedFreeStore () { - endOncePerSecond (); + m_timer.reset (); #if LOG_GC bassert (!m_used.isSignaled ()); @@ -162,7 +163,7 @@ void PagedFreeStore::deallocate (void* const p) // // Perform garbage collection. // -void PagedFreeStore::doOncePerSecond () +void PagedFreeStore::onDeadlineTimer (DeadlineTimer&) { // Physically free one page. // This will reduce the working set over time after a spike. @@ -195,6 +196,8 @@ void PagedFreeStore::doOncePerSecond () << String (m_newPagesLeft.get ()) << ")"; Logger::outputDebugString (s); #endif + + m_timer.setExpiration (1.0); } void PagedFreeStore::dispose (Pages& pages) diff --git a/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.h b/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.h index ebe923fd02..8bfd8045e2 100644 --- a/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.h +++ b/Subtrees/beast/modules/beast_core/memory/beast_PagedFreeStore.h @@ -29,7 +29,7 @@ @ingroup beast_concurrent */ -class BEAST_API PagedFreeStore : private OncePerSecond +class BEAST_API PagedFreeStore : private DeadlineTimer::Listener { public: explicit PagedFreeStore (const size_t pageBytes); @@ -56,7 +56,7 @@ public: private: void* newPage (); - void doOncePerSecond (); + void onDeadlineTimer (DeadlineTimer&); private: struct Page; @@ -75,6 +75,7 @@ private: void dispose (Pool& pool); private: + DeadlineTimer m_timer; const size_t m_pageBytes; const size_t m_pageBytesAvailable; CacheLine::Aligned m_pool1; // pair of pools