$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r54261 - in sandbox/monotonic: boost/monotonic libs/monotonic/test
From: christian.schladetsch_at_[hidden]
Date: 2009-06-23 01:04:39
Author: cschladetsch
Date: 2009-06-23 01:04:38 EDT (Tue, 23 Jun 2009)
New Revision: 54261
URL: http://svn.boost.org/trac/boost/changeset/54261
Log:
renamed static_storage_base to static_storage
Text files modified: 
   sandbox/monotonic/boost/monotonic/allocator.hpp               |     2 +-                                      
   sandbox/monotonic/boost/monotonic/forward_declarations.hpp    |    10 +++++++---                              
   sandbox/monotonic/boost/monotonic/local.hpp                   |    19 +++++++++++++------                     
   sandbox/monotonic/boost/monotonic/static_storage.hpp          |    31 ++++++++++++++++++++-----------         
   sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp |    28 ++++++++++++++--------------            
   5 files changed, 55 insertions(+), 35 deletions(-)
Modified: sandbox/monotonic/boost/monotonic/allocator.hpp
==============================================================================
--- sandbox/monotonic/boost/monotonic/allocator.hpp	(original)
+++ sandbox/monotonic/boost/monotonic/allocator.hpp	2009-06-23 01:04:38 EDT (Tue, 23 Jun 2009)
@@ -45,7 +45,7 @@
                         };
 
                         allocator() throw() 
-				: Parent(boost::monotonic::get_storage<Region,Access>()) { }
+				: Parent(static_storage<Region,Access>::get_storage()) { }
 
                 public:
                         allocator(storage_base &store) throw() 
Modified: sandbox/monotonic/boost/monotonic/forward_declarations.hpp
==============================================================================
--- sandbox/monotonic/boost/monotonic/forward_declarations.hpp	(original)
+++ sandbox/monotonic/boost/monotonic/forward_declarations.hpp	2009-06-23 01:04:38 EDT (Tue, 23 Jun 2009)
@@ -47,8 +47,12 @@
                         struct storage_type;
                 }
         
-		/// a RIIA structure for setting and resetting the global storage pointer
-		template <class Region, class Access = default_access_tag, class Storage = storage<> >
+		/// a RIIA structure for accessing and releasing storage
+		template <size_t N = DefaultSizes::InlineSize
+			, class Region = default_region_tag
+			, size_t M = DefaultSizes::MinHeapIncrement
+			, class Access = default_access_tag
+			, class Al = std::allocator<void> >
                 struct local;
 
                 /// thread-safe storage
@@ -69,7 +73,7 @@
                         , size_t InlineSize = DefaultSizes::StaticInlineSize
                         , size_t MinHeapIncrement = DefaultSizes::StaticMinHeapIncrement
                         , class Al = std::allocator<char> >
-		struct static_storage_base;
+		struct static_storage;
 
                 /// common to other monotonic allocators for type T of type Derived
                 template <class T, class Derived>
Modified: sandbox/monotonic/boost/monotonic/local.hpp
==============================================================================
--- sandbox/monotonic/boost/monotonic/local.hpp	(original)
+++ sandbox/monotonic/boost/monotonic/local.hpp	2009-06-23 01:04:38 EDT (Tue, 23 Jun 2009)
@@ -13,15 +13,26 @@
         namespace monotonic
         {
                 /// RIIA for storage
-		template <class Region, class Access = default_access_tag>
+		template <size_t InlineSize
+			, class Region
+			, size_t MinHeapIncrement
+			, class Access
+			, class Al
+		>
                 struct local
                 {
+			typedef static_storage<Region,Access,InlineSize,MinHeapIncrement,Al> StaticStorage;
+
                         local()
                         {
                         }
                         ~local()
                         {
-				release();
+				reset();
+			}
+			static typename StaticStorage::StorageType &get_storage()
+			{
+				return StaticStorage::get_storage();
                         }
                         static void reset()
                         {
@@ -31,10 +42,6 @@
                         {
                                 get_storage().release();
                         }
-			static storage_base &get_storage()
-			{
-				return ::boost::monotonic::get_storage<Region,Access>();
-			}
                 };
 
         } // namespace monotonic
Modified: sandbox/monotonic/boost/monotonic/static_storage.hpp
==============================================================================
--- sandbox/monotonic/boost/monotonic/static_storage.hpp	(original)
+++ sandbox/monotonic/boost/monotonic/static_storage.hpp	2009-06-23 01:04:38 EDT (Tue, 23 Jun 2009)
@@ -30,7 +30,7 @@
                         , size_t InlineSize
                         , size_t MinHeapIncrement
                         , class Al>
-		struct static_storage_base
+		struct static_storage
                 {
                         typedef Al HeapAllocator;
                         typedef detail::storage_type<Access> Selector;
@@ -40,7 +40,7 @@
                         static StorageType global;
 
                 public:
-			static_storage_base()
+			static_storage()
                         {
                         }
                         static StorageType &get_storage()
@@ -79,23 +79,32 @@
                         , size_t InlineSize
                         , size_t MinHeapIncrement
                         , class Al>
-		typename static_storage_base<Region, Access, InlineSize, MinHeapIncrement, Al>::StorageType 
-			static_storage_base<Region, Access, InlineSize, MinHeapIncrement, Al>::global;
+		typename static_storage<Region, Access, InlineSize, MinHeapIncrement, Al>::StorageType 
+			static_storage<Region, Access, InlineSize, MinHeapIncrement, Al>::global;
 
-		template <class Region, class Access>
-		inline storage_base &get_storage()
-		{
-			return static_storage_base<Region,Access>::get_storage();
-		}
+		//template <class Region
+		//	, class Access = default_access_tag
+		//	, size_t N = DefaultSizes::InlineSize
+		//	, size_t M = DefaultSizes::MinHeapIncrement
+		//	, class Al = std::allocator<void> >
+		//struct get_storage
+		//{
+		//	typedef static_storage_base<Region,Access,N,M,Al> StaticStorage;
+
+		//	static typename StaticStorage::StorageType &get()
+		//	{
+		//		return StaticStorage::get_storage();
+		//	}
+		//};
 
                 inline void reset_storage()
                 {
-			get_storage<default_region_tag, default_access_tag>().reset();
+			static_storage<default_region_tag>::reset();
                 }
 
                 inline void release_storage()
                 {
-			get_storage<default_region_tag, default_access_tag>().release();
+			static_storage<default_region_tag>::release();
                 }
 
         } // namespace monotonic
Modified: sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp
==============================================================================
--- sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp	(original)
+++ sandbox/monotonic/libs/monotonic/test/compare_memory_pool.cpp	2009-06-23 01:04:38 EDT (Tue, 23 Jun 2009)
@@ -99,20 +99,20 @@
                 result.mono_elapsed = timer.elapsed();
         }
 
-	//if (types.Includes(Type::Monotonic))
-	//{
-	//	srand(42);
-	//	monotonic::local<local_tag> storage;
-	//	boost::timer timer;
-	//	for (size_t n = 0; n < count; ++n)
-	//	{
-	//		{
-	//			fun.test(mono_alloc(), length);
-	//		}
-	//		storage.reset();
-	//	}
-	//	result.local_mono_elapsed = timer.elapsed();
-	//}
+	if (types.Includes(Type::Monotonic))
+	{
+		srand(42);
+		monotonic::local<64*1024, local_tag> storage;
+		boost::timer timer;
+		for (size_t n = 0; n < count; ++n)
+		{
+			{
+				fun.test(monotonic::allocator<void, local_tag>(), length);
+			}
+			storage.reset();
+		}
+		result.local_mono_elapsed = timer.elapsed();
+	}
 
         if (types.Includes(Type::Standard))
         {