summaryrefslogtreecommitdiff
path: root/libitm
diff options
context:
space:
mode:
authortorvald <torvald@138bc75d-0d04-0410-961f-82ee72b054a4>2011-12-24 01:42:48 +0000
committertorvald <torvald@138bc75d-0d04-0410-961f-82ee72b054a4>2011-12-24 01:42:48 +0000
commitdf06fec8e4debb6155917d63d7ecce3da0c70d53 (patch)
treee009d551aaef7b58ada2c219361dd260fdadd8ce /libitm
parentc4c0a912745588307c7be984615a825edd421bbd (diff)
downloadgcc-df06fec8e4debb6155917d63d7ecce3da0c70d53.tar.gz
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@182676 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libitm')
-rw-r--r--libitm/ChangeLog5
-rw-r--r--libitm/beginend.cc7
2 files changed, 11 insertions, 1 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index abdf4fb62d8..d2f0fd752f0 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -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.
diff --git a/libitm/beginend.cc b/libitm/beginend.cc
index 17f9d7490d8..797548192eb 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;