Unreviewed, rolling out r188717 and r188719.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 Aug 2015 00:47:16 +0000 (00:47 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 21 Aug 2015 00:47:16 +0000 (00:47 +0000)
https://bugs.webkit.org/show_bug.cgi?id=148272

Broke the Mavericks build (Requested by andersca on #webkit).

Reverted changesets:

"Merge Lock and LockBase"
https://bugs.webkit.org/show_bug.cgi?id=148266
http://trac.webkit.org/changeset/188717

"Merge ConditionBase and Condition"
https://bugs.webkit.org/show_bug.cgi?id=148270
http://trac.webkit.org/changeset/188719

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@188722 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WTF/ChangeLog
Source/WTF/wtf/Atomics.h
Source/WTF/wtf/Condition.h
Source/WTF/wtf/Lock.cpp
Source/WTF/wtf/Lock.h
Source/WTF/wtf/WordLock.h
Source/WebCore/ChangeLog
Source/WebCore/platform/network/cf/LoaderRunLoopCF.cpp

index 0592eb5..f31678a 100644 (file)
@@ -1,3 +1,20 @@
+2015-08-20  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r188717 and r188719.
+        https://bugs.webkit.org/show_bug.cgi?id=148272
+
+        Broke the Mavericks build (Requested by andersca on #webkit).
+
+        Reverted changesets:
+
+        "Merge Lock and LockBase"
+        https://bugs.webkit.org/show_bug.cgi?id=148266
+        http://trac.webkit.org/changeset/188717
+
+        "Merge ConditionBase and Condition"
+        https://bugs.webkit.org/show_bug.cgi?id=148270
+        http://trac.webkit.org/changeset/188719
+
 2015-08-20  Anders Carlsson  <andersca@apple.com>
 
         Merge ConditionBase and Condition
index 0874318..3e1e324 100644 (file)
@@ -81,12 +81,6 @@ namespace WTF {
 
 template<typename T>
 struct Atomic {
-    Atomic() = default;
-    CONSTEXPR Atomic(T value)
-        : value(value)
-    {
-    }
-
     // Don't pass a non-default value for the order parameter unless you really know
     // what you are doing and have thought about it very hard. The cost of seq_cst
     // is usually not high enough to justify the risk.
index 6c4772f..80c0729 100644 (file)
@@ -43,7 +43,9 @@ namespace WTF {
 // case where no thread is waiting. This condition variable, when used with WTF::Lock, can
 // outperform a system condition variable and lock by up to 58x.
 
-struct Condition {
+// This is a struct without a constructor or destructor so that it can be statically initialized.
+// Use Lock in instance variables.
+struct ConditionBase {
     typedef ParkingLot::Clock Clock;
     
     // Wait on a parking queue while releasing the given lock. It will unlock the lock just before
@@ -226,12 +228,24 @@ protected:
         return Clock::now() + myRelativeTimeout;
     }
 
-    Atomic<bool> m_hasWaiters { false };
+    Atomic<bool> m_hasWaiters;
 };    
 
+class Condition : public ConditionBase {
+    WTF_MAKE_NONCOPYABLE(Condition);
+public:
+    Condition()
+    {
+        m_hasWaiters.store(false);
+    }
+};
+
+typedef ConditionBase StaticCondition;
+
 } // namespace WTF
 
 using WTF::Condition;
+using WTF::StaticCondition;
 
 #endif // WTF_Condition_h
 
index 38e511d..c844271 100644 (file)
@@ -36,7 +36,7 @@ namespace WTF {
 
 static const bool verbose = false;
 
-void Lock::lockSlow()
+void LockBase::lockSlow()
 {
     unsigned spinCount = 0;
 
@@ -74,7 +74,7 @@ void Lock::lockSlow()
     }
 }
 
-void Lock::unlockSlow()
+void LockBase::unlockSlow()
 {
     // We could get here because the weak CAS in unlock() failed spuriously, or because there is
     // someone parked. So, we need a CAS loop: even if right now the lock is just held, it could
index 4453edf..8395653 100644 (file)
@@ -43,7 +43,9 @@ namespace WTF {
 // cannot be acquired in a short period of time, the thread is put to sleep until the lock is available
 // again). It uses less memory than a std::mutex.
 
-struct Lock {
+// This is a struct without a constructor or destructor so that it can be statically initialized.
+// Use Lock in instance variables.
+struct LockBase {
     void lock()
     {
         if (LIKELY(m_byte.compareExchangeWeak(0, isHeldBit, std::memory_order_acquire))) {
@@ -106,13 +108,20 @@ protected:
         return !m_byte.load();
     }
 
-    Atomic<uint8_t> m_byte { 0 };
+    Atomic<uint8_t> m_byte;
 };
 
-typedef Locker<Lock> LockHolder;
+class Lock : public LockBase {
+    WTF_MAKE_NONCOPYABLE(Lock);
+public:
+    Lock()
+    {
+        m_byte.store(0, std::memory_order_relaxed);
+    }
+};
 
-// FIXME: Once all clients have been moved from StaticLock to Lock we can get rid of this typedef.
-typedef Lock StaticLock;
+typedef LockBase StaticLock;
+typedef Locker<LockBase> LockHolder;
 
 } // namespace WTF
 
index ea5f545..c7e208b 100644 (file)
@@ -45,7 +45,10 @@ namespace WTF {
 class WordLock {
     WTF_MAKE_NONCOPYABLE(WordLock);
 public:
-    CONSTEXPR WordLock() = default;
+    WordLock()
+    {
+        m_word.store(0, std::memory_order_relaxed);
+    }
 
     void lock()
     {
@@ -93,7 +96,7 @@ private:
         return !m_word.load();
     }
 
-    Atomic<uintptr_t> m_word { 0 };
+    Atomic<uintptr_t> m_word;
 };
 
 typedef Locker<WordLock> WordLockHolder;
index 4cf7af9..ac77063 100644 (file)
@@ -1,3 +1,20 @@
+2015-08-20  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r188717 and r188719.
+        https://bugs.webkit.org/show_bug.cgi?id=148272
+
+        Broke the Mavericks build (Requested by andersca on #webkit).
+
+        Reverted changesets:
+
+        "Merge Lock and LockBase"
+        https://bugs.webkit.org/show_bug.cgi?id=148266
+        http://trac.webkit.org/changeset/188717
+
+        "Merge ConditionBase and Condition"
+        https://bugs.webkit.org/show_bug.cgi?id=148270
+        http://trac.webkit.org/changeset/188719
+
 2015-08-20  Anders Carlsson  <andersca@apple.com>
 
         Merge ConditionBase and Condition
index f6398e8..ad16dd9 100644 (file)
@@ -43,7 +43,7 @@ namespace WebCore {
 static CFRunLoopRef loaderRunLoopObject = 0;
 
 static StaticLock loaderRunLoopMutex;
-static Condition loaderRunLoopConditionVariable;
+static StaticCondition loaderRunLoopConditionVariable;
 
 static void emptyPerform(void*) 
 {