$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r84919 - in trunk: boost/log/utility libs/log/src
From: andrey.semashev_at_[hidden]
Date: 2013-06-30 11:51:01
Author: andysem
Date: 2013-06-30 11:51:01 EDT (Sun, 30 Jun 2013)
New Revision: 84919
URL: http://svn.boost.org/trac/boost/changeset/84919
Log:
Minor optimizations.
Text files modified: 
   trunk/boost/log/utility/once_block.hpp |    31 +++++++++++++++----------------         
   trunk/libs/log/src/once_block.cpp      |    28 +++++++++++++++++-----------            
   2 files changed, 32 insertions(+), 27 deletions(-)
Modified: trunk/boost/log/utility/once_block.hpp
==============================================================================
--- trunk/boost/log/utility/once_block.hpp	Sun Jun 30 09:29:25 2013	(r84918)
+++ trunk/boost/log/utility/once_block.hpp	2013-06-30 11:51:01 EDT (Sun, 30 Jun 2013)	(r84919)
@@ -76,30 +76,30 @@
     once_block_flag& m_flag;
 
 public:
-    explicit once_block_sentry(once_block_flag& f) : m_flag(f)
+    explicit once_block_sentry(once_block_flag& f) BOOST_NOEXCEPT : m_flag(f)
     {
     }
 
-    ~once_block_sentry()
+    ~once_block_sentry() BOOST_NOEXCEPT
     {
         if (m_flag.status != once_block_flag::initialized)
             rollback();
     }
 
-    bool executed() const
+    bool executed() const BOOST_NOEXCEPT
     {
         return (m_flag.status == once_block_flag::initialized || enter_once_block());
     }
 
-    BOOST_LOG_API void commit();
+    BOOST_LOG_API void commit() BOOST_NOEXCEPT;
 
 private:
-    //  Non-copyable, non-assignable
-    once_block_sentry(once_block_sentry const&);
-    once_block_sentry& operator= (once_block_sentry const&);
+    BOOST_LOG_API bool enter_once_block() const BOOST_NOEXCEPT;
+    BOOST_LOG_API void rollback() BOOST_NOEXCEPT;
 
-    BOOST_LOG_API bool enter_once_block() const;
-    BOOST_LOG_API void rollback();
+    //  Non-copyable, non-assignable
+    BOOST_LOG_DELETED_FUNCTION(once_block_sentry(once_block_sentry const&))
+    BOOST_LOG_DELETED_FUNCTION(once_block_sentry& operator= (once_block_sentry const&))
 };
 
 } // namespace aux
@@ -129,24 +129,23 @@
     once_block_flag& m_flag;
 
 public:
-    explicit once_block_sentry(once_block_flag& f) : m_flag(f)
+    explicit once_block_sentry(once_block_flag& f) BOOST_NOEXCEPT : m_flag(f)
     {
     }
 
-    bool executed() const
+    bool executed() const BOOST_NOEXCEPT
     {
         return m_flag.status;
     }
 
-    void commit()
+    void commit() BOOST_NOEXCEPT
     {
         m_flag.status = true;
     }
 
-private:
     //  Non-copyable, non-assignable
-    once_block_sentry(once_block_sentry const&);
-    once_block_sentry& operator= (once_block_sentry const&);
+    BOOST_LOG_DELETED_FUNCTION(once_block_sentry(once_block_sentry const&))
+    BOOST_LOG_DELETED_FUNCTION(once_block_sentry& operator= (once_block_sentry const&))
 };
 
 } // namespace aux
@@ -161,7 +160,7 @@
 
 #define BOOST_LOG_ONCE_BLOCK_FLAG_INTERNAL(flag_var, sentry_var)\
     for (boost::log::aux::once_block_sentry sentry_var((flag_var));\
-        !sentry_var.executed(); sentry_var.commit())
+        BOOST_UNLIKELY(!sentry_var.executed()); sentry_var.commit())
 
 // NOTE: flag_var deliberately doesn't have an initializer so that it is zero-initialized at the static initialization stage
 #define BOOST_LOG_ONCE_BLOCK_INTERNAL(flag_var, sentry_var)\
Modified: trunk/libs/log/src/once_block.cpp
==============================================================================
--- trunk/libs/log/src/once_block.cpp	Sun Jun 30 09:29:25 2013	(r84918)
+++ trunk/libs/log/src/once_block.cpp	2013-06-30 11:51:01 EDT (Sun, 30 Jun 2013)	(r84919)
@@ -18,6 +18,7 @@
 #include <boost/log/utility/once_block.hpp>
 #ifndef BOOST_LOG_NO_THREADS
 
+#include <cstdlib>
 #include <boost/assert.hpp>
 
 #if defined(BOOST_THREAD_PLATFORM_WIN32)
@@ -42,7 +43,7 @@
 
 } // namespace
 
-BOOST_LOG_API bool once_block_sentry::enter_once_block() const
+BOOST_LOG_API bool once_block_sentry::enter_once_block() const BOOST_NOEXCEPT
 {
     AcquireSRWLockExclusive(&g_OnceBlockMutex);
 
@@ -72,7 +73,7 @@
     return true;
 }
 
-BOOST_LOG_API void once_block_sentry::commit()
+BOOST_LOG_API void once_block_sentry::commit() BOOST_NOEXCEPT
 {
     AcquireSRWLockExclusive(&g_OnceBlockMutex);
 
@@ -83,7 +84,7 @@
     WakeAllConditionVariable(&g_OnceBlockCond);
 }
 
-BOOST_LOG_API void once_block_sentry::rollback()
+BOOST_LOG_API void once_block_sentry::rollback() BOOST_NOEXCEPT
 {
     AcquireSRWLockExclusive(&g_OnceBlockMutex);
 
@@ -328,10 +329,10 @@
         delete impl;
     }
 
-    once_block_impl_base* get_once_block_impl()
+    once_block_impl_base* get_once_block_impl() BOOST_NOEXCEPT
     {
         once_block_impl_base* impl = g_pOnceBlockImpl;
-        if (!impl)
+        if (!impl) try
         {
             once_block_impl_base* new_impl = create_once_block_impl();
             impl = (once_block_impl_base*)
@@ -346,23 +347,28 @@
                 return new_impl;
             }
         }
+        catch (...)
+        {
+            BOOST_ASSERT_MSG(false, "Boost.Log: Failed to initialize the once block thread synchronization structures");
+            std::abort();
+        }
 
         return impl;
     }
 
 } // namespace
 
-BOOST_LOG_API bool once_block_sentry::enter_once_block() const
+BOOST_LOG_API bool once_block_sentry::enter_once_block() const BOOST_NOEXCEPT
 {
     return get_once_block_impl()->enter_once_block(m_flag);
 }
 
-BOOST_LOG_API void once_block_sentry::commit()
+BOOST_LOG_API void once_block_sentry::commit() BOOST_NOEXCEPT
 {
     get_once_block_impl()->commit(m_flag);
 }
 
-BOOST_LOG_API void once_block_sentry::rollback()
+BOOST_LOG_API void once_block_sentry::rollback() BOOST_NOEXCEPT
 {
     get_once_block_impl()->rollback(m_flag);
 }
@@ -395,7 +401,7 @@
 
 } // namespace
 
-BOOST_LOG_API bool once_block_sentry::enter_once_block() const
+BOOST_LOG_API bool once_block_sentry::enter_once_block() const BOOST_NOEXCEPT
 {
     BOOST_VERIFY(!pthread_mutex_lock(&g_OnceBlockMutex));
 
@@ -424,7 +430,7 @@
     return true;
 }
 
-BOOST_LOG_API void once_block_sentry::commit()
+BOOST_LOG_API void once_block_sentry::commit() BOOST_NOEXCEPT
 {
     BOOST_VERIFY(!pthread_mutex_lock(&g_OnceBlockMutex));
 
@@ -435,7 +441,7 @@
     BOOST_VERIFY(!pthread_cond_broadcast(&g_OnceBlockCond));
 }
 
-BOOST_LOG_API void once_block_sentry::rollback()
+BOOST_LOG_API void once_block_sentry::rollback() BOOST_NOEXCEPT
 {
     BOOST_VERIFY(!pthread_mutex_lock(&g_OnceBlockMutex));