diff --git a/Builds/VisualStudio2012/beast.vcxproj b/Builds/VisualStudio2012/beast.vcxproj index bd9f426edb..85fdc55d52 100644 --- a/Builds/VisualStudio2012/beast.vcxproj +++ b/Builds/VisualStudio2012/beast.vcxproj @@ -275,7 +275,6 @@ - @@ -1017,12 +1016,6 @@ true true - - true - true - true - true - true true diff --git a/Builds/VisualStudio2012/beast.vcxproj.filters b/Builds/VisualStudio2012/beast.vcxproj.filters index e4c94c5e86..0b307e9f47 100644 --- a/Builds/VisualStudio2012/beast.vcxproj.filters +++ b/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/modules/beast_core/beast_core.cpp b/modules/beast_core/beast_core.cpp index aae18a2485..e837f976d7 100644 --- a/modules/beast_core/beast_core.cpp +++ b/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/modules/beast_core/beast_core.h b/modules/beast_core/beast_core.h index 2e4702d078..87d0144bd8 100644 --- a/modules/beast_core/beast_core.h +++ b/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/modules/beast_core/memory/beast_PagedFreeStore.cpp b/modules/beast_core/memory/beast_PagedFreeStore.cpp index cbdec29b74..fe022ecfc9 100644 --- a/modules/beast_core/memory/beast_PagedFreeStore.cpp +++ b/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/modules/beast_core/memory/beast_PagedFreeStore.h b/modules/beast_core/memory/beast_PagedFreeStore.h index ebe923fd02..8bfd8045e2 100644 --- a/modules/beast_core/memory/beast_PagedFreeStore.h +++ b/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