[patch] libitm: Don't enforce privatization safety if already in serial mode.

Torvald Riegel triegel@redhat.com
Thu Dec 22 19:47:00 GMT 2011


Noticed this while looking at the privatization safety code.  If we're
already in serial mode, there is no other active transaction that could
have pending reads or writes, so there is also no need to enforce/check
that there is no other active txn.  This is not triggered with the
current set of TM methods, but better to add this now than get hit by
the overhead later.

OK for trunk?
-------------- next part --------------
commit b3756d728ba89b67e059abca407937291cc13881
Author: Torvald Riegel <triegel@redhat.com>
Date:   Thu Dec 22 20:42:15 2011 +0100

    libitm: Don't enforce privatization safety if already in serial mode.
    
    	libitm/
    	* beginend.cc (GTM::gtm_thread::trycommit): Don't enforce
    	privatization safety if already in serial mode.

diff --git a/libitm/beginend.cc b/libitm/beginend.cc
index 17f9d74..7975481 100644
--- a/libitm/beginend.cc
+++ b/libitm/beginend.cc
@@ -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;


More information about the Gcc-patches mailing list