Commit dd85c735 authored by Sotaro Ikeda's avatar Sotaro Ikeda
Browse files

Bug 1253478 - Use Atomic<uint64_t> in AsyncTransactionTracker r=nical

parent 0a428b1a
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -36,8 +36,7 @@ AsyncTransactionWaiter::WaitComplete()
  }
}

uint64_t AsyncTransactionTracker::sSerialCounter(0);
Mutex* AsyncTransactionTracker::sLock = nullptr;
Atomic<uint64_t> AsyncTransactionTracker::sSerialCounter(0);

AsyncTransactionTracker::AsyncTransactionTracker(AsyncTransactionWaiter* aWaiter)
    : mSerial(GetNextSerial())
@@ -81,7 +80,7 @@ AsyncTransactionTracker::NotifyCancel()
  }
}

uint64_t AsyncTransactionTrackersHolder::sSerialCounter(0);
Atomic<uint64_t> AsyncTransactionTrackersHolder::sSerialCounter(0);
Mutex* AsyncTransactionTrackersHolder::sHolderLock = nullptr;

std::map<uint64_t, AsyncTransactionTrackersHolder*> AsyncTransactionTrackersHolder::sTrackersHolders;
+4 −18
Original line number Diff line number Diff line
@@ -108,25 +108,15 @@ protected:

  static void Initialize()
  {
    if (!sLock) {
      sLock = new Mutex("AsyncTransactionTracker::sLock");
    }
  }

  static void Finalize()
  {
    if (sLock) {
      delete sLock;
      sLock = nullptr;
    }
  }

  static uint64_t GetNextSerial()
  {
    MOZ_ASSERT(sLock);
    MutexAutoLock lock(*sLock);
    ++sSerialCounter;
    return sSerialCounter;
    return ++sSerialCounter;
  }

  uint64_t mSerial;
@@ -139,8 +129,7 @@ protected:
   * gecko does not provide atomic operation for uint64_t.
   * Ensure atomicity by using Mutex.
   */
  static uint64_t sSerialCounter;
  static Mutex* sLock;
  static Atomic<uint64_t> sSerialCounter;
};

class AsyncTransactionTrackersHolder
@@ -185,10 +174,7 @@ protected:

  static uint64_t GetNextSerial()
  {
    MOZ_ASSERT(sHolderLock);
    MutexAutoLock lock(*sHolderLock);
    ++sSerialCounter;
    return sSerialCounter;
    return ++sSerialCounter;
  }

  void TransactionCompletetedInternal(uint64_t aTransactionId);
@@ -208,7 +194,7 @@ protected:
   * gecko does not provide atomic operation for uint64_t.
   * Ensure atomicity by using Mutex.
   */
  static uint64_t sSerialCounter;
  static Atomic<uint64_t> sSerialCounter;
  static Mutex* sHolderLock;

  /**