OSDN Git Service

libitm: Don't enforce privatization safety if already in serial mode.
authortorvald <torvald@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 24 Dec 2011 01:42:48 +0000 (01:42 +0000)
committertorvald <torvald@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 24 Dec 2011 01:42:48 +0000 (01:42 +0000)
libitm/
* beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
privatization safety if already in serial mode.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182676 138bc75d-0d04-0410-961f-82ee72b054a4

libitm/ChangeLog
libitm/beginend.cc

index abdf4fb..d2f0fd7 100644 (file)
@@ -1,5 +1,10 @@
 2011-12-24  Torvald Riegel  <triegel@redhat.com>
 
+       * beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
+       privatization safety if already in serial mode.
+
+2011-12-24  Torvald Riegel  <triegel@redhat.com>
+
        * beginend.cc (GTM::gtm_thread::restart): Add and handle
        finish_serial_upgrade parameter.
        * libitm.h (GTM::gtm_thread::restart): Adapt declaration.
index 17f9d74..7975481 100644 (file)
@@ -457,7 +457,12 @@ GTM::gtm_thread::trycommit ()
       // The transaction is now inactive. Everything that we still have to do
       // will not synchronize with other transactions anymore.
       if (state & gtm_thread::STATE_SERIAL)
-       gtm_thread::serial_lock.write_unlock ();
+        {
+          gtm_thread::serial_lock.write_unlock ();
+          // There are no other active transactions, so there's no need to
+          // enforce privatization safety.
+          priv_time = 0;
+        }
       else
        gtm_thread::serial_lock.read_unlock (this);
       state = 0;