Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r57221 - in sandbox/stm/branches/vbe: boost/stm boost/stm/detail boost/stm/latm libs/stm/src libs/stm/test
From: vicente.botet_at_[hidden]
Date: 2009-10-29 05:27:29


Author: viboes
Date: 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
New Revision: 57221
URL: http://svn.boost.org/trac/boost/changeset/57221

Log:
TBoost.STM vbe:
* Continue moving LATM specificities to latm directory and namespace
* changing the prototype of pthread_lock/unlock to a void function to conform with the lockable concept
Added:
   sandbox/stm/branches/vbe/boost/stm/latm/dynamic_mode.hpp
      - copied, changed from r57154, /sandbox/stm/branches/vbe/boost/stm/latm/dynamic.hpp
   sandbox/stm/branches/vbe/boost/stm/latm/full_mode.hpp
      - copied, changed from r57154, /sandbox/stm/branches/vbe/boost/stm/latm/full.hpp
Removed:
   sandbox/stm/branches/vbe/boost/stm/latm/dynamic.hpp
   sandbox/stm/branches/vbe/boost/stm/latm/full.hpp
Text files modified:
   sandbox/stm/branches/vbe/boost/stm/detail/config.hpp | 16 ++
   sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp | 42 +++---
   sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp | 50 ++++----
   sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp | 42 +++---
   sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp | 46 ++++----
   sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp | 56 +++++-----
   sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp | 44 ++++----
   sandbox/stm/branches/vbe/boost/stm/detail/latm_general_impl.hpp | 63 ++++++-----
   sandbox/stm/branches/vbe/boost/stm/detail/transaction_impl.hpp | 9
   sandbox/stm/branches/vbe/boost/stm/latm/base_mode.hpp | 52 ++++++---
   sandbox/stm/branches/vbe/boost/stm/latm/datatypes.hpp | 1
   sandbox/stm/branches/vbe/boost/stm/latm/dynamic_mode.hpp | 97 +++--------------
   sandbox/stm/branches/vbe/boost/stm/latm/full_mode.hpp | 96 ++++++++++++-----
   sandbox/stm/branches/vbe/boost/stm/latm/selector.hpp | 12 +
   sandbox/stm/branches/vbe/boost/stm/transaction.hpp | 88 ++++++---------
   sandbox/stm/branches/vbe/libs/stm/src/transaction.cpp | 36 +++++-
   sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2 | 214 +++++++++++++++++++++++++++++++--------
   sandbox/stm/branches/vbe/libs/stm/test/isolatedComposedIntLockInTx2.cpp | 114 ++++++++++++--------
   sandbox/stm/branches/vbe/libs/stm/test/litExample.cpp | 8
   sandbox/stm/branches/vbe/libs/stm/test/lotExample.cpp | 4
   sandbox/stm/branches/vbe/libs/stm/test/nestedTxs.cpp | 6
   sandbox/stm/branches/vbe/libs/stm/test/testHT_latm.cpp | 2
   sandbox/stm/branches/vbe/libs/stm/test/testHashMapAndLinkedListsWithLocks.cpp | 3
   sandbox/stm/branches/vbe/libs/stm/test/testHashMapWithLocks.cpp | 2
   sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.cpp | 2
   sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.h | 7 -
   sandbox/stm/branches/vbe/libs/stm/test/txLinearLock.cpp | 4
   sandbox/stm/branches/vbe/libs/stm/test/usingLockTx.h | 4
   28 files changed, 642 insertions(+), 478 deletions(-)

Modified: sandbox/stm/branches/vbe/boost/stm/detail/config.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/config.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/config.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -116,6 +116,22 @@
 
 #define BOOST_STM_USE_BOOST_SYNCHRO 1
 
+///////////////////////////////////////////////////////////////////////////////
+// BOOST_STM_LATM_STATIC_MODE
+// BOOST_STM_LATM_STATIC_FULL_MODE
+// BOOST_STM_LATM_STATIC_TM_MODE
+// BOOST_STM_LATM_STATIC_TX_MODE
+// BOOST_STM_LATM_DYNAMIC_MODE
+
+//#define BOOST_STM_LATM_STATIC_FULL_MODE 1
+//#define BOOST_STM_LATM_STATIC_TM_MODE 1
+//#define BOOST_STM_LATM_STATIC_TX_MODE 1
+//#define BOOST_STM_LATM_DYNAMIC_MODE 1
+
+#if defined(BOOST_STM_LATM_STATIC_FULL_MODE) || defined(BOOST_STM_LATM_STATIC_TM_MODE) || defined(BOOST_STM_LATM_STATIC_TX_MODE)
+#define BOOST_STM_LATM_STATIC_MODE 1
+#endif
+
 #endif // BOOST_STM_DETAIL_CONFIG_H
 
 

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_def_full_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -56,7 +56,7 @@
    // if the lock-aware tm lock set is empty, lock the in-flight trans mutex
    // so we can abort all the in-flight transactions
    //--------------------------------------------------------------------------
- if (latmLockedLocks_.empty())
+ if (latm::instance().latmLockedLocks_.empty())
    {
       synchro::lock_guard<Mutex> lock_g(*general_lock());
       //synchro::lock(*general_lock());
@@ -91,7 +91,7 @@
       //synchro::unlock(*inflight_lock());
    }
 
- try { latmLockedLocks_.insert(mutex); }
+ try { latm::instance().latmLockedLocks_.insert(mutex); }
    catch (...)
    {
       synchro::unlock(*inflight_lock());
@@ -104,7 +104,7 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::def_full_pthread_lock_mutex(latm::mutex_type* mutex)
+inline void transaction::def_full_pthread_lock_mutex(latm::mutex_type* mutex)
 {
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
@@ -117,15 +117,15 @@
       t->commit_deferred_update_tx();
        { synchro::lock_guard<Mutex> lock_l(*latm_lock());
       //synchro::lock(*latm_lock());
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
        }
 
       // TBR if (hadLock) return 0;
       // TBR else return lock(mutex);
- if (hadLock) return 0;
+ if (hadLock) return;
       else synchro::lock(*mutex);
- return 0;
+ return;
    }
 
    int waitTime = 0, aborted = 0;
@@ -136,7 +136,7 @@
       //{
       synchro::lock(*mutex);
       //synchro::lock_guard<Mutex> lock_m(*mutex);
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
       //synchro::lock_guard<Mutex> lock_l(latmMutex_);
       try
       {
@@ -148,7 +148,7 @@
       catch (...)
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          throw;
       }
 
@@ -156,7 +156,7 @@
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
       //}
 
       SLEEP(cm_lock_sleep_time());
@@ -164,9 +164,9 @@
       ++aborted;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
- return 0;
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
+ return;
 }
 
 //----------------------------------------------------------------------------
@@ -185,7 +185,7 @@
       t->commit_deferred_update_tx();
        { synchro::lock_guard<Mutex> lock_l(*latm_lock());
       //synchro::lock(*latm_lock());
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
        }
 
@@ -198,7 +198,7 @@
    if (!synchro::try_lock(*mutex)) return 1;
 
    //synchro::lock(latmMutex_);
- synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
 
    try
    {
@@ -219,7 +219,7 @@
       throw;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
    //synchro::unlock(latmMutex_);
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
@@ -229,10 +229,10 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::def_full_pthread_unlock_mutex(latm::mutex_type* mutex)
+inline void transaction::def_full_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
    bool hasLock = true;
- { synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ { synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
     //synchro::lock(latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
@@ -249,18 +249,18 @@
       t->remove_from_currently_locked_locks(mutex);
    }
 
- latmLockedLocks_.erase(mutex);
+ latm::instance().latmLockedLocks_.erase(mutex);
 
- if (latmLockedLocks_.empty()) synchro::unlock(*inflight_lock());
+ if (latm::instance().latmLockedLocks_.empty()) synchro::unlock(*inflight_lock());
 
- latmLockedLocksOfThreadMap_.erase(mutex);
+ latm::instance().latmLockedLocksOfThreadMap_.erase(mutex);
    //synchro::unlock(latmMutex_);
    }
 
    // TBR if (hasLock) return unlock(mutex);
    // TBR else return 0;
    if (hasLock) synchro::unlock(*mutex);
- return 0;
+ return;
 }
 
 }}

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tm_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -58,11 +58,11 @@
    //
    // if it isn't we don't interrupt any in-flight transactions
    //--------------------------------------------------------------------------
- if (tmConflictingLocks_.find(mutex) != tmConflictingLocks_.end())
+ if (latm::instance().tmConflictingLocks_.find(mutex) != latm::instance().tmConflictingLocks_.end())
    {
       // if the lock-aware tm lock set is empty, lock the in-flight trans mutex
       // so we can abort all the in-flight transactions
- if (latmLockedLocks_.empty())
+ if (latm::instance().latmLockedLocks_.empty())
       {
          synchro::lock_guard<Mutex> autolock_g(*general_lock());
          synchro::lock_guard<Mutex> autolock_i(*inflight_lock());
@@ -88,7 +88,7 @@
          }
       }
 
- latmLockedLocks_.insert(mutex);
+ latm::instance().latmLockedLocks_.insert(mutex);
    }
 
    return true;
@@ -97,11 +97,11 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::def_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
+inline void transaction::def_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
 {
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
- transaction::must_be_in_tm_conflicting_lock_set(mutex);
+ latm::instance().must_be_in_tm_conflicting_lock_set(mutex);
       t->make_isolated();
       t->commit_deferred_update_tx();
 
@@ -111,15 +111,15 @@
       {
           synchro::lock_guard<Mutex> lock_l(*latm_lock());
       //synchro::lock(*latm_lock());
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
       }
 
       // TBR if (hadLock) return 0;
       // TBR else return lock(mutex);
- if (hadLock) return 0;
+ if (hadLock) return;
       else synchro::lock(*mutex);
- return 0;
+ return;
    }
 
    int waitTime = 0, aborted = 0;
@@ -132,7 +132,7 @@
        //synchro::lock_guard<Mutex> lock_m(*latm_lock());
        //synchro::lock_guard<Mutex> lock_l(latmMutex_);
        synchro::lock(*mutex);
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
       try
       {
@@ -145,7 +145,7 @@
       catch (...)
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          throw;
       }
 
@@ -153,7 +153,7 @@
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
       //}
 
       SLEEP(cm_lock_sleep_time());
@@ -161,10 +161,10 @@
       ++aborted;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
 
- return 0;
+ return;
 }
 
 //----------------------------------------------------------------------------
@@ -174,7 +174,7 @@
 {
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
- transaction::must_be_in_tm_conflicting_lock_set(mutex);
+ latm::instance().must_be_in_tm_conflicting_lock_set(mutex);
       t->make_isolated();
       t->commit_deferred_update_tx();
 
@@ -184,7 +184,7 @@
       {
       synchro::lock_guard<Mutex> lock_l(*latm_lock());
       //synchro::lock(*latm_lock());
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       //synchro::unlock(*latm_lock());
       }
 
@@ -200,7 +200,7 @@
    if (!synchro::try_lock(*mutex)) return 1;
 
    //synchro::lock(latmMutex_);
- synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
 
    try
    {
@@ -221,7 +221,7 @@
       throw;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
    //synchro::unlock(latmMutex_);
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
@@ -231,11 +231,11 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::def_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
+inline void transaction::def_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
    bool hasLock = true;
    {
- synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
    //synchro::lock(latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
@@ -257,21 +257,21 @@
    // it from the latmLocks and check to see if we allow transactions to
    // continue.
    //--------------------------------------------------------------------------
- if (tmConflictingLocks_.find(mutex) != tmConflictingLocks_.end())
+ if (latm::instance().tmConflictingLocks_.find(mutex) != latm::instance().tmConflictingLocks_.end())
    {
- latmLockedLocks_.erase(mutex);
+ latm::instance().latmLockedLocks_.erase(mutex);
 
- if (latmLockedLocks_.empty()) synchro::unlock(*inflight_lock());
+ if (latm::instance().latmLockedLocks_.empty()) synchro::unlock(*inflight_lock());
    }
 
- latmLockedLocksOfThreadMap_.erase(mutex);
+ latm::instance().latmLockedLocksOfThreadMap_.erase(mutex);
    //synchro::unlock(latmMutex_);
    }
 
    // TBR if (hasLock) return unlock(mutex);
    // TBR else return 0;
    if (hasLock) synchro::unlock(*mutex);
- return 0;
+ return;
 }
 
 }}

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_def_tx_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -93,7 +93,7 @@
       }
 
       try {
- latmLockedLocksAndThreadIdsMap_.insert
+ latm::instance().latmLockedLocksAndThreadIdsMap_.insert
          (std::make_pair<latm::mutex_type*, ThreadIdSet>(mutex, txThreadId));
       }
       catch (...)
@@ -121,7 +121,7 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::def_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
+inline void transaction::def_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
 {
    int waitTime = 0, aborted = 0;
 
@@ -159,12 +159,12 @@
       t->add_to_obtained_locks(mutex);
       t->commit_deferred_update_tx();
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
       def_do_core_tx_conflicting_lock_pthread_lock_mutex
          (mutex, 0, 0, true);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
 
- return 0;
+ return;
    }
 
    for (;;)
@@ -172,7 +172,7 @@
       synchro::lock(*mutex); // TBR int val = lock(mutex);
       // TBR if (0 != val) return val;
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
       try
       {
@@ -185,7 +185,7 @@
       catch (...)
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          throw;
       }
 
@@ -193,19 +193,19 @@
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
 
       SLEEP(cm_lock_sleep_time());
       waitTime += cm_lock_sleep_time();
       ++aborted;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
 
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
- return 0;
+ return;
 }
 
 //----------------------------------------------------------------------------
@@ -223,7 +223,7 @@
    //if (0 != val) return val;
    if (!synchro::try_lock(*mutex)) return 1;
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
@@ -242,19 +242,19 @@
       if (!def_do_core_tx_conflicting_lock_pthread_lock_mutex(mutex, 0, 0, txIsIrrevocable))
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          return -1;
       }
    }
    catch (...)
    {
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
       throw;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
 
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
@@ -264,7 +264,7 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::def_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
+inline void transaction::def_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
    synchro::lock_guard<Mutex> autolock_l(*latm_lock());
    synchro::lock_guard<Mutex> autolock_g(*general_lock());
@@ -290,13 +290,13 @@
    // it from the latmLocks and any txs on the full thread list that are
    // blocked because of this lock being locked should be unblocked
    //--------------------------------------------------------------------------
- if (latmLockedLocksAndThreadIdsMap_.find(mutex) != latmLockedLocksAndThreadIdsMap_.end())
+ if (latm::instance().latmLockedLocksAndThreadIdsMap_.find(mutex) != latm::instance().latmLockedLocksAndThreadIdsMap_.end())
    {
 #if LOGGING_BLOCKS
       logFile_ << "----------------------\nbefore unlocked mutex: " << mutex << endl << endl;
       logFile_ << outputBlockedThreadsAndLockedLocks() << endl;
 #endif
- latmLockedLocksAndThreadIdsMap_.erase(mutex);
+ latm::instance().latmLockedLocksAndThreadIdsMap_.erase(mutex);
       unblock_conflicting_threads(mutex);
 
 #if LOGGING_BLOCKS
@@ -305,13 +305,13 @@
 #endif
    }
 
- latmLockedLocksOfThreadMap_.erase(mutex);
+ latm::instance().latmLockedLocksOfThreadMap_.erase(mutex);
    unblock_threads_if_locks_are_empty();
 
    // TBR if (hasLock) return unlock(mutex);
    // TBR else return 0;
    if (hasLock) synchro::unlock(*mutex);
- return 0;
+ return;
 }
 
 }}

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_full_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -56,7 +56,7 @@
    // if the lock-aware tm lock set is empty, lock the in-flight trans mutex
    // so we can abort all the in-flight transactions
    //--------------------------------------------------------------------------
- if (latmLockedLocks_.empty())
+ if (latm::instance().latmLockedLocks_.empty())
    {
        
     //{
@@ -106,7 +106,7 @@
    }
 
    try {
- latmLockedLocks_.insert(mutex); }
+ latm::instance().latmLockedLocks_.insert(mutex); }
    catch (...)
    {
        // BUG ???
@@ -121,7 +121,7 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::dir_full_pthread_lock_mutex(latm::mutex_type* mutex)
+inline void transaction::dir_full_pthread_lock_mutex(latm::mutex_type* mutex)
 {
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
@@ -133,12 +133,12 @@
 
       // this method locks LATM and keeps it locked upon returning if param true
       wait_until_all_locks_are_released(true);
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       synchro::unlock(*latm_lock());
 
- if (hadLock) return 0;
+ if (hadLock) return;
       else synchro::lock(*mutex);
- return 0;
+ return;
    }
 
    int waitTime = 0, aborted = 0;
@@ -150,7 +150,7 @@
       synchro::lock(*mutex);
       //synchro::lock_guard<Mutex> lock_m(*mutex);
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
       //synchro::lock_guard<Mutex> lock_l(latmMutex_);
 
       try
@@ -163,7 +163,7 @@
       catch (...)
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          throw;
       }
 
@@ -171,7 +171,7 @@
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
         //}
 
       SLEEP(cm_lock_sleep_time());
@@ -179,9 +179,9 @@
       ++aborted;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
- return 0;
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
+ return;
 }
 
 //----------------------------------------------------------------------------
@@ -199,7 +199,7 @@
 
       // this method locks LATM and keeps it locked upon returning if param true
       wait_until_all_locks_are_released(true);
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       synchro::unlock(*latm_lock());
 
       if (hadLock) return 0;
@@ -213,7 +213,7 @@
    if (!synchro::try_lock(*mutex)) return 1;
 
    //synchro::lock(latmMutex_);
- synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
 
    try
    {
@@ -223,18 +223,18 @@
       if (!dir_do_core_full_pthread_lock_mutex(mutex, 0, 0))
       {
          //synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          return -1;
       }
    }
    catch (...)
    {
       //synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
       throw;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
    //synchro::unlock(latmMutex_);
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
@@ -244,12 +244,12 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::dir_full_pthread_unlock_mutex(latm::mutex_type* mutex)
+inline void transaction::dir_full_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
    bool hasLock = true;
     {
    //synchro::lock(latmMutex_);
- synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ synchro::lock_guard<Mutex> lock_l(latm::instance().latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
@@ -265,9 +265,9 @@
       t->remove_from_currently_locked_locks(mutex);
    }
 
- latmLockedLocks_.erase(mutex);
+ latm::instance().latmLockedLocks_.erase(mutex);
 
- if (latmLockedLocks_.empty())
+ if (latm::instance().latmLockedLocks_.empty())
    {
       synchro::lock_guard<Mutex> lock_l(*general_lock());
       //synchro::lock(*general_lock());
@@ -277,13 +277,13 @@
       //synchro::unlock(*general_lock());
    }
 
- latmLockedLocksOfThreadMap_.erase(mutex);
+ latm::instance().latmLockedLocksOfThreadMap_.erase(mutex);
    //synchro::unlock(latmMutex_);
     }
    // TBR if (hasLock) return unlock(mutex);
    // TBR else return 0;
    if (hasLock) synchro::unlock(*mutex);
- return 0;
+ return;
 }
 
 }}

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tm_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -58,13 +58,13 @@
    //
    // if it isn't we don't interrupt any in-flight transactions
    //--------------------------------------------------------------------------
- if (tmConflictingLocks_.find(mutex) != tmConflictingLocks_.end())
+ if (latm::instance().tmConflictingLocks_.find(mutex) != latm::instance().tmConflictingLocks_.end())
    {
       //--------------------------------------------------------------------------
       // if the lock-aware tm lock set is empty, lock the in-flight trans mutex
       // so we can abort all the in-flight transactions
       //--------------------------------------------------------------------------
- if (latmLockedLocks_.empty())
+ if (latm::instance().latmLockedLocks_.empty())
       {
          synchro::lock(*general_lock());
          synchro::lock(*inflight_lock());
@@ -108,7 +108,7 @@
          while (!transactionsInFlight_.empty()) { SLEEP(10); }
       }
 
- latmLockedLocks_.insert(mutex);
+ latm::instance().latmLockedLocks_.insert(mutex);
    }
 
    return true;
@@ -117,17 +117,17 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::dir_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
+inline void transaction::dir_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
 {
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
- transaction::must_be_in_tm_conflicting_lock_set(mutex);
+ latm::instance().must_be_in_tm_conflicting_lock_set(mutex);
       t->make_isolated();
       synchro::lock(*latm_lock());
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       synchro::unlock(*latm_lock());
       synchro::lock(*mutex);
- return 0;
+ return;
    }
 
    int waitTime = 0, aborted = 0;
@@ -138,7 +138,7 @@
       // TBR if (0 != val) return val;
       synchro::lock(*mutex);
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
       try
       {
@@ -151,7 +151,7 @@
       catch (...)
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          throw;
       }
 
@@ -159,17 +159,17 @@
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
 
       SLEEP(cm_lock_sleep_time());
       waitTime += cm_lock_sleep_time();
       ++aborted;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
 
- return 0;
+ return;
 }
 
 //----------------------------------------------------------------------------
@@ -179,10 +179,10 @@
 {
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
- transaction::must_be_in_tm_conflicting_lock_set(mutex);
+ latm::instance().must_be_in_tm_conflicting_lock_set(mutex);
       t->make_isolated();
       synchro::lock(*latm_lock());
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       synchro::unlock(*latm_lock());
       return synchro::try_lock(*mutex)?0:1;
    }
@@ -191,7 +191,7 @@
    //if (0 != val) return val;
    if (!synchro::try_lock(*mutex)) return 1;
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
    try
    {
@@ -201,19 +201,19 @@
       if (!dir_do_core_tm_conflicting_lock_pthread_lock_mutex(mutex, 0, 0))
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          return -1;
       }
    }
    catch (...)
    {
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
       throw;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
    return 0;
@@ -222,9 +222,9 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::dir_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
+inline void transaction::dir_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
    bool hasLock = true;
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
@@ -246,11 +246,11 @@
    // it from the latmLocks and check to see if we allow transactions to
    // continue.
    //--------------------------------------------------------------------------
- if (tmConflictingLocks_.find(mutex) != tmConflictingLocks_.end())
+ if (latm::instance().tmConflictingLocks_.find(mutex) != latm::instance().tmConflictingLocks_.end())
    {
- latmLockedLocks_.erase(mutex);
+ latm::instance().latmLockedLocks_.erase(mutex);
 
- if (latmLockedLocks_.empty())
+ if (latm::instance().latmLockedLocks_.empty())
       {
          synchro::lock(*general_lock());
 
@@ -260,13 +260,13 @@
       }
    }
 
- latmLockedLocksOfThreadMap_.erase(mutex);
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_.erase(mutex);
+ synchro::unlock(latm::instance().latmMutex_);
 
    //if (hasLock) return unlock(mutex);
    //else return 0;
    if (hasLock) synchro::unlock(*mutex);
- return 0;
+ return;
 }
 
 }}

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_dir_tx_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -95,9 +95,9 @@
 
       try
       {
- latmLockedLocksAndThreadIdsMap_.insert
+ latm::instance().latmLockedLocksAndThreadIdsMap_.insert
          (std::make_pair<latm::mutex_type*, ThreadIdSet>(mutex, txThreadId));
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
       }
       catch (...)
       {
@@ -154,7 +154,7 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::dir_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
+inline void transaction::dir_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex)
 {
    int waitTime = 0, aborted = 0;
 
@@ -192,12 +192,12 @@
       t->add_to_currently_locked_locks(mutex);
       t->add_to_obtained_locks(mutex);
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
       def_do_core_tx_conflicting_lock_pthread_lock_mutex
          (mutex, 0, 0, true);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
 
- return 0;
+ return;
    }
 
    for (;;)
@@ -206,7 +206,7 @@
       // TBR if (0 != val) return val;
       synchro::lock(*mutex);
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
       try
       {
@@ -219,7 +219,7 @@
       catch (...)
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          throw;
       }
 
@@ -227,19 +227,19 @@
       // we weren't able to do the core lock work, unlock our mutex and sleep
       //-----------------------------------------------------------------------
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
 
       SLEEP(cm_lock_sleep_time());
       waitTime += cm_lock_sleep_time();
       ++aborted;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
 
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
- return 0;
+ return;
 }
 
 //----------------------------------------------------------------------------
@@ -256,7 +256,7 @@
    //if (0 != val) return val;
    if (!synchro::try_lock(*mutex)) return 1;
 
- synchro::lock(latmMutex_);
+ synchro::lock(latm::instance().latmMutex_);
 
    if (transaction* t = get_inflight_tx_of_same_thread(false))
    {
@@ -274,19 +274,19 @@
       if (!dir_do_core_tx_conflicting_lock_pthread_lock_mutex(mutex, 0, 0, txIsIrrevocable))
       {
          synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
          return -1;
       }
    }
    catch (...)
    {
       synchro::unlock(*mutex);
- synchro::unlock(latmMutex_);
+ synchro::unlock(latm::instance().latmMutex_);
       throw;
    }
 
- latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
- synchro::unlock(latmMutex_);
+ latm::instance().latmLockedLocksOfThreadMap_[mutex] = this_thread::get_id();
+ synchro::unlock(latm::instance().latmMutex_);
 
    // note: we do not release the transactionsInFlightMutex - this will prevents
    // new transactions from starting until this lock is released
@@ -296,7 +296,7 @@
 //----------------------------------------------------------------------------
 // only allow one thread to execute any of these methods at a time
 //----------------------------------------------------------------------------
-inline int transaction::dir_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
+inline void transaction::dir_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex)
 {
    synchro::lock_guard<Mutex> autolock_l(*latm_lock());
    synchro::lock_guard<Mutex> autolock_g(*general_lock());
@@ -322,19 +322,19 @@
    // it from the latmLocks and any txs on the full thread list that are
    // blocked because of this lock being locked should be unblocked
    //--------------------------------------------------------------------------
- if (latmLockedLocksAndThreadIdsMap_.find(mutex) != latmLockedLocksAndThreadIdsMap_.end())
+ if (latm::instance().latmLockedLocksAndThreadIdsMap_.find(mutex) != latm::instance().latmLockedLocksAndThreadIdsMap_.end())
    {
- latmLockedLocksAndThreadIdsMap_.erase(mutex);
+ latm::instance().latmLockedLocksAndThreadIdsMap_.erase(mutex);
       unblock_conflicting_threads(mutex);
    }
 
- latmLockedLocksOfThreadMap_.erase(mutex);
+ latm::instance().latmLockedLocksOfThreadMap_.erase(mutex);
    unblock_threads_if_locks_are_empty();
 
    // TBR if (hasLock) return unlock(mutex);
    // TBR else return 0;
    if (hasLock) synchro::unlock(*mutex);
- return 0;
+ return;
 }
 }}
 

Modified: sandbox/stm/branches/vbe/boost/stm/detail/latm_general_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/latm_general_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/latm_general_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -51,7 +51,7 @@
    while (true)
    {
       synchro::lock(*latm_lock());
- if (latmLockedLocks_.empty()) break;
+ if (latm::instance().latmLockedLocks_.empty()) break;
       synchro::unlock(*latm_lock());
       SLEEP(10);
    }
@@ -166,7 +166,7 @@
 inline void boost::stm::transaction::unblock_conflicting_threads(latm::mutex_type* mutex)
 {
    // if the mutex is on the latm locks map, we can't unblock yet
- if (latmLockedLocksAndThreadIdsMap_.find(mutex) != latmLockedLocksAndThreadIdsMap_.end())
+ if (latm::instance().latmLockedLocksAndThreadIdsMap_.find(mutex) != latm::instance().latmLockedLocksAndThreadIdsMap_.end())
    {
 #if LOGGING_BLOCKS
       logFile_ << "\ncannot unlock <" << mutex << ">, in latmLockedLocksAndThreadIdsMap_" << endl << endl;
@@ -192,7 +192,7 @@
 {
 #if 0
    // if the size is 0, unblock everybody
- if (latmLockedLocksOfThreadMap_.empty())
+ if (latm::instance().latmLockedLocksOfThreadMap_.empty())
    {
       for (latm::thread_id_mutex_set_map::iterator it = threadObtainedLocks_.begin();
       it != threadObtainedLocks_.end(); ++it)
@@ -206,8 +206,12 @@
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
+
 inline void boost::stm::transaction::tm_lock_conflict(latm::mutex_type* inLock)
 {
+#if 1
+ latm::instance().tm_lock_conflict(inLock);
+#else
    if (!latm::instance().doing_tm_lock_protection()) return;
 
    //synchro::lock(latmMutex_);
@@ -225,8 +229,11 @@
       //throw;
    //}
    //synchro::unlock(latmMutex_);
+#endif
 }
 
+#if 0
+
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
 inline void boost::stm::transaction::clear_tm_conflicting_locks()
@@ -246,6 +253,7 @@
       throw "lock not in tx conflict lock set, use add_tm_conflicting_lock";
    }
 }
+#endif
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
@@ -300,21 +308,21 @@
 // the client chose
 //
 //----------------------------------------------------------------------------
-inline int boost::stm::transaction::pthread_lock(latm::mutex_type* mutex)
+inline void boost::stm::transaction::pthread_lock(latm::mutex_type* mutex)
 {
    //using namespace boost::stm;
 
    switch (latm::instance().protection())
    {
    case eFullLatmProtection:
- if (direct_updating()) return dir_full_pthread_lock_mutex(mutex);
- else return def_full_pthread_lock_mutex(mutex);
+ if (direct_updating()) {dir_full_pthread_lock_mutex(mutex); return;}
+ else {def_full_pthread_lock_mutex(mutex);return;}
    case eTmConflictingLockLatmProtection:
- if (direct_updating()) return dir_tm_conflicting_lock_pthread_lock_mutex(mutex);
- else return def_tm_conflicting_lock_pthread_lock_mutex(mutex);
+ if (direct_updating()) {dir_tm_conflicting_lock_pthread_lock_mutex(mutex);return;}
+ else {def_tm_conflicting_lock_pthread_lock_mutex(mutex);return;}
    case eTxConflictingLockLatmProtection:
- if (direct_updating()) return dir_tx_conflicting_lock_pthread_lock_mutex(mutex);
- else return def_tx_conflicting_lock_pthread_lock_mutex(mutex);
+ if (direct_updating()) {dir_tx_conflicting_lock_pthread_lock_mutex(mutex);return;}
+ else {def_tx_conflicting_lock_pthread_lock_mutex(mutex);return;}
    default:
       throw "invalid LATM type";
    }
@@ -322,6 +330,7 @@
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
+#if 0
 inline int boost::stm::transaction::pthread_trylock(latm::mutex_type* mutex)
 {
    //using namespace boost::stm;
@@ -341,24 +350,24 @@
       throw "invalid LATM type";
    }
 }
-
+#endif
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-inline int boost::stm::transaction::pthread_unlock(latm::mutex_type* mutex)
+inline void boost::stm::transaction::pthread_unlock(latm::mutex_type* mutex)
 {
    //using namespace boost::stm;
 
    switch (latm::instance().protection())
    {
    case eFullLatmProtection:
- if (direct_updating()) return dir_full_pthread_unlock_mutex(mutex);
- return def_full_pthread_unlock_mutex(mutex);
+ if (direct_updating()) {dir_full_pthread_unlock_mutex(mutex);return;}
+ else {def_full_pthread_unlock_mutex(mutex);return;}
    case eTmConflictingLockLatmProtection:
- if (direct_updating()) return dir_tm_conflicting_lock_pthread_unlock_mutex(mutex);
- else return def_tm_conflicting_lock_pthread_unlock_mutex(mutex);
+ if (direct_updating()) {dir_tm_conflicting_lock_pthread_unlock_mutex(mutex);return;}
+ else {def_tm_conflicting_lock_pthread_unlock_mutex(mutex); return;}
    case eTxConflictingLockLatmProtection:
- if (direct_updating()) return dir_tx_conflicting_lock_pthread_unlock_mutex(mutex);
- else return def_tx_conflicting_lock_pthread_unlock_mutex(mutex);
+ if (direct_updating()) {dir_tx_conflicting_lock_pthread_unlock_mutex(mutex);return;}
+ else {def_tx_conflicting_lock_pthread_unlock_mutex(mutex);return;}
    default:
       throw "invalid LATM type";
    }
@@ -385,8 +394,8 @@
    //--------------------------------------------------------------------------
    // iterate through all currently locked locks
    //--------------------------------------------------------------------------
- for (latm::mutex_thread_id_set_map::iterator iter = latmLockedLocksAndThreadIdsMap_.begin();
- latmLockedLocksAndThreadIdsMap_.end() != iter; ++iter)
+ for (latm::mutex_thread_id_set_map::iterator iter = latm::instance().latmLockedLocksAndThreadIdsMap_.begin();
+ latm::instance().latmLockedLocksAndThreadIdsMap_.end() != iter; ++iter)
    {
       //-----------------------------------------------------------------------
       // iterate through this transaction's conflicting mutex ref - if one of
@@ -404,19 +413,19 @@
    for (latm::mutex_set::iterator k = get_tx_conflicting_locks().begin(); k != get_tx_conflicting_locks().end(); ++k)
    {
       // if it is locked by our thread, it is ok ... otherwise it is not
- latm::mutex_thread_id_map::iterator l = latmLockedLocksOfThreadMap_.find(*k);
+ latm::mutex_thread_id_map::iterator l = latm::instance().latmLockedLocksOfThreadMap_.find(*k);
 
- if (l != latmLockedLocksOfThreadMap_.end() &&
+ if (l != latm::instance().latmLockedLocksOfThreadMap_.end() &&
          this_thread::get_id() != l->second)
       {
- latm::mutex_thread_id_set_map::iterator locksAndThreadsIter = latmLockedLocksAndThreadIdsMap_.find(*k);
+ latm::mutex_thread_id_set_map::iterator locksAndThreadsIter = latm::instance().latmLockedLocksAndThreadIdsMap_.find(*k);
 
- if (locksAndThreadsIter == latmLockedLocksAndThreadIdsMap_.end())
+ if (locksAndThreadsIter == latm::instance().latmLockedLocksAndThreadIdsMap_.end())
          {
             ThreadIdSet s;
             s.insert(this_thread::get_id());
 
- latmLockedLocksAndThreadIdsMap_.insert
+ latm::instance().latmLockedLocksAndThreadIdsMap_.insert
             (std::make_pair<latm::mutex_type*, ThreadIdSet>(*k, s));
          }
          else
@@ -440,8 +449,8 @@
 {
    int count = 0;
 
- for (latm::mutex_thread_id_set_map::iterator iter = latmLockedLocksAndThreadIdsMap_.begin();
- latmLockedLocksAndThreadIdsMap_.end() != iter; ++iter)
+ for (latm::mutex_thread_id_set_map::iterator iter = latm::instance().latmLockedLocksAndThreadIdsMap_.begin();
+ latm::instance().latmLockedLocksAndThreadIdsMap_.end() != iter; ++iter)
    {
       if (iter->second.find(threadId) != iter->second.end()) ++count;
    }

Modified: sandbox/stm/branches/vbe/boost/stm/detail/transaction_impl.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/detail/transaction_impl.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/detail/transaction_impl.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -539,8 +539,8 @@
 
    o << "Currently locked locks:" << endl << endl;
 
- for (latm::mutex_thread_id_set_map::iterator i = latmLockedLocksAndThreadIdsMap_.begin();
- i != latmLockedLocksAndThreadIdsMap_.end(); ++i)
+ for (latm::mutex_thread_id_set_map::iterator i = latm::instance().latmLockedLocksAndThreadIdsMap_.begin();
+ i != latm::instance().latmLockedLocksAndThreadIdsMap_.end(); ++i)
    {
       o << i->first << endl << "\t";
 
@@ -616,6 +616,7 @@
    return true;
 }
 
+#if 0
 //--------------------------------------------------------------------------
 //--------------------------------------------------------------------------
 inline bool transaction::can_go_inflight()
@@ -658,7 +659,7 @@
 
    return true;
 }
-
+#endif
 //--------------------------------------------------------------------------
 //--------------------------------------------------------------------------
 inline void transaction::put_tx_inflight()
@@ -670,7 +671,7 @@
       //lock(inflight_lock());
       synchro::lock_guard<Mutex> lock_i(*inflight_lock());
 
- if (can_go_inflight() && !isolatedTxInFlight())
+ if (latm::instance().can_go_inflight() && !isolatedTxInFlight())
       {
          transactionsInFlight_.insert(this);
          state_ = e_in_flight;

Modified: sandbox/stm/branches/vbe/boost/stm/latm/base_mode.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/latm/base_mode.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/latm/base_mode.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -1,10 +1,10 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Justin E. Gottchlich 2009.
-// (C) Copyright Vicente J. Botet Escriba 2009.
+// (C) Copyright Justin E. Gottchlich 2009.
+// (C) Copyright Vicente J. Botet Escriba 2009.
 // Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
 // copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 // See http://www.boost.org/libs/stm for documentation.
@@ -16,23 +16,39 @@
 
 #include <boost/stm/detail/config.hpp>
 #include <boost/stm/latm/datatypes.hpp>
+#include <boost/synchro.hpp>
 
 namespace boost { namespace stm { namespace latm {
 
- class base_mode {
- public:
- virtual latm_type const protection() =0;
- virtual std::string const protection_str();
-
- virtual bool doing_full_lock_protection();
- virtual bool doing_tm_lock_protection();
- virtual bool doing_tx_lock_protection();
-
- virtual void lock(mutex_type& lock);
- virtual bool try_lock(mutex_type& lock);
- virtual void unlock(mutex_type& lock);
- };
-
+template <typename Base=static_mode>
+class base_mode : public Base {
+public:
+ latm::mutex_set tmConflictingLocks_;
+ latm::mutex_set latmLockedLocks_;
+ latm::mutex_thread_id_set_map latmLockedLocksAndThreadIdsMap_;
+ latm::mutex_thread_id_map latmLockedLocksOfThreadMap_;
+
+ mutex_type latmMutex_;
+
+
+ latm::mutex_set get_tm_conflicting_locks() { return tmConflictingLocks_; }
+
+ void clear_tm_conflicting_locks()
+ {
+ synchro::lock_guard<Mutex> lock_l(latmMutex_);
+ tmConflictingLocks_.clear();
+ }
+
+ void must_be_in_tm_conflicting_lock_set(latm::mutex_type* inLock)
+ {
+ if (tmConflictingLocks_.find(inLock) == tmConflictingLocks_.end())
+ {
+ throw "lock not in tx conflict lock set, use add_tm_conflicting_lock";
+ }
+ }
+
+};
+
 }}}
 
 #endif // BOOST_STM_LATM_DYNAMIC__HPP

Modified: sandbox/stm/branches/vbe/boost/stm/latm/datatypes.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/latm/datatypes.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/latm/datatypes.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -20,6 +20,7 @@
 #include <map>
 
 namespace boost { namespace stm { namespace latm {
+ struct static_mode {};
 #if BOOST_STM_LATM_GENERIC
    //typedef synchro::poly::mutex mutex_type;
 #else

Deleted: sandbox/stm/branches/vbe/boost/stm/latm/dynamic.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/latm/dynamic.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
+++ (empty file)
@@ -1,112 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Justin E. Gottchlich 2009.
-// (C) Copyright Vicente J. Botet Escriba 2009.
-// Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/stm for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_STM_LATM_DYNAMIC__HPP
-#define BOOST_STM_LATM_DYNAMIC__HPP
-
-#include <boost/stm/detail/config.hpp>
-#include <boost/stm/latm/datatypes.hpp>
-
-namespace boost { namespace stm { namespace latm {
- #if 0
- struct poly {
- static full_mode<base_mode> full_;
- static tm_mode<base_mode> tm_;
- static tx_mode<base_mode> tx_;
- static base_mode* more_;
- };
- void do_full_lock_protection() {
- poly::mode_ = &full_;
- }
- void do_tm_lock_protection() {
- poly::mode_ = &tm_;
- }
- void do_tx_lock_protection() {
- poly::mode_ = &tx_;
- }
- inline base_mode& instance() {
- return poly::mode_;
- }
-
- #endif
- class dynamic {
- latm_type eLatmType_;
- public:
- dynamic() : eLatmType_(eFullLatmProtection) {}
- latm_type const protection() { return eLatmType_; }
- std::string const protection_str() {
- switch (eLatmType_)
- {
- case eFullLatmProtection:
- return "full_protect";
- case eTmConflictingLockLatmProtection:
- return "tm_protect";
- case eTxConflictingLockLatmProtection:
- return "tx_protect";
- default:
- throw "invalid LATM type";
- }
- }
- void do_full_lock_protection_i() {
- eLatmType_ = eFullLatmProtection;
- }
- void do_tm_lock_protection_i() {
- eLatmType_ = eTmConflictingLockLatmProtection;
- }
- void do_tx_lock_protection_i() {
- eLatmType_ = eTxConflictingLockLatmProtection;
- }
-
- bool doing_full_lock_protection() {
- return eFullLatmProtection == eLatmType_;
- }
- bool doing_tm_lock_protection() {
- return eTmConflictingLockLatmProtection == eLatmType_;
- }
- bool doing_tx_lock_protection() {
- return eTxConflictingLockLatmProtection == eLatmType_;
- }
-
-#if BOOST_STM_LATM_GENERIC
- template <typename Lockable>
- void lock(Lockable& lock);
- template <typename Lockable>
- bool try_lock(Lockable& lock);
- template <typename Lockable>
- void unlock(Lockable& lock);
-#else
- int lock(mutex_type& lock);
- int try_lock(mutex_type& lock);
- int unlock(mutex_type& lock);
-#endif
-
- };
- inline dynamic& instance() {
- static dynamic ctx;
- return ctx;
- }
- inline void do_full_lock_protection() {
- instance().do_full_lock_protection_i();
- }
- inline void do_tm_lock_protection() {
- instance().do_tm_lock_protection_i();
- }
- inline void do_tx_lock_protection() {
- instance().do_tx_lock_protection_i();
- }
-
-}}}
-
-#endif // BOOST_STM_LATM_DYNAMIC__HPP
-
-

Copied: sandbox/stm/branches/vbe/boost/stm/latm/dynamic_mode.hpp (from r57154, /sandbox/stm/branches/vbe/boost/stm/latm/dynamic.hpp)
==============================================================================
--- /sandbox/stm/branches/vbe/boost/stm/latm/dynamic.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/latm/dynamic_mode.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -16,94 +16,33 @@
 
 #include <boost/stm/detail/config.hpp>
 #include <boost/stm/latm/datatypes.hpp>
+#include <boost/stm/latm/base_mode.hpp>
+#include <boost/stm/latm/abstract_mode.hpp>
+#include <boost/stm/latm/full_mode.hpp>
+#include <boost/stm/latm/tm_mode.hpp>
+#include <boost/stm/latm/tx_mode.hpp>
 
 namespace boost { namespace stm { namespace latm {
- #if 0
- struct poly {
- static full_mode<base_mode> full_;
- static tm_mode<base_mode> tm_;
- static tx_mode<base_mode> tx_;
- static base_mode* more_;
+ typedef base_mode<abstract_mode> latm_mode;
+ struct mode {
+ static full_mode<abstract_mode> full_;
+ static tm_mode<abstract_mode> tm_;
+ static tx_mode<abstract_mode> tx_;
+ static latm_mode* instance_;
     };
- void do_full_lock_protection() {
- poly::mode_ = &full_;
- }
- void do_tm_lock_protection() {
- poly::mode_ = &tm_;
- }
- void do_tx_lock_protection() {
- poly::mode_ = &tx_;
- }
- inline base_mode& instance() {
- return poly::mode_;
- }
-
- #endif
- class dynamic {
- latm_type eLatmType_;
- public:
- dynamic() : eLatmType_(eFullLatmProtection) {}
- latm_type const protection() { return eLatmType_; }
- std::string const protection_str() {
- switch (eLatmType_)
- {
- case eFullLatmProtection:
- return "full_protect";
- case eTmConflictingLockLatmProtection:
- return "tm_protect";
- case eTxConflictingLockLatmProtection:
- return "tx_protect";
- default:
- throw "invalid LATM type";
- }
- }
- void do_full_lock_protection_i() {
- eLatmType_ = eFullLatmProtection;
- }
- void do_tm_lock_protection_i() {
- eLatmType_ = eTmConflictingLockLatmProtection;
- }
- void do_tx_lock_protection_i() {
- eLatmType_ = eTxConflictingLockLatmProtection;
- }
-
- bool doing_full_lock_protection() {
- return eFullLatmProtection == eLatmType_;
- }
- bool doing_tm_lock_protection() {
- return eTmConflictingLockLatmProtection == eLatmType_;
- }
- bool doing_tx_lock_protection() {
- return eTxConflictingLockLatmProtection == eLatmType_;
- }
-
-#if BOOST_STM_LATM_GENERIC
- template <typename Lockable>
- void lock(Lockable& lock);
- template <typename Lockable>
- bool try_lock(Lockable& lock);
- template <typename Lockable>
- void unlock(Lockable& lock);
-#else
- int lock(mutex_type& lock);
- int try_lock(mutex_type& lock);
- int unlock(mutex_type& lock);
-#endif
-
- };
- inline dynamic& instance() {
- static dynamic ctx;
- return ctx;
- }
     inline void do_full_lock_protection() {
- instance().do_full_lock_protection_i();
+ mode::instance_ = &mode::full_;
     }
     inline void do_tm_lock_protection() {
- instance().do_tm_lock_protection_i();
+ mode::instance_ = &mode::tm_;
     }
     inline void do_tx_lock_protection() {
- instance().do_tx_lock_protection_i();
+ mode::instance_ = &mode::tx_;
     }
+ inline latm_mode& instance() {
+ return *mode::instance_;
+ }
+
     
 }}}
 

Deleted: sandbox/stm/branches/vbe/boost/stm/latm/full.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/latm/full.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
+++ (empty file)
@@ -1,51 +0,0 @@
-//////////////////////////////////////////////////////////////////////////////
-//
-// (C) Copyright Justin E. Gottchlich 2009.
-// (C) Copyright Vicente J. Botet Escriba 2009.
-// Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
-// copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-// See http://www.boost.org/libs/stm for documentation.
-//
-//////////////////////////////////////////////////////////////////////////////
-
-#ifndef BOOST_STM_LATM_DYNAMIC__HPP
-#define BOOST_STM_LATM_DYNAMIC__HPP
-
-#include <boost/stm/detail/config.hpp>
-#include <boost/stm/latm/datatypes.hpp>
-
-namespace boost { namespace stm { namespace latm {
-
- struct static_mode {};
- template <typename Base=static_mode>
- class full_mode : {
- public:
- latm_type const protection() { return eFullLatmProtection; }
- std::string const protection_str() {
- return "full_protect";
- }
-
- bool doing_full_lock_protection() {
- return true;
- }
- bool doing_tm_lock_protection() {
- return false;
- }
- bool doing_tx_lock_protection() {
- return false;
- }
-
- int lock(mutex_type& lock);
- int try_lock(mutex_type& lock);
- int unlock(mutex_type& lock);
-
- };
-
-}}}
-
-#endif // BOOST_STM_LATM_DYNAMIC__HPP
-
-

Copied: sandbox/stm/branches/vbe/boost/stm/latm/full_mode.hpp (from r57154, /sandbox/stm/branches/vbe/boost/stm/latm/full.hpp)
==============================================================================
--- /sandbox/stm/branches/vbe/boost/stm/latm/full.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/latm/full_mode.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -1,51 +1,89 @@
 //////////////////////////////////////////////////////////////////////////////
 //
-// (C) Copyright Justin E. Gottchlich 2009.
-// (C) Copyright Vicente J. Botet Escriba 2009.
+// (C) Copyright Justin E. Gottchlich 2009.
+// (C) Copyright Vicente J. Botet Escriba 2009.
 // Distributed under the Boost
-// Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or
+// Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or
 // copy at http://www.boost.org/LICENSE_1_0.txt)
 //
 // See http://www.boost.org/libs/stm for documentation.
 //
 //////////////////////////////////////////////////////////////////////////////
 
-#ifndef BOOST_STM_LATM_DYNAMIC__HPP
-#define BOOST_STM_LATM_DYNAMIC__HPP
+#ifndef BOOST_STM_LATM_FULL_MIXIN__HPP
+#define BOOST_STM_LATM_FULL_MIXIN__HPP
 
+//-----------------------------------------------------------------------------
 #include <boost/stm/detail/config.hpp>
 #include <boost/stm/latm/datatypes.hpp>
+#include <boost/stm/latm/base_mode.hpp>
+//-----------------------------------------------------------------------------
 
+//-----------------------------------------------------------------------------
 namespace boost { namespace stm { namespace latm {
 
- struct static_mode {};
- template <typename Base=static_mode>
- class full_mode : {
- public:
- latm_type const protection() { return eFullLatmProtection; }
- std::string const protection_str() {
- return "full_protect";
+//-----------------------------------------------------------------------------
+template <typename Base=static_mode>
+class full_mode : public base_mode<Base> {
+public:
+
+ ~full_mode() {}
+//-----------------------------------------------------------------------------
+ latm_type const protection() { return eFullLatmProtection; }
+ std::string const protection_str() {
+ return "full_protect";
+ }
+
+ bool doing_full_lock_protection() {
+ return true;
+ }
+
+ bool doing_tm_lock_protection() {
+ return false;
+ }
+
+ bool doing_tx_lock_protection() {
+ return false;
+ }
+
+//-----------------------------------------------------------------------------
+ bool can_go_inflight()
+ {
+ // allow transactions
+ // to start only if no locks are obtained or the only lock that
+ // is obtained is on this_thread::get_id()
+ for (latm::mutex_thread_id_map::iterator j = this->latmLockedLocksOfThreadMap_.begin();
+ j != this->latmLockedLocksOfThreadMap_.end(); ++j)
+ {
+ if (this_thread::get_id() != j->second)
+ {
+ return false;
+ }
         }
 
- bool doing_full_lock_protection() {
- return true;
- }
- bool doing_tm_lock_protection() {
- return false;
- }
- bool doing_tx_lock_protection() {
- return false;
- }
-
- int lock(mutex_type& lock);
- int try_lock(mutex_type& lock);
- int unlock(mutex_type& lock);
-
+ return true;
+ }
+
+//-----------------------------------------------------------------------------
+ void tm_lock_conflict(Mutex &lock)
+ {
+ tm_lock_conflict(&lock);
+ }
+ void tm_lock_conflict(latm::mutex_type* inLock)
+ {
+ return ;
+ }
+
+//-----------------------------------------------------------------------------
+ //int lock(mutex_type& lock);
+ //int try_lock(mutex_type& lock);
+ //int unlock(mutex_type& lock);
+
     };
-
+
 }}}
 
-#endif // BOOST_STM_LATM_DYNAMIC__HPP
+#endif // BOOST_STM_LATM_FULL_MIXIN__HPP
 
 

Modified: sandbox/stm/branches/vbe/boost/stm/latm/selector.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/latm/selector.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/latm/selector.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -18,10 +18,16 @@
 #include <boost/stm/detail/config.hpp>
 //-----------------------------------------------------------------------------
 
-#if defined(BOOST_STM_LATM_STATIC_CONF)
-#include BOOST_STM_LATM_STATIC_CONF
+#if defined(BOOST_STM_LATM_STATIC_FULL_MODE)
+#include <boost/stm/latm/static_full_mode.hpp>
+#elif defined(BOOST_STM_LATM_STATIC_TM_MODE)
+#include <boost/stm/latm/static_tm_mode.hpp>
+#elif defined(BOOST_STM_LATM_STATIC_TX_MODE)
+#include <boost/stm/latm/static_tx_mode.hpp>
+#elif defined(BOOST_STM_LATM_DYNAMIC_MODE)
+#include <boost/stm/latm/dynamic_mode.hpp>
 #else
-#include <boost/stm/latm/dynamic.hpp>
+#include <boost/stm/latm/all_in_one_mode.hpp>
 #endif
 
 #endif // BOOST_STM_LATM_SELECTOR__HPP

Modified: sandbox/stm/branches/vbe/boost/stm/transaction.hpp
==============================================================================
--- sandbox/stm/branches/vbe/boost/stm/transaction.hpp (original)
+++ sandbox/stm/branches/vbe/boost/stm/transaction.hpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -334,19 +334,19 @@
    template <>
    inline static int unlock_(Mutex *lock) { return pthread_unlock(lock); }
     #else
- inline static int lock_(PLOCK &lock) { return pthread_lock(&lock); }
- inline static int lock_(PLOCK *lock) { return pthread_lock(lock); }
+ inline static void lock_(latm::mutex_type &lock) { pthread_lock(&lock); }
+ inline static void lock_(latm::mutex_type *lock) { pthread_lock(lock); }
 
- inline static int trylock_(PLOCK &lock) { return pthread_trylock(&lock); }
- inline static int trylock_(PLOCK *lock) { return pthread_trylock(lock); }
+ //inline static int trylock_(latm::mutex_type &lock) { return pthread_trylock(&lock); }
+ //inline static int trylock_(latm::mutex_type *lock) { return pthread_trylock(lock); }
 
- inline static int unlock_(PLOCK &lock) { return pthread_unlock(&lock); }
- inline static int unlock_(PLOCK *lock) { return pthread_unlock(lock); }
+ inline static void unlock_(latm::mutex_type &lock) { pthread_unlock(&lock); }
+ inline static void unlock_(latm::mutex_type *lock) { pthread_unlock(lock); }
     #endif
 
- static int pthread_lock(latm::mutex_type* lock);
- static int pthread_trylock(latm::mutex_type* lock);
- static int pthread_unlock(latm::mutex_type* lock);
+ static void pthread_lock(latm::mutex_type* lock);
+ //static int pthread_trylock(latm::mutex_type* lock);
+ static void pthread_unlock(latm::mutex_type* lock);
 
    //--------------------------------------------------------------------------
     #if PERFORMING_LATM
@@ -356,12 +356,12 @@
       tm_lock_conflict(&lock);
    }
    static void tm_lock_conflict(latm::mutex_type* lock);
-
+
    static void clear_tm_conflicting_locks();
- inline static latm::mutex_set get_tm_conflicting_locks() { return tmConflictingLocks_; }
+ //inline static latm::mutex_set get_tm_conflicting_locks() { return tmConflictingLocks_; }
 
    void must_be_in_conflicting_lock_set(latm::mutex_type* inLock);
- static void must_be_in_tm_conflicting_lock_set(latm::mutex_type* inLock);
+ //static void must_be_in_tm_conflicting_lock_set(latm::mutex_type* inLock);
 
     #if USING_TRANSACTION_SPECIFIC_LATM
    void see_if_tx_must_block_due_to_tx_latm();
@@ -380,6 +380,8 @@
 
    void clear_tx_conflicting_locks();
    //latm::mutex_set get_tx_conflicting_locks() { return conflictingMutexRef_; }
+
+
     #endif
 
    void add_to_obtained_locks(latm::mutex_type* mutex);
@@ -743,7 +745,8 @@
    void lock_tx();
    void unlock_tx();
 
- inline static PLOCK* latm_lock() { return &latmMutex_; }
+ //inline static latm_mutex* latm_lock() { return &latmMutex_; }
+ inline static latm::mutex_type* latm_lock() { return &latm::instance().latmMutex_; }
    inline static PLOCK* general_lock() { return &transactionMutex_; }
    inline static PLOCK* inflight_lock() { return &transactionsInFlightMutex_; }
 
@@ -754,7 +757,7 @@
    bool canAbortAllInFlightTxs();
    bool abortAllInFlightTxs();
    void put_tx_inflight();
- bool can_go_inflight();
+ //static bool can_go_inflight();
    static transaction* get_inflight_tx_of_same_thread(bool);
 
 #if !PERFORMING_VALIDATION
@@ -1276,32 +1279,32 @@
    //--------------------------------------------------------------------------
    // deferred updating locking methods
    //--------------------------------------------------------------------------
- static int def_full_pthread_lock_mutex(latm::mutex_type* mutex);
+ static void def_full_pthread_lock_mutex(latm::mutex_type* mutex);
    static int def_full_pthread_trylock_mutex(latm::mutex_type* mutex);
- static int def_full_pthread_unlock_mutex(latm::mutex_type* mutex);
+ static void def_full_pthread_unlock_mutex(latm::mutex_type* mutex);
 
- static int def_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
+ static void def_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
    static int def_tm_conflicting_lock_pthread_trylock_mutex(latm::mutex_type* mutex);
- static int def_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
+ static void def_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
 
- static int def_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
+ static void def_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
    static int def_tx_conflicting_lock_pthread_trylock_mutex(latm::mutex_type* mutex);
- static int def_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
+ static void def_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
 
    //--------------------------------------------------------------------------
    // direct updating locking methods
    //--------------------------------------------------------------------------
- static int dir_full_pthread_lock_mutex(latm::mutex_type* mutex);
+ static void dir_full_pthread_lock_mutex(latm::mutex_type* mutex);
    static int dir_full_pthread_trylock_mutex(latm::mutex_type* mutex);
- static int dir_full_pthread_unlock_mutex(latm::mutex_type* mutex);
+ static void dir_full_pthread_unlock_mutex(latm::mutex_type* mutex);
 
- static int dir_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
+ static void dir_tm_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
    static int dir_tm_conflicting_lock_pthread_trylock_mutex(latm::mutex_type* mutex);
- static int dir_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
+ static void dir_tm_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
 
- static int dir_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
+ static void dir_tx_conflicting_lock_pthread_lock_mutex(latm::mutex_type* mutex);
    static int dir_tx_conflicting_lock_pthread_trylock_mutex(latm::mutex_type* mutex);
- static int dir_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
+ static void dir_tx_conflicting_lock_pthread_unlock_mutex(latm::mutex_type* mutex);
 
    //--------------------------------------------------------------------------
 
@@ -1309,18 +1312,18 @@
    static DeletionBuffer deletionBuffer_;
    static std::ofstream logFile_;
 
- static latm::mutex_set tmConflictingLocks_;
- static latm::mutex_set latmLockedLocks_;
- static latm::mutex_thread_id_set_map latmLockedLocksAndThreadIdsMap_;
- static latm::mutex_thread_id_map latmLockedLocksOfThreadMap_;
+ //static latm::mutex_set tmConflictingLocks_;
+ //static latm::mutex_set latmLockedLocks_;
+ //static latm::mutex_thread_id_set_map latmLockedLocksAndThreadIdsMap_;
+ //static latm::mutex_thread_id_map latmLockedLocksOfThreadMap_;
    //static LatmType eLatmType_;
    static InflightTxes transactionsInFlight_;
 
    static Mutex deletionBufferMutex_;
    static Mutex transactionMutex_;
    static Mutex transactionsInFlightMutex_;
- static Mutex latmMutex_;
- static pthread_mutexattr_t transactionMutexAttribute_;
+ //static Mutex latmMutex_;
+ //static pthread_mutexattr_t transactionMutexAttribute_;
 
    static bool initialized_;
    static bool directLateWriteReadConflict_;
@@ -2015,27 +2018,6 @@
     ~thread_initializer() {transaction::terminate_thread();}
 };
 
-#if 0
-
-template <>
-inline int transaction::lock<Mutex> (Mutex &lock) { return transaction::pthread_lock(&lock); }
-
-template <>
-inline int transaction::lock<Mutex*> (Mutex *lock) { return transaction::pthread_lock(lock); }
-
-template <>
-inline int transaction::trylock<Mutex> (Mutex &lock) { return transaction::pthread_trylock(&lock); }
-
-template <>
-inline int transaction::trylock<Mutex*> (Mutex *lock) { return transaction::pthread_trylock(lock); }
-
-template <>
-inline int transaction::unlock<Mutex> (Mutex &lock) { return transaction::pthread_unlock(&lock); }
-
-template <>
-inline int transaction::unlock<Mutex*> (Mutex *lock) { return transaction::pthread_unlock(lock); }
-
-#endif
 
 //---------------------------------------------------------------------------
 // do not remove if (). It is necessary a necessary fix for compilers

Modified: sandbox/stm/branches/vbe/libs/stm/src/transaction.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/src/transaction.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/src/transaction.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -12,6 +12,7 @@
 //////////////////////////////////////////////////////////////////////////////
 
 #include <boost/stm/transaction.hpp>
+#include <boost/stm/latm.hpp>
 #include <boost/stm/non_tx/detail/cache_map.hpp>
 #include <boost/stm/contention_managers/contention_manager.hpp>
 #include <iostream>
@@ -31,12 +32,33 @@
 // Static initialization
 ///////////////////////////////////////////////////////////////////////////////
 transaction::InflightTxes transaction::transactionsInFlight_;
-latm::mutex_set transaction::latmLockedLocks_;
-latm::mutex_thread_id_set_map transaction::latmLockedLocksAndThreadIdsMap_;
-latm::mutex_thread_id_map transaction::latmLockedLocksOfThreadMap_;
-latm::mutex_set transaction::tmConflictingLocks_;
+//latm::mutex_set transaction::latmLockedLocks_;
+//latm::mutex_thread_id_set_map transaction::latmLockedLocksAndThreadIdsMap_;
+//latm::mutex_thread_id_map transaction::latmLockedLocksOfThreadMap_;
+//latm::mutex_set transaction::tmConflictingLocks_;
 transaction::DeletionBuffer transaction::deletionBuffer_;
 
+//////////////
+// LATM
+/////////////
+namespace latm {
+#if defined(BOOST_STM_LATM_STATIC_FULL_MODE)
+latm_mode mode::instance_;
+#elif defined(BOOST_STM_LATM_STATIC_TM_MODE)
+latm_mode mode::instance_;
+#elif defined(BOOST_STM_LATM_STATIC_TX_MODE)
+latm_mode mode::instance_;
+#elif defined(BOOST_STM_LATM_DYNAMIC_MODE)
+full_mode<abstract_mode> mode::full_;
+tm_mode<abstract_mode> mode::tm_;
+tx_mode<abstract_mode> mode::tx_;
+latm_mode* mode::instance_=&mode::full_;
+#else
+latm_mode mode::instance_;
+#endif
+}
+
+
 clock_t transaction::global_clock_ = 0;
 size_t transaction::stalls_ = 0;
 
@@ -45,12 +67,12 @@
 bool transaction::directLateWriteReadConflict_ = false;
 bool transaction::usingMoveSemantics_ = false;
 
-pthread_mutexattr_t transaction::transactionMutexAttribute_;
+//pthread_mutexattr_t transaction::transactionMutexAttribute_;
 
 Mutex transaction::transactionsInFlightMutex_;
 Mutex transaction::transactionMutex_;
 Mutex transaction::deletionBufferMutex_;
-Mutex transaction::latmMutex_;
+//Mutex transaction::latmMutex_;
 
 std::ofstream transaction::logFile_;
 
@@ -150,7 +172,7 @@
    pthread_mutex_init(&transactionMutex_, 0);
    pthread_mutex_init(&transactionsInFlightMutex_, 0);
    pthread_mutex_init(&deletionBufferMutex_, 0);
- pthread_mutex_init(&latmMutex_, 0);
+ pthread_mutex_init(&latm::instance().latmMutex_, 0);
 
    //pthread_mutex_init(&transactionMutex_, &transactionMutexAttribute_);
    //pthread_mutex_init(&transactionsInFlightMutex_, &transactionMutexAttribute_);

Modified: sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2 (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/Jamfile.v2 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -53,72 +53,147 @@
 
     alias def_invalid
         :
+ [ run stm : -bench accounts -def -threads 2 -inserts 100 : : : test_accounts_def_t2_i100 ]
+ ########### fails sometimes
+ #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
             [ run stm : -bench accounts -def -threads 4 -inserts 100 : : : test_accounts_def_t4_i100 ]
 
- [ run stm : -bench hashmap -def -threads 4 -inserts 100 : : : test_hashmap_def_t4_i100 ]
+ [ run stm : -bench hashmap -def -threads 2 -inserts 100 : : : test_hashmap_def_t2_i100 ]
+ ########### fails
+ #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+ #[ run stm : -bench hashmap -def -threads 4 -inserts 100 : : : test_hashmap_def_t4_i100 ]
 
 
             ########### fails
             # /bin/sh: line 4: 2944 Aborted (core dumped) "bin/test_ht_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_ht_def_t2_i1000.exe" > "bin/test_ht_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_ht_def_t2_i1000.output" 2>&1
             # Rounding max threads to the next multiple of 4 (4).
             # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
- [ run stm : -bench ht -def -threads 2 -inserts 100 : : : test_ht_def_t2_i100 ]
+ #[ run stm : -bench ht -def -threads 2 -inserts 100 -latm full : : : test_ht_def_full_t2_i100 ]
+ [ run stm : -bench ht -def -threads 2 -inserts 100 -latm tm : : : test_ht_def_tm_t2_i100 ]
+ [ run stm : -bench ht -def -threads 4 -inserts 100 -latm tm : : : test_ht_def_tm_t4_i100 ]
+ [ run stm : -bench ht -def -threads 2 -inserts 100 -latm tx : : : test_ht_def_tx_t2_i100 ]
+ [ run stm : -bench ht -def -threads 4 -inserts 100 -latm tx : : : test_ht_def_tx_t4_i100 ]
 
             [ run stm : -bench isolated_int -def -threads 4 -inserts 100 : : : test_isolated_int_def_t2_i100 ]
 
+ [ run stm : -bench linkedlist -def -threads 2 -inserts 100 : : : test_linkedlist_def_t2_i100 ]
+ ########### fails sometimes
+ #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
             [ run stm : -bench linkedlist -def -threads 4 -inserts 100 : : : test_linkedlist_def_t4_i100 ]
 
             ########### fails
             # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
- [ run stm : -bench ll -def -threads 2 -inserts 100 : : : test_ll_def_t2_i100 ]
+ #[ run stm : -bench ll -def -threads 2 -inserts 100 -latm full : : : test_ll_def_full_t2_i100 ]
+ [ run stm : -bench ll -def -threads 2 -inserts 100 -latm tm : : : test_ll_def_tm_t2_i100 ]
+ [ run stm : -bench ll -def -threads 4 -inserts 100 -latm tm : : : test_ll_def_tm_t4_i100 ]
+ ########### fails
+ #[ run stm : -bench ll -def -threads 2 -inserts 100 -latm tx : : : test_ll_def_tx_t2_i100 ]
 
- ########### deadlock. killed after 0:26. 00% CPU
+ ########### fails all-modes
             # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
             # 19469 [sig] test_tx_linear_lock_def_t2 3768 _cygtls::handle_exceptions: Error while dumping state (probably corrupted stack)
- [ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 : : : test_tx_linear_lock_def_t2_i100 ]
+ #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm full : : : test_tx_linear_lock_def_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm tm : : : test_tx_linear_lock_def_tm_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench tx_linear_lock -def -threads 2 -inserts 100 -latm tx : : : test_tx_linear_lock_def_tx_t2_i100 ]
 
- ########### deadlock. killed after 0:26. 00% CPU
- [ run stm : -bench isolated_int_lock_in_tx -def -threads 2 -inserts 100 : : : test_isolated_int_lock_in_tx_def_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -def -threads 2 -inserts 100 -latm full : : : test_isolated_int_lock_in_tx_def_full_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -def -threads 4 -inserts 100 -latm full : : : test_isolated_int_lock_in_tx_def_full_t4_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -def -threads 2 -inserts 100 -latm tm : : : test_isolated_int_lock_in_tx_def_tm_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -def -threads 4 -inserts 100 -latm tm : : : test_isolated_int_lock_in_tx_def_tm_t4_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -def -threads 2 -inserts 100 -latm tx : : : test_isolated_int_lock_in_tx_def_tx_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -def -threads 4 -inserts 100 -latm tx : : : test_isolated_int_lock_in_tx_def_tx_t4_i100 ]
 
- ########### fails
+ ########### fails all-modes
             # /bin/sh: line 4: 3660 Segmentation fault (core dumped) "bin/test_isolated_composed_int_lock_def_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_t2.exe" > "bin/test_isolated_composed_int_lock_def_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_t2.output" 2>&1
             # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
- [ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 : : : test_isolated_composed_int_lock_def_t2_i100 ]
+ #[ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock_def_full_t2_i100 ]
+ ########### fails
+ # /bin/sh: line 4: 4744 Aborted (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tm > "bin/test_isolated_composed_int_lock_def_tm_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_tm_t2_i100.output" 2>&1
+ #[ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock_def_tm_t2_i100 ]
+ ########### fails
+ # /bin/sh: line 4: 4772 Aborted (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tx > "bin/test_isolated_composed_int_lock_def_tx_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock_def_tx_t2_i100.output" 2>&1
+ #[ run stm : -bench isolated_composed_int_lock -def -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock_def_tx_t2_i100 ]
 
             ########### fails
- # /bin/sh: line 4: 3172 Aborted (core dumped) "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.exe" > "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.output" 2>&1
- # ====== BEGIN OUTPUT ======
- # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
- [ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 : : : test_isolated_composed_int_lock2_def_t2_i100 ]
+ #/bin/sh: line 4: 4536 Aborted (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm full > "bin/test_isolated_composed_int_lock2_def_full_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_def_full_t2_i100.output" 2>&1
+ #====== BEGIN OUTPUT ======
+ #61 i= 0
+ #66 i=0 end= 50 count= 1
+ #70 lock
+ #73 1
+ #74 unlock
+ #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+ #[ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock2_def_full_t2_i100 ]
+ ########### fails
+ #/bin/sh: line 4: 4556 Aborted (core dumped) "bin/gcc-3.4.4/debug/threading-multi/stm.exe" -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tm > "bin/test_isolated_composed_int_lock2_def_tm_t2_i100.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_def_tm_t2_i100.output" 2>&1
+ #====== BEGIN OUTPUT ======
+ #61 i= 0
+ #66 i=0 end= 50 count= 1
+ #70 lock
+ #[ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock2_def_tm_t2_i100 ]
+ [ run stm : -bench isolated_composed_int_lock2 -def -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_def_tx_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench isolated_composed_int_lock2 -def -threads 4 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_def_tx_t4_i100 ]
 
+ [ run stm : -bench irrevocable_int -def -threads 2 -inserts 100 : : : test_irrevocable_int_def_t2_i100 ]
+ ########### fails sometimes
+ #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
             [ run stm : -bench irrevocable_int -def -threads 4 -inserts 100 : : : test_irrevocable_int_def_t4_i100 ]
 
- ########### deadlock. killed after 0:26. 00% CPU
- #[ run stm : -bench lot_example -def -threads 2 -inserts 100 : : : test_lot_example_def_t2_i100 ]
+ ########### deadlock. killed after 0:26. 00% CPU all-modes
+ #[ run stm : -bench lot_example -def -threads 2 -inserts 100 -latm full : : : test_lot_example_def_full_t2_i100 ]
+ ########### deadlock.
+ #[ run stm : -bench lot_example -def -threads 2 -inserts 100 -latm tm : : : test_lot_example_def_tm_t2_i100 ]
+ ########### deadlock.
+ #[ run stm : -bench lot_example -def -threads 2 -inserts 100 -latm tx : : : test_lot_example_def_tx_t2_i100 ]
 
- ########### fails with CHECK
+ ########### fails with CHECK all-modes
             # /bin/sh: line 4: 4072 Aborted (core dumped) "bin/test_lit_def_t2.test/gcc-3.4.4/debug/threading-multi/test_lit_def_t2.exe" > "bin/test_lit_def_t2.test/gcc-3.4.4/debug/threading-multi/test_lit_def_t2.output" 2>&1
             ########### deadlock sometimes without CHECK. killed after 0:40. 00% CPU
- #[ run stm : -bench lit_example -def -threads 2 -inserts 100 : : : test_lit_example_def_t2_i100 ]
+ #[ run stm : -bench lit_example -def -threads 2 -inserts 100 -latm full : : : test_lit_example_def_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench lit_example -def -threads 2 -inserts 100 -latm tm : : : test_lit_example_def_tm_t2_i100 ]
+ ########### deadlock
+ #[ run stm : -bench lit_example -def -threads 2 -inserts 100 -latm tx : : : test_lit_example_def_tx_t2_i100 ]
+
 
             ########### livelock. killed after 3:50. 50% CPU
- #[ run stm : -bench nested_tx -def -threads 2 -inserts 100 : : : test_nested_tx_def_t2_i100 ]
+ #[ run stm : -bench nested_tx -def -threads 2 -inserts 100 -latm full : : : test_nested_tx_def_full_t2_i100 ]
+ ##[ run stm : -bench nested_tx -def -threads 2 -inserts 100 -latm tm : : : test_nested_tx_def_tm_t2_i100 ]
+ ##[ run stm : -bench nested_tx -def -threads 2 -inserts 100 -latm tx : : : test_nested_tx_def_tx_t2_i100 ]
 
             [ run stm : -bench rbtree -def -threads 4 -inserts 100 : : : test_rbtree_def_t4_i100 ]
 
             [ run stm : -bench smart -def -threads 4 -inserts 100 : : : test_smart_def_t4_i100 ]
 
- ########### fails
+ ########### fails all-modes
             # /bin/sh: line 4: 2376 Aborted (core dumped) "bin/test_using_linkedlist_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_def_t2_i1000.exe" > "bin/test_using_linkedlist_def_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_def_t2_i1000.output" 2>&1
- [ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 : : : test_using_linkedlist_def_t2_i100 ]
+ #[ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm full : : : test_using_linkedlist_def_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm tm : : : test_using_linkedlist_def_tm_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench using_linkedlist -def -threads 2 -inserts 100 -latm tx : : : test_using_linkedlist_def_tx_t2_i100 ]
 
+ ########### fails all-modes
+ # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
+ #[ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm full : : : test_hashmap_w_locks_def_full_t2_i100 ]
             ########### fails
             # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
- [ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 : : : test_hashmap_w_locks_def_t2_i100 ]
+ #[ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm tm : : : test_hashmap_w_locks_def_tm_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench hashmap_w_locks -def -threads 2 -inserts 100 -latm tx : : : test_hashmap_w_locks_def_tx_t2_i100 ]
 
             ########### fails
             # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
- [ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 : : : test_list_hash_w_locks_def_t2_i100 ]
+ #[ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm full : : : test_list_hash_w_locks_def_full_t2_i100 ]
+ [ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm tm : : : test_list_hash_w_locks_def_tm_t2_i100 ]
+ ########### fails
+ #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
+ #[ run stm : -bench list_hash_w_locks -def -threads 4 -inserts 100 -latm tm : : : test_list_hash_w_locks_def_tm_t4_i100 ]
+ [ run stm : -bench list_hash_w_locks -def -threads 2 -inserts 100 -latm tx : : : test_list_hash_w_locks_def_tx_t2_i100 ]
+ [ run stm : -bench list_hash_w_locks -def -threads 4 -inserts 100 -latm tx : : : test_list_hash_w_locks_def_tx_t4_i100 ]
     ;
 
     alias dir_invalid
@@ -127,54 +202,103 @@
 
             [ run stm : -bench hashmap -dir -threads 4 -inserts 100 : : : test_hashmap_dir_t4_i100 ]
 
- ########### livelock. killed after 3:00 25% CPU
- [ run stm : -bench ht -dir -threads 2 -inserts 100 : : : test_ht_dir_t2_i100 ]
+ [ run stm : -bench ht -dir -threads 2 -inserts 100 -latm full : : : test_ht_dir_full_t2_i100 ]
+ [ run stm : -bench ht -dir -threads 4 -inserts 100 -latm full : : : test_ht_dir_full_t4_i100 ]
+ [ run stm : -bench ht -dir -threads 2 -inserts 100 -latm tm : : : test_ht_dir_tm_t2_i100 ]
+ [ run stm : -bench ht -dir -threads 4 -inserts 100 -latm tm : : : test_ht_dir_tm_t4_i100 ]
+ [ run stm : -bench ht -dir -threads 2 -inserts 100 -latm tx : : : test_ht_dir_tx_t2_i100 ]
+ [ run stm : -bench ht -dir -threads 4 -inserts 100 -latm tx : : : test_ht_dir_tx_t4_i100 ]
 
             [ run stm : -bench isolated_int -dir -threads 4 -inserts 100 : : : test_isolated_int_dir_t2_i100 ]
 
             [ run stm : -bench linkedlist -dir -threads 4 -inserts 100 : : : test_linkedlist_dir_t4_i100 ]
 
- [ run stm : -bench ll -dir -threads 2 -inserts 100 : : : test_ll_dir_t2_i100 ]
+ [ run stm : -bench ll -dir -threads 2 -inserts 100 -latm full : : : test_ll_dir_t2_full_i100 ]
+ [ run stm : -bench ll -dir -threads 4 -inserts 100 -latm full : : : test_ll_dir_t4_full_i100 ]
+ [ run stm : -bench ll -dir -threads 2 -inserts 100 -latm tm : : : test_ll_dir_t2_tm_i100 ]
+ [ run stm : -bench ll -dir -threads 4 -inserts 100 -latm tm : : : test_ll_dir_t4_tm_i100 ]
+ ########### fails
+ #[ run stm : -bench ll -dir -threads 2 -inserts 100 -latm tx : : : test_ll_dir_t2_tx_i100 ]
+ ########### fails sometimes
+ [ run stm : -bench ll -dir -threads 4 -inserts 100 -latm tx : : : test_ll_dir_t4_tx_i100 ]
 
- ########### fails with CHECK
+ ########### fails with CHECK all-modes
             #/bin/sh: line 4: 3764 Aborted (core dumped) "bin/test_tx_linear_lock_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_tx_linear_lock_dir_t2.exe" > "bin/test_tx_linear_lock_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_tx_linear_lock_dir_t2.output" 2>&1
             #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
             ########### deadlock. without CHECK
- #[ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 : : : test_tx_linear_lock_dir_t2_i100 ]
-
- [ run stm : -bench isolated_int_lock_in_tx -dir -threads 2 -inserts 100 : : : test_isolated_int_lock_in_tx_dir_t2_i100 ]
-
- ########### deadlock. killed after 0:20. 00% CPU
- #[ run stm : -bench isolated_composed_int_lock -dir -threads 2 -inserts 100 : : : test_isolated_composed_int_lock_dir_t2_i100 ]
+ [ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm full : : : test_tx_linear_lock_dir_full_t2_i100 ]
+ ###########
+ #[ run stm : -bench tx_linear_lock -dir -threads 4 -inserts 100 -latm full : : : test_tx_linear_lock_dir_full_t4_i100 ]
+ ########### fails
+ #[ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm tm : : : test_tx_linear_lock_dir_tm_t2_i100 ]
+ ########### deadlock
+ #[ run stm : -bench tx_linear_lock -dir -threads 2 -inserts 100 -latm tx : : : test_tx_linear_lock_dir_tx_t2_i100 ]
+
+ [ run stm : -bench isolated_int_lock_in_tx -dir -threads 2 -inserts 100 -latm full : : : test_isolated_int_lock_in_tx_dir_full_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -dir -threads 4 -inserts 100 -latm full : : : test_isolated_int_lock_in_tx_dir_full_t4_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -dir -threads 2 -inserts 100 -latm tm : : : test_isolated_int_lock_in_tx_dir_tm_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -dir -threads 4 -inserts 100 -latm tm : : : test_isolated_int_lock_in_tx_dir_tm_t4_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -dir -threads 2 -inserts 100 -latm tx : : : test_isolated_int_lock_in_tx_dir_tx_t2_i100 ]
+ [ run stm : -bench isolated_int_lock_in_tx -dir -threads 4 -inserts 100 -latm tx : : : test_isolated_int_lock_in_tx_dir_tx_t4_i100 ]
+
+ ########### deadlock. killed after 0:20. 00% CPU all-modes all-modes
+ #[ run stm : -bench isolated_composed_int_lock -dir -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock_dir_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench isolated_composed_int_lock -dir -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock_dir_tm_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench isolated_composed_int_lock -dir -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock_dir_tx_t2_i100 ]
 
             ########### fails
             # /bin/sh: line 4: 3172 Aborted (core dumped) "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.exe" > "bin/test_isolated_composed_int_lock2_dir_t2.test/gcc-3.4.4/debug/threading-multi/test_isolated_composed_int_lock2_dir_t2.output" 2>&1
             #assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 40
             # 11 [sig] test_isolated_composed_int_lock_def_t2 3660 _cygtls::handle_except ions: Error while dumping state (probably corrupted stack)
- [ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100 : : : test_isolated_composed_int_lock2_dir_t2_i100 ]
+ #[ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100 -latm full : : : test_isolated_composed_int_lock2_dir_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100 -latm tm : : : test_isolated_composed_int_lock2_dir_tm_t2_i100 ]
+ [ run stm : -bench isolated_composed_int_lock2 -dir -threads 2 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_dir_tx_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench isolated_composed_int_lock2 -dir -threads 4 -inserts 100 -latm tx : : : test_isolated_composed_int_lock2_dir_tx_t4_i100 ]
 
             [ run stm : -bench irrevocable_int -dir -threads 4 -inserts 100 : : : test_irrevocable_int_dir_t4_i100 ]
 
- ########### deadlock. killed after 0:20. 00% CPU
- #[ run stm : -bench lot_example -dir -threads 2 -inserts 100 : : : test_lot_example_dir_t2_i100 ]
-
- ########### deadlock. killed after 0:40. 00% CPU
- #[ run stm : -bench lit_example -dir -threads 2 -inserts 100 : : : test_lit_example_dir_t2_i100 ]
+ ########### deadlock. killed after 0:20. 00% CPU all-modes
+ #[ run stm : -bench lot_example -dir -threads 2 -inserts 100 -latm full : : : test_lot_example_dir_full_t2_i100 ]
+ ########### deadlock
+ #[ run stm : -bench lot_example -dir -threads 2 -inserts 100 -latm tm : : : test_lot_example_dir_tm_t2_i100 ]
+ ########### deadlock
+ #[ run stm : -bench lot_example -dir -threads 2 -inserts 100 -latm tx : : : test_lot_example_dir_tx_t2_i100 ]
+
+ ########### deadlock. killed after 0:40. 00% CPU all-modes
+ #[ run stm : -bench lit_example -dir -threads 2 -inserts 100 -latm full : : : test_lit_example_dir_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench lit_example -dir -threads 2 -inserts 100 -latm tm : : : test_lit_example_dir_tm_t2_i100 ]
+ ########### deadlock
+ #[ run stm : -bench lit_example -dir -threads 2 -inserts 100 -latm tx : : : test_lit_example_dir_tx_t2_i100 ]
 
             ########### livelock. killed after 3:00. 50% CPU
- #[ run stm : -bench nested_tx -dir -threads 2 -inserts 100 : : : test_nested_tx_dir_t2_i100 ]
+ #[ run stm : -bench nested_tx -dir -threads 2 -inserts 100 -latm full : : : test_nested_tx_dir_full_t2_i100 ]
+ ##[ run stm : -bench nested_tx -dir -threads 2 -inserts 100 -latm tm : : : test_nested_tx_dir_tm_t2_i100 ]
+ ##[ run stm : -bench nested_tx -dir -threads 2 -inserts 100 -latm tx : : : test_nested_tx_dir_tx_t2_i100 ]
 
             [ run stm : -bench rbtree -dir -threads 4 -inserts 100 : : : test_rbtree_dir_t4_i100 ]
 
             [ run stm : -bench smart -dir -threads 4 -inserts 100 : : : test_smart_dir_t4_i100 ]
 
- ########### fails
+ ########### fails all-modes
             #/bin/sh: line 4: 408 Aborted (core dumped) "bin/test_using_linkedlist_dir_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_dir_t2_i1000.exe" > "bin/test_using_linkedlist_dir_t2_i1000.test/gcc-3.4.4/debug/threading-multi/test_using_linkedlist_dir_t2_i1000.output" 2>&1
- [ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 : : : test_using_linkedlist_dir_t2_i100 ]
-
- [ run stm : -bench hashmap_w_locks -dir -threads 4 -inserts 100 : : : test_hashmap_w_locks_dir_t4_i100 ]
+ #[ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm full : : : test_using_linkedlist_dir_full_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm tm : : : test_using_linkedlist_dir_tm_t2_i100 ]
+ ########### fails
+ #[ run stm : -bench using_linkedlist -dir -threads 2 -inserts 100 -latm tx : : : test_using_linkedlist_dir_tx_t2_i100 ]
 
- [ run stm : -bench list_hash_w_locks -dir -threads 4 -inserts 100 : : : test_list_hash_w_locks_dir_t4_i100 ]
+ [ run stm : -bench hashmap_w_locks -dir -threads 4 -inserts 100 -latm full : : : test_hashmap_w_locks_dir_full_t4_i100 ]
+ [ run stm : -bench hashmap_w_locks -dir -threads 4 -inserts 100 -latm tm : : : test_hashmap_w_locks_dir_tm_t4_i100 ]
+ [ run stm : -bench hashmap_w_locks -dir -threads 4 -inserts 100 -latm tx : : : test_hashmap_w_locks_dir_tx_t4_i100 ]
+
+ [ run stm : -bench list_hash_w_locks -dir -threads 4 -inserts 100 -latm full : : : test_list_hash_w_locks_dir_full_t4_i100 ]
+ [ run stm : -bench list_hash_w_locks -dir -threads 4 -inserts 100 -latm tm : : : test_list_hash_w_locks_dir_tm_t4_i100 ]
+ [ run stm : -bench list_hash_w_locks -dir -threads 4 -inserts 100 -latm tx : : : test_list_hash_w_locks_dir_tx_t4_i100 ]
     ;
 
     alias examples
@@ -186,6 +310,8 @@
             [ link ../example/list.cpp ]
 
             [ run ../example/counter.cpp ]
+ # fails sometimes
+ # assertion "res==0" failed: file "../../../boost/synchro/pthread/mutex.hpp", line 52
             [ run ../example/numeric.cpp ]
             [ run ../example/tx/pointer.cpp ]
             [ run ../example/counter_ptr.cpp ]

Modified: sandbox/stm/branches/vbe/libs/stm/test/isolatedComposedIntLockInTx2.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/isolatedComposedIntLockInTx2.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/isolatedComposedIntLockInTx2.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -58,23 +58,31 @@
 
    for (int i = startingValue; i < endingValue/2; ++i)
    {
+ std::cout<< __LINE__ << " i= " << i << std::endl;
+ int count=0;
       for (transaction t; ; t.restart())
       {
- t.add_tx_conflicting_lock(&lock1);
+ count++;
+ std::cout<< __LINE__ << " i="<<i << " end= " << endingValue/2 << " count= " << count << std::endl;
+ t.lock_conflict(&lock1);
          try
          {
+ std::cout<< __LINE__ << " lock" << std::endl;
             transaction::lock_(lock1);
             ++gInt.value();
- cout << "\t" << gInt.value() << endl;
+ cout << __LINE__ << "\t" << gInt.value() << endl;
+ std::cout<< __LINE__ << " unlock" << std::endl;
             transaction::unlock_(lock1);
 
             SLEEP(50);
             // do nothing on purpose, allowing other threads time to see
             // intermediate state IF they can get lock1 (they shouldn't)
 
+ std::cout<< __LINE__ << " lock" << std::endl;
             transaction::lock_(lock1);
             --gInt.value();
- cout << "\t" << gInt.value() << endl;
+ cout << __LINE__ << "\t" << gInt.value() << endl;
+ std::cout<< __LINE__ << " unlock" << std::endl;
             transaction::unlock_(lock1);
 
             t.end();
@@ -82,9 +90,12 @@
 
             break;
          }
- catch (aborted_tx&) {}
+ catch (aborted_tx&) {
+ std::cout<< __LINE__ << " aborted_tx " << i << std::endl;
+ }
       }
    }
+ std::cout<< __LINE__ << std::endl;
 
    //--------------------------------------------------------------------------
    // last thread out sets the endTimer
@@ -92,59 +103,23 @@
    endTimer = time(0);
    finishThread(start);
 
+ std::cout<< __LINE__ << std::endl;
    if (*(int*)threadId != kMainThreadId)
    {
       transaction::terminate_thread();
- pthread_exit(threadId);
+ std::cout<< __LINE__ << std::endl;
+ //pthread_exit(threadId);
    }
 
    return 0;
 }
 
 ///////////////////////////////////////////////////////////////////////////////
-#if 0
-static void* Test2(void *threadId)
-{
- transaction::initialize_thread();
- int start = *(int*)threadId;
-
- int startingValue = start * 100000;
- int endingValue = startingValue + kMaxInserts;
-
- for (int i = startingValue; i < 100*endingValue; ++i)
- {
- try
- {
- transaction t;
- t.add_tx_conflicting_lock(&lock1);
- int val = t.r(gInt).value();
- //transaction::lock(lock2);
- cout << val << endl;
- //transaction::unlock(lock2);
- t.end();
- SLEEP(10); // do nothing on purpose
- } catch (aborted_tx&) {}
- }
-
- //--------------------------------------------------------------------------
- // last thread out sets the endTimer
- //--------------------------------------------------------------------------
- endTimer = time(0);
- finishThread(start);
-
- if (*(int*)threadId != kMainThreadId)
- {
- transaction::terminate_thread();
- pthread_exit(threadId);
- }
-
- return 0;
-}
-#endif
-///////////////////////////////////////////////////////////////////////////////
 static void* Test3(void *threadId)
 {
+ if (*(int*)threadId != kMainThreadId) {
    transaction::initialize_thread();
+ }
    int start = *(int*)threadId;
 
    int startingValue = 0;
@@ -170,12 +145,12 @@
    // last thread out sets the endTimer
    //--------------------------------------------------------------------------
    endTimer = time(0);
- finishThread(start);
 
    if (*(int*)threadId != kMainThreadId)
    {
+ finishThread(start);
       transaction::terminate_thread();
- pthread_exit(threadId);
+ //pthread_exit(threadId);
    }
 
    return 0;
@@ -185,6 +160,7 @@
 void TestIsolatedComposedIntLockInTx2()
 {
    transaction::initialize();
+ transaction::initialize_thread();
 
    pthread_t *threads = new pthread_t[kMaxThreads];
    int *threadId = new int[kMaxThreads];
@@ -206,8 +182,10 @@
 
    int mainThreadId = kMaxThreads-1;
 
- Test3((void*)&mainThreadId);
+ //Test3((void*)&mainThreadId);
 
+ finishThread(mainThreadId);
+ transaction::terminate_thread();
    while (true)
    {
       if (threadsFinished.value() == kMaxThreads) break;
@@ -217,3 +195,43 @@
    cout << "gInt : " << gInt.value() << endl;
 }
 
+///////////////////////////////////////////////////////////////////////////////
+#if 0
+static void* Test2(void *threadId)
+{
+ transaction::initialize_thread();
+ int start = *(int*)threadId;
+
+ int startingValue = start * 100000;
+ int endingValue = startingValue + kMaxInserts;
+
+ for (int i = startingValue; i < 100*endingValue; ++i)
+ {
+ try
+ {
+ transaction t;
+ t.lock_conflict(&lock1);
+ int val = t.r(gInt).value();
+ //transaction::lock(lock2);
+ cout << val << endl;
+ //transaction::unlock(lock2);
+ t.end();
+ SLEEP(10); // do nothing on purpose
+ } catch (aborted_tx&) {}
+ }
+
+ //--------------------------------------------------------------------------
+ // last thread out sets the endTimer
+ //--------------------------------------------------------------------------
+ endTimer = time(0);
+
+ if (*(int*)threadId != kMainThreadId)
+ {
+ finishThread(start);
+ transaction::terminate_thread();
+ pthread_exit(threadId);
+ }
+
+ return 0;
+}
+#endif

Modified: sandbox/stm/branches/vbe/libs/stm/test/litExample.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/litExample.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/litExample.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -194,7 +194,7 @@
    {
       for (transaction t;;t.restart())
         try {
- t.add_tx_conflicting_lock(L2);
+ t.lock_conflict(L2);
           inc2();
           t.end(); break;
         } catch (aborted_tx&) {}
@@ -229,7 +229,7 @@
       for (transaction t;;t.restart())
         try {
 
- t.add_tx_conflicting_lock(L3);
+ t.lock_conflict(L3);
           inc3();
           t.end(); break;
         } catch (aborted_tx&) {}
@@ -334,8 +334,8 @@
    arr8 = new native_trans<int>[kMaxArrSize];
 
    transaction::initialize();
- transaction::tm_lock_conflict(L2);
- transaction::tm_lock_conflict(L3);
+ //transaction::tm_lock_conflict(L2);
+ //transaction::tm_lock_conflict(L3);
 
    if (kTxIntenseWork == gWorkLoadType) txFactor = 5;
    if (kLockIntenseWork == gWorkLoadType) lockFactor = 10;

Modified: sandbox/stm/branches/vbe/libs/stm/test/lotExample.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/lotExample.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/lotExample.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -223,8 +223,8 @@
       for (transaction t;;t.restart())
         try {
 
- t.add_tx_conflicting_lock(L1);
- t.add_tx_conflicting_lock(L2);
+ t.lock_conflict(L1);
+ t.lock_conflict(L2);
 
           for (int i = 0; i < kMaxArrSize; ++i)
           {

Modified: sandbox/stm/branches/vbe/libs/stm/test/nestedTxs.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/nestedTxs.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/nestedTxs.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -246,9 +246,9 @@
    //latm::do_tm_lock_protection();
    latm::do_tx_lock_protection();
 
- //transaction::tm_lock_conflict(&L);
- //transaction::tm_lock_conflict(&L2);
- //transaction::tm_lock_conflict(&L3);
+ transaction::tm_lock_conflict(&L);
+ transaction::tm_lock_conflict(&L2);
+ transaction::tm_lock_conflict(&L3);
 
    nested2();
    nested1();

Modified: sandbox/stm/branches/vbe/libs/stm/test/testHT_latm.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/testHT_latm.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/testHT_latm.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -272,7 +272,7 @@
       //----------------------------------------------------------------
       if (latm::instance().doing_tm_lock_protection() && 0 == (k+1) % 2)
       {
- //transaction::add_tm_conflicting_lock(llist[index]->get_list_lock());
+ //transaction::tm_lock_conflict(llist[index]->get_list_lock());
          //cout << "TM-lock conflict added: " << index << endl;
       }
    }

Modified: sandbox/stm/branches/vbe/libs/stm/test/testHashMapAndLinkedListsWithLocks.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/testHashMapAndLinkedListsWithLocks.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/testHashMapAndLinkedListsWithLocks.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -427,13 +427,10 @@
    globalLinkedList = new LATM::LinkedList<int>;
    transaction::initialize();
 
- if (latm::instance().doing_tm_lock_protection())
- {
       for (int k = 1; k < kBuckets2; ++k)
       {
          transaction::tm_lock_conflict(globalHashMap->get_hash_lock(k));
       }
- }
 
    threadsFinished.value() = 0;
    threadsStarted.value() = 0;

Modified: sandbox/stm/branches/vbe/libs/stm/test/testHashMapWithLocks.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/testHashMapWithLocks.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/testHashMapWithLocks.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -213,7 +213,7 @@
 
    for (int k = 1; k < kBuckets; ++k)
    {
- transaction::add_tm_conflicting_lock(globalHashMap->get_hash_lock(k));
+ transaction::tm_lock_conflict(globalHashMap->get_hash_lock(k));
    }
 #endif
 

Modified: sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -272,7 +272,7 @@
       //----------------------------------------------------------------
       if (latm::instance().doing_tm_lock_protection() && 0 == (k+1) % 2)
       {
- //transaction::add_tm_conflicting_lock(llist[index]->get_list_lock());
+ //transaction::tm_lock_conflict(llist[index]->get_list_lock());
          //cout << "TM-lock conflict added: " << index << endl;
       }
    }

Modified: sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.h
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.h (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/testLL_latm.h 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -139,14 +139,7 @@
 
       transaction t;
 
- if (latm::instance().doing_tx_lock_protection())
- {
          t.lock_conflict(&list_lock_);
- }
- else if (latm::instance().doing_tm_lock_protection())
- {
- transaction::tm_lock_conflict(&list_lock_);
- }
 
       for (; ;t.restart())
       {

Modified: sandbox/stm/branches/vbe/libs/stm/test/txLinearLock.cpp
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/txLinearLock.cpp (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/txLinearLock.cpp 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -42,8 +42,8 @@
    {
       for (transaction t; ; t.restart())
       {
- t.add_tx_conflicting_lock(&lock1);
- t.add_tx_conflicting_lock(&lock2);
+ t.lock_conflict(&lock1);
+ t.lock_conflict(&lock2);
 
          try
          {

Modified: sandbox/stm/branches/vbe/libs/stm/test/usingLockTx.h
==============================================================================
--- sandbox/stm/branches/vbe/libs/stm/test/usingLockTx.h (original)
+++ sandbox/stm/branches/vbe/libs/stm/test/usingLockTx.h 2009-10-29 05:27:24 EDT (Thu, 29 Oct 2009)
@@ -144,7 +144,7 @@
       {
          if (eTxConflictingLockLatmProtection == latm::instance().protection())
          {
- t.add_tx_conflicting_lock(&list_lock_);
+ t.lock_conflict(&list_lock_);
          }
 
          return internal_insert(node, t);
@@ -167,7 +167,7 @@
       {
          if (eTxConflictingLockLatmProtection == latm::instance().protection())
          {
- t.add_tx_conflicting_lock(&list_lock_);
+ t.lock_conflict(&list_lock_);
          }
 
          return internal_lookup(val, t);


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk