libitm: Truncate undo log after rolling back.
authorTorvald Riegel <triegel@redhat.com>
Fri, 13 Jan 2012 23:45:42 +0000 (23:45 +0000)
committerTorvald Riegel <torvald@gcc.gnu.org>
Fri, 13 Jan 2012 23:45:42 +0000 (23:45 +0000)
libitm/
* local.cc (GTM::gtm_undolog::rollback): Truncate undo log after
rolling back.
* containers.h (GTM::vector::set_size): New.

From-SVN: r183173

libitm/ChangeLog
libitm/containers.h
libitm/local.cc

index 8efaef5f329726984d716d8e94a255e0787e9b50..ad07098d32687538d5394a0e13e51d4ace9c94d4 100644 (file)
@@ -1,3 +1,9 @@
+2012-01-14  Torvald Riegel  <triegel@redhat.com>
+
+       * local.cc (GTM::gtm_undolog::rollback): Truncate undo log after
+       rolling back.
+       * containers.h (GTM::vector::set_size): New.
+
 2012-01-14  Torvald Riegel  <triegel@redhat.com>
 
        PR libitm/51855
index 394b6f2508ecb6b100dc50a7b487b6cbbb66a71f..36905659da2905be0d2952a8818f6d502c45e911 100644 (file)
@@ -92,6 +92,7 @@ class vector
   size_t size() const { return m_size; }
   size_t capacity() const { return this->capacity; }
 
+  void set_size (size_t size) { m_size = size; }
   void clear() { m_size = 0; }
 
   iterator push() {
index 5645a12bab891849df45f003d538852b21ee8652..d0d96cea625a1efb8d794f253935a85aad724ddb 100644 (file)
@@ -61,6 +61,7 @@ gtm_undolog::rollback (gtm_thread* tx, size_t until_size)
           if (likely(ptr > top || (uint8_t*)ptr + len <= bot))
             __builtin_memcpy (ptr, &undolog[i], len);
        }
+      undolog.set_size(until_size);
     }
 }