Merge "Avoid direct use of QuasiAtomic by using Atomic."
diff --git a/runtime/base/mutex.cc b/runtime/base/mutex.cc
index 7779547..8c470c0 100644
--- a/runtime/base/mutex.cc
+++ b/runtime/base/mutex.cc
@@ -161,16 +161,10 @@
   }
 }
 
-inline void BaseMutex::ContentionLogData::AddToWaitTime(uint64_t value) {
+void BaseMutex::ContentionLogData::AddToWaitTime(uint64_t value) {
   if (kLogLockContentions) {
     // Atomically add value to wait_time.
-    uint64_t new_val, old_val;
-    volatile int64_t* addr = reinterpret_cast<volatile int64_t*>(&wait_time);
-    volatile const int64_t* caddr = const_cast<volatile const int64_t*>(addr);
-    do {
-      old_val = static_cast<uint64_t>(QuasiAtomic::Read64(caddr));
-      new_val = old_val + value;
-    } while (!QuasiAtomic::Cas64(static_cast<int64_t>(old_val), static_cast<int64_t>(new_val), addr));
+    wait_time.FetchAndAddSequentiallyConsistent(value);
   }
 }
 
@@ -204,7 +198,7 @@
   if (kLogLockContentions) {
     const ContentionLogData* data = contention_log_data_;
     const ContentionLogEntry* log = data->contention_log;
-    uint64_t wait_time = data->wait_time;
+    uint64_t wait_time = data->wait_time.LoadRelaxed();
     uint32_t contention_count = data->contention_count.LoadRelaxed();
     if (contention_count == 0) {
       os << "never contended";
diff --git a/runtime/base/mutex.h b/runtime/base/mutex.h
index 8d2cd07..b0f6e0b 100644
--- a/runtime/base/mutex.h
+++ b/runtime/base/mutex.h
@@ -160,7 +160,7 @@
     // Number of times the Mutex has been contended.
     AtomicInteger contention_count;
     // Sum of time waited by all contenders in ns.
-    volatile uint64_t wait_time;
+    Atomic<uint64_t> wait_time;
     void AddToWaitTime(uint64_t value);
     ContentionLogData() : wait_time(0) {}
   };
diff --git a/runtime/jdwp/jdwp.h b/runtime/jdwp/jdwp.h
index 325b089..8fd07cc 100644
--- a/runtime/jdwp/jdwp.h
+++ b/runtime/jdwp/jdwp.h
@@ -339,7 +339,7 @@
   ConditionVariable attach_cond_ GUARDED_BY(attach_lock_);
 
   // Time of last debugger activity, in milliseconds.
-  int64_t last_activity_time_ms_;
+  Atomic<int64_t> last_activity_time_ms_;
 
   // Global counters and a mutex to protect them.
   AtomicInteger request_serial_;
diff --git a/runtime/jdwp/jdwp_handler.cc b/runtime/jdwp/jdwp_handler.cc
index 05bfe0d..b9379f5 100644
--- a/runtime/jdwp/jdwp_handler.cc
+++ b/runtime/jdwp/jdwp_handler.cc
@@ -1671,7 +1671,7 @@
      * so waitForDebugger() doesn't return if we stall for a bit here.
      */
     Dbg::GoActive();
-    QuasiAtomic::Write64(&last_activity_time_ms_, 0);
+    last_activity_time_ms_.StoreSequentiallyConsistent(0);
   }
 
   /*
@@ -1751,7 +1751,7 @@
    * the initial setup.  Only update if this is a non-DDMS packet.
    */
   if (request.GetCommandSet() != kJDWPDdmCmdSet) {
-    QuasiAtomic::Write64(&last_activity_time_ms_, MilliTime());
+    last_activity_time_ms_.StoreSequentiallyConsistent(MilliTime());
   }
 
   /* tell the VM that GC is okay again */
diff --git a/runtime/jdwp/jdwp_main.cc b/runtime/jdwp/jdwp_main.cc
index 64e9f37..7795b7c 100644
--- a/runtime/jdwp/jdwp_main.cc
+++ b/runtime/jdwp/jdwp_main.cc
@@ -577,7 +577,7 @@
     return -1;
   }
 
-  int64_t last = QuasiAtomic::Read64(&last_activity_time_ms_);
+  int64_t last = last_activity_time_ms_.LoadSequentiallyConsistent();
 
   /* initializing or in the middle of something? */
   if (last == 0) {