Title: [202136] trunk
Revision
202136
Author
[email protected]
Date
2016-06-16 13:39:45 -0700 (Thu, 16 Jun 2016)

Log Message

Unreviewed, rolling out r202002 and r202111.

Ryosuke says this was a JSBench regression on iOS

Reverted changesets:

"Make HashMap and HashSet work with Refs"
https://bugs.webkit.org/show_bug.cgi?id=158638
http://trac.webkit.org/changeset/202002

"Improve HashMap and HashSet support for Ref"
https://bugs.webkit.org/show_bug.cgi?id=158789
http://trac.webkit.org/changeset/202111

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (202135 => 202136)


--- trunk/Source/WTF/ChangeLog	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/ChangeLog	2016-06-16 20:39:45 UTC (rev 202136)
@@ -1,3 +1,19 @@
+2016-06-16  Chris Dumez  <[email protected]>
+
+        Unreviewed, rolling out r202002 and r202111.
+
+        Ryosuke says this was a JSBench regression on iOS
+
+        Reverted changesets:
+
+        "Make HashMap and HashSet work with Refs"
+        https://bugs.webkit.org/show_bug.cgi?id=158638
+        http://trac.webkit.org/changeset/202002
+
+        "Improve HashMap and HashSet support for Ref"
+        https://bugs.webkit.org/show_bug.cgi?id=158789
+        http://trac.webkit.org/changeset/202111
+
 2016-06-15  Chris Dumez  <[email protected]>
 
         [Cocoa] Clean up / optimize ResourceResponse::platformLazyInit(InitLevel)

Modified: trunk/Source/WTF/wtf/GetPtr.h (202135 => 202136)


--- trunk/Source/WTF/wtf/GetPtr.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/GetPtr.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -25,9 +25,6 @@
 
 namespace WTF {
 
-enum HashTableDeletedValueType { HashTableDeletedValue };
-enum HashTableEmptyValueType { HashTableEmptyValue };
-
 template <typename T> inline T* getPtr(T* p) { return p; }
 
 template <typename T> struct IsSmartPtr {

Modified: trunk/Source/WTF/wtf/HashFunctions.h (202135 => 202136)


--- trunk/Source/WTF/wtf/HashFunctions.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/HashFunctions.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -149,10 +149,6 @@
     template<typename T> struct PtrHash : PtrHashBase<T, IsSmartPtr<T>::value> {
     };
 
-    template<typename P> struct PtrHash<Ref<P>> : PtrHashBase<Ref<P>, IsSmartPtr<Ref<P>>::value> {
-        static const bool safeToCompareToEmptyOrDeleted = false;
-    };
-
     // default hash function for each type
 
     template<typename T> struct DefaultHash;
@@ -198,8 +194,6 @@
 
     template<typename P> struct DefaultHash<P*> { typedef PtrHash<P*> Hash; };
     template<typename P> struct DefaultHash<RefPtr<P>> { typedef PtrHash<RefPtr<P>> Hash; };
-    template<typename P> struct DefaultHash<Ref<P>> { typedef PtrHash<Ref<P>> Hash; };
-
     template<typename P, typename Deleter> struct DefaultHash<std::unique_ptr<P, Deleter>> { typedef PtrHash<std::unique_ptr<P, Deleter>> Hash; };
 
     // make IntPairHash the default hash function for pairs of (at most) 32-bit integers.

Modified: trunk/Source/WTF/wtf/HashMap.h (202135 => 202136)


--- trunk/Source/WTF/wtf/HashMap.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/HashMap.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -54,7 +54,6 @@
 
 private:
     typedef typename MappedTraits::PeekType MappedPeekType;
-    typedef typename MappedTraits::TakeType MappedTakeType;
 
     typedef HashArg HashFunctions;
 
@@ -131,7 +130,7 @@
     void removeIf(const Functor& functor);
     void clear();
 
-    MappedTakeType take(const KeyType&); // efficient combination of get with remove
+    MappedType take(const KeyType&); // efficient combination of get with remove
 
     // An alternate version of find() that finds the object by hashing and comparing
     // with some other type, to avoid the cost of type conversion. HashTranslator
@@ -157,7 +156,7 @@
     template<typename K = KeyType> typename std::enable_if<IsSmartPtr<K>::value, MappedPeekType>::type inlineGet(typename GetPtrHelper<K>::PtrType) const;
     template<typename K = KeyType> typename std::enable_if<IsSmartPtr<K>::value, MappedPeekType>::type get(typename GetPtrHelper<K>::PtrType) const;
     template<typename K = KeyType> typename std::enable_if<IsSmartPtr<K>::value, bool>::type remove(typename GetPtrHelper<K>::PtrType);
-    template<typename K = KeyType> typename std::enable_if<IsSmartPtr<K>::value, MappedTakeType>::type take(typename GetPtrHelper<K>::PtrType);
+    template<typename K = KeyType> typename std::enable_if<IsSmartPtr<K>::value, MappedType>::type take(typename GetPtrHelper<K>::PtrType);
 
     void checkConsistency() const;
 
@@ -182,8 +181,8 @@
     template<typename T, typename U> static bool equal(const T& a, const U& b) { return HashFunctions::equal(a, b); }
     template<typename T, typename U, typename V> static void translate(T& location, U&& key, V&& mapped)
     {
-        ValueTraits::KeyTraits::assignToEmpty(location.key, std::forward<U>(key));
-        ValueTraits::ValueTraits::assignToEmpty(location.value, std::forward<V>(mapped));
+        location.key = std::forward<U>(key);
+        location.value = std::forward<V>(mapped);
     }
 };
 
@@ -193,8 +192,8 @@
     template<typename T, typename U> static bool equal(const T& a, const U& b) { return HashFunctions::equal(a, b); }
     template<typename T, typename U, typename Functor> static void translate(T& location, U&& key, const Functor& functor)
     {
-        ValueTraits::KeyTraits::assignToEmpty(location.key, std::forward<U>(key));
-        ValueTraits::ValueTraits::assignToEmpty(location.value, functor());
+        location.key = std::forward<U>(key);
+        location.value = functor();
     }
 };
 
@@ -435,12 +434,12 @@
 }
 
 template<typename T, typename U, typename V, typename W, typename MappedTraits>
-auto HashMap<T, U, V, W, MappedTraits>::take(const KeyType& key) -> MappedTakeType
+auto HashMap<T, U, V, W, MappedTraits>::take(const KeyType& key) -> MappedType
 {
     iterator it = find(key);
     if (it == end())
-        return MappedTraits::take(MappedTraits::emptyValue());
-    auto value = MappedTraits::take(WTFMove(it->value));
+        return MappedTraits::emptyValue();
+    MappedType value = WTFMove(it->value);
     remove(it);
     return value;
 }
@@ -492,12 +491,12 @@
 
 template<typename T, typename U, typename V, typename W, typename X>
 template<typename K>
-inline auto HashMap<T, U, V, W, X>::take(typename GetPtrHelper<K>::PtrType key) -> typename std::enable_if<IsSmartPtr<K>::value, MappedTakeType>::type
+inline auto HashMap<T, U, V, W, X>::take(typename GetPtrHelper<K>::PtrType key) -> typename std::enable_if<IsSmartPtr<K>::value, MappedType>::type
 {
     iterator it = find(key);
     if (it == end())
-        return MappedTraits::take(MappedTraits::emptyValue());
-    auto value = MappedTraits::take(WTFMove(it->value));
+        return MappedTraits::emptyValue();
+    MappedType value = WTFMove(it->value);
     remove(it);
     return value;
 }

Modified: trunk/Source/WTF/wtf/HashSet.h (202135 => 202136)


--- trunk/Source/WTF/wtf/HashSet.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/HashSet.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -38,7 +38,6 @@
     private:
         typedef HashArg HashFunctions;
         typedef TraitsArg ValueTraits;
-        typedef typename ValueTraits::TakeType TakeType;
 
     public:
         typedef typename ValueTraits::TraitType ValueType;
@@ -106,15 +105,15 @@
         void removeIf(const Functor&);
         void clear();
 
-        TakeType take(const ValueType&);
-        TakeType take(iterator);
-        TakeType takeAny();
+        ValueType take(const ValueType&);
+        ValueType take(iterator);
+        ValueType takeAny();
 
         // Overloads for smart pointer values that take the raw pointer type as the parameter.
         template<typename V = ValueType> typename std::enable_if<IsSmartPtr<V>::value, iterator>::type find(typename GetPtrHelper<V>::PtrType) const;
         template<typename V = ValueType> typename std::enable_if<IsSmartPtr<V>::value, bool>::type contains(typename GetPtrHelper<V>::PtrType) const;
         template<typename V = ValueType> typename std::enable_if<IsSmartPtr<V>::value, bool>::type remove(typename GetPtrHelper<V>::PtrType);
-        template<typename V = ValueType> typename std::enable_if<IsSmartPtr<V>::value, TakeType>::type take(typename GetPtrHelper<V>::PtrType);
+        template<typename V = ValueType> typename std::enable_if<IsSmartPtr<V>::value, ValueType>::type take(typename GetPtrHelper<V>::PtrType);
 
         static bool isValidValue(const ValueType&);
 
@@ -129,14 +128,11 @@
         template<typename T> static const T& extract(const T& t) { return t; }
     };
 
-    template<typename ValueTraits, typename HashFunctions>
+    template<typename HashFunctions>
     struct HashSetTranslator {
         template<typename T> static unsigned hash(const T& key) { return HashFunctions::hash(key); }
         template<typename T, typename U> static bool equal(const T& a, const U& b) { return HashFunctions::equal(a, b); }
-        template<typename T, typename U, typename V> static void translate(T& location, U&&, V&& value)
-        { 
-            ValueTraits::assignToEmpty(location, std::forward<V>(value));
-        }
+        template<typename T, typename U, typename V> static void translate(T& location, U&&, V&& value) { location = std::forward<V>(value); }
     };
 
     template<typename Translator>
@@ -270,24 +266,24 @@
     }
 
     template<typename T, typename U, typename V>
-    inline auto HashSet<T, U, V>::take(iterator it) -> TakeType
+    inline auto HashSet<T, U, V>::take(iterator it) -> ValueType
     {
         if (it == end())
-            return ValueTraits::take(ValueTraits::emptyValue());
+            return ValueTraits::emptyValue();
 
-        auto result = ValueTraits::take(WTFMove(const_cast<ValueType&>(*it)));
+        ValueType result = WTFMove(const_cast<ValueType&>(*it));
         remove(it);
         return result;
     }
 
     template<typename T, typename U, typename V>
-    inline auto HashSet<T, U, V>::take(const ValueType& value) -> TakeType
+    inline auto HashSet<T, U, V>::take(const ValueType& value) -> ValueType
     {
         return take(find(value));
     }
 
     template<typename T, typename U, typename V>
-    inline auto HashSet<T, U, V>::takeAny() -> TakeType
+    inline auto HashSet<T, U, V>::takeAny() -> ValueType
     {
         return take(begin());
     }
@@ -296,14 +292,14 @@
     template<typename V>
     inline auto HashSet<Value, HashFunctions, Traits>::find(typename GetPtrHelper<V>::PtrType value) const -> typename std::enable_if<IsSmartPtr<V>::value, iterator>::type
     {
-        return m_impl.template find<HashSetTranslator<Traits, HashFunctions>>(value);
+        return m_impl.template find<HashSetTranslator<HashFunctions>>(value);
     }
 
     template<typename Value, typename HashFunctions, typename Traits>
     template<typename V>
     inline auto HashSet<Value, HashFunctions, Traits>::contains(typename GetPtrHelper<V>::PtrType value) const -> typename std::enable_if<IsSmartPtr<V>::value, bool>::type
     {
-        return m_impl.template contains<HashSetTranslator<Traits, HashFunctions>>(value);
+        return m_impl.template contains<HashSetTranslator<HashFunctions>>(value);
     }
 
     template<typename Value, typename HashFunctions, typename Traits>
@@ -315,7 +311,7 @@
 
     template<typename Value, typename HashFunctions, typename Traits>
     template<typename V>
-    inline auto HashSet<Value, HashFunctions, Traits>::take(typename GetPtrHelper<V>::PtrType value) -> typename std::enable_if<IsSmartPtr<V>::value, TakeType>::type
+    inline auto HashSet<Value, HashFunctions, Traits>::take(typename GetPtrHelper<V>::PtrType value) -> typename std::enable_if<IsSmartPtr<V>::value, ValueType>::type
     {
         return take(find(value));
     }

Modified: trunk/Source/WTF/wtf/HashTable.h (202135 => 202136)


--- trunk/Source/WTF/wtf/HashTable.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/HashTable.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -279,14 +279,11 @@
         const_iterator m_iterator;
     };
 
-    template<typename ValueTraits, typename HashFunctions> class IdentityHashTranslator {
+    template<typename HashFunctions> class IdentityHashTranslator {
     public:
         template<typename T> static unsigned hash(const T& key) { return HashFunctions::hash(key); }
         template<typename T, typename U> static bool equal(const T& a, const U& b) { return HashFunctions::equal(a, b); }
-        template<typename T, typename U, typename V> static void translate(T& location, const U&, V&& value)
-        { 
-            ValueTraits::assignToEmpty(location, std::forward<V>(value)); 
-        }
+        template<typename T, typename U, typename V> static void translate(T& location, const U&, V&& value) { location = std::forward<V>(value); }
     };
 
     template<typename IteratorType> struct HashTableAddResult {
@@ -306,7 +303,7 @@
         typedef Traits ValueTraits;
         typedef Key KeyType;
         typedef Value ValueType;
-        typedef IdentityHashTranslator<ValueTraits, HashFunctions> IdentityTranslatorType;
+        typedef IdentityHashTranslator<HashFunctions> IdentityTranslatorType;
         typedef HashTableAddResult<iterator> AddResult;
 
 #if DUMP_HASHTABLE_STATS_PER_TABLE

Modified: trunk/Source/WTF/wtf/HashTraits.h (202135 => 202136)


--- trunk/Source/WTF/wtf/HashTraits.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/HashTraits.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -21,11 +21,10 @@
 #ifndef WTF_HashTraits_h
 #define WTF_HashTraits_h
 
-#include <limits>
-#include <utility>
 #include <wtf/HashFunctions.h>
-#include <wtf/Optional.h>
 #include <wtf/StdLibExtras.h>
+#include <utility>
+#include <limits>
 
 namespace WTF {
 
@@ -62,18 +61,9 @@
 
     static T emptyValue() { return T(); }
 
-    template<typename U, typename V> 
-    static void assignToEmpty(U& emptyValue, V&& value)
-    { 
-        emptyValue = std::forward<V>(value);
-    }
-
     // Type for return value of functions that do not transfer ownership, such as get.
     typedef T PeekType;
     template<typename U> static U&& peek(U&& value) { return std::forward<U>(value); }
-
-    typedef T TakeType;
-    template<typename U> static TakeType take(U&& value) { return std::forward<U>(value); }
 };
 
 template<typename T> struct HashTraits : GenericHashTraits<T> { };
@@ -175,23 +165,6 @@
     }
 };
 
-template<typename P> struct HashTraits<Ref<P>> : SimpleClassHashTraits<Ref<P>> {
-    static const bool emptyValueIsZero = true;
-    static Ref<P> emptyValue() { return HashTableEmptyValue; }
-
-    static const bool hasIsEmptyValueFunction = true;
-    static bool isEmptyValue(const Ref<P>& value) { return value.isHashTableEmptyValue(); }
-
-    static void assignToEmpty(Ref<P>& emptyValue, Ref<P>&& newValue) { ASSERT(isEmptyValue(emptyValue)); emptyValue.assignToHashTableEmptyValue(WTFMove(newValue)); }
-
-    typedef P* PeekType;
-    static PeekType peek(const Ref<P>& value) { return const_cast<PeekType>(value.ptrAllowingHashTableEmptyValue()); }
-    static PeekType peek(P* value) { return value; }
-
-    typedef Optional<Ref<P>> TakeType;
-    static TakeType take(Ref<P>&& value) { return isEmptyValue(value) ? Nullopt : Optional<Ref<P>>(WTFMove(value)); }
-};
-
 template<> struct HashTraits<String> : SimpleClassHashTraits<String> {
     static const bool hasIsEmptyValueFunction = true;
     static bool isEmptyValue(const String&);

Modified: trunk/Source/WTF/wtf/Ref.h (202135 => 202136)


--- trunk/Source/WTF/wtf/Ref.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/Ref.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -114,25 +114,6 @@
         return *this;
     }
 
-    // Hash table deleted/empty values, which are only constructed and never copied or destroyed.
-    Ref(HashTableDeletedValueType) : m_ptr(hashTableDeletedValue()) { }
-    bool isHashTableDeletedValue() const { return m_ptr == hashTableDeletedValue(); }
-    static T* hashTableDeletedValue() { return reinterpret_cast<T*>(-1); }
-
-    Ref(HashTableEmptyValueType) : m_ptr(hashTableEmptyValue()) { }
-    bool isHashTableEmptyValue() const { return m_ptr == hashTableEmptyValue(); }
-    static T* hashTableEmptyValue() { return nullptr; }
-
-    const T* ptrAllowingHashTableEmptyValue() const { ASSERT(m_ptr || isHashTableEmptyValue()); return m_ptr; }
-    T* ptrAllowingHashTableEmptyValue() { ASSERT(m_ptr || isHashTableEmptyValue()); return m_ptr; }
-
-    void assignToHashTableEmptyValue(Ref&& reference)
-    {
-        ASSERT(m_ptr == hashTableEmptyValue());
-        m_ptr = &reference.leakRef();
-        ASSERT(m_ptr);
-    }
-
     const T* operator->() const { ASSERT(m_ptr); return m_ptr; }
     T* operator->() { ASSERT(m_ptr); return m_ptr; }
 
@@ -205,16 +186,12 @@
     static T* getPtr(const Ref<T>& p) { return const_cast<T*>(p.ptr()); }
 };
 
-template <typename T> 
-struct IsSmartPtr<Ref<T>> {
-    static const bool value = true;
-};
-
 template<typename T>
 inline Ref<T> adoptRef(T& reference)
 {
     adopted(&reference);
     return Ref<T>(reference, Ref<T>::Adopt);
+
 }
 
 template<typename ExpectedType, typename ArgType> inline bool is(Ref<ArgType>& source)

Modified: trunk/Source/WTF/wtf/RefPtr.h (202135 => 202136)


--- trunk/Source/WTF/wtf/RefPtr.h	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Source/WTF/wtf/RefPtr.h	2016-06-16 20:39:45 UTC (rev 202136)
@@ -34,6 +34,8 @@
 template<typename T> class RefPtr;
 template<typename T> RefPtr<T> adoptRef(T*);
 
+enum HashTableDeletedValueType { HashTableDeletedValue };
+
 template<typename T> class RefPtr {
     WTF_MAKE_FAST_ALLOCATED;
 public:

Modified: trunk/Tools/ChangeLog (202135 => 202136)


--- trunk/Tools/ChangeLog	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Tools/ChangeLog	2016-06-16 20:39:45 UTC (rev 202136)
@@ -1,3 +1,19 @@
+2016-06-16  Chris Dumez  <[email protected]>
+
+        Unreviewed, rolling out r202002 and r202111.
+
+        Ryosuke says this was a JSBench regression on iOS
+
+        Reverted changesets:
+
+        "Make HashMap and HashSet work with Refs"
+        https://bugs.webkit.org/show_bug.cgi?id=158638
+        http://trac.webkit.org/changeset/202002
+
+        "Improve HashMap and HashSet support for Ref"
+        https://bugs.webkit.org/show_bug.cgi?id=158789
+        http://trac.webkit.org/changeset/202111
+
 2016-06-15  Simon Fraser  <[email protected]>
 
         [iOS WK2] On iPad, indirect focussing of a text field doesn't always scroll to the correct location

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp (202135 => 202136)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp	2016-06-16 20:39:45 UTC (rev 202136)
@@ -701,196 +701,4 @@
     EXPECT_EQ(observer->count, 0u);
 }
 
-TEST(WTF_HashMap, Ref_Key)
-{
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(WTFMove(ref), 1);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.set(WTFMove(ref), 1);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> refA(a);
-        map.add(WTFMove(refA), 1);
-
-        Ref<RefLogger> refA2(a);
-        map.set(WTFMove(refA2), 1);
-    }
-
-    ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.ensure(WTFMove(ref), []() { 
-            return 1; 
-        });
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(WTFMove(ref), 1);
-        
-        auto it = map.find(&a);
-        ASSERT_TRUE(it != map.end());
-        
-        ASSERT_EQ(it->key.ptr(), &a);
-        ASSERT_EQ(it->value, 1);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(WTFMove(ref), 1);
-
-        map.remove(&a);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<Ref<RefLogger>, int> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(WTFMove(ref), 1);
-
-        int i = map.take(&a);
-        ASSERT_EQ(i, 1);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-}
-
-TEST(WTF_HashMap, Ref_Value)
-{
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(1, WTFMove(ref));
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.set(1, WTFMove(ref));
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> refA(a);
-        map.add(1, WTFMove(refA));
-
-        RefLogger b("b");
-        Ref<RefLogger> refB(b);
-        map.set(1, WTFMove(refB));
-    }
-
-    ASSERT_STREQ("ref(a) ref(b) deref(a) deref(b) ", takeLogStr().c_str());
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(1, WTFMove(ref));
-        
-        auto aGet = map.get(1);
-        ASSERT_EQ(aGet, &a);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-        
-        auto emptyGet = map.get(1);
-        ASSERT_TRUE(emptyGet == nullptr);
-    }
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(1, WTFMove(ref));
-        
-        auto aOut = map.take(1);
-        ASSERT_TRUE(static_cast<bool>(aOut));
-        ASSERT_EQ(&a, aOut.value().ptr());
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-        
-        auto emptyTake = map.take(1);
-        ASSERT_FALSE(static_cast<bool>(emptyTake));
-    }
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        map.add(1, WTFMove(ref));
-        map.remove(1);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashMap<int, Ref<RefLogger>> map;
-
-        RefLogger a("a");
-        map.ensure(1, [&]() { 
-            Ref<RefLogger> ref(a);
-            return ref; 
-        });
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-}
-
-
-
 } // namespace TestWebKitAPI

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp (202135 => 202136)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp	2016-06-16 20:39:44 UTC (rev 202135)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp	2016-06-16 20:39:45 UTC (rev 202136)
@@ -27,7 +27,6 @@
 
 #include "Counters.h"
 #include "MoveOnly.h"
-#include "RefLogger.h"
 #include <wtf/HashSet.h>
 #include <wtf/RefPtr.h>
 
@@ -349,84 +348,5 @@
     EXPECT_TRUE(observedBucket == observerAddress || observedBucket == reinterpret_cast<const DestructorObserver*>(-1));
 }
 
-TEST(WTF_HashSet, Ref)
-{
-    {
-        HashSet<Ref<RefLogger>> set;
 
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        set.add(WTFMove(ref));
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashSet<Ref<RefLogger>> set;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        set.add(ref.copyRef());
-    }
-
-    ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashSet<Ref<RefLogger>> set;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        set.add(WTFMove(ref));
-        set.remove(&a);
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashSet<Ref<RefLogger>> set;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        set.add(WTFMove(ref));
-
-        auto aOut = set.take(&a);
-        ASSERT_TRUE(static_cast<bool>(aOut));
-        ASSERT_EQ(&a, aOut.value().ptr());
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashSet<Ref<RefLogger>> set;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        set.add(WTFMove(ref));
-
-        auto aOut = set.takeAny();
-        ASSERT_TRUE(static_cast<bool>(aOut));
-        ASSERT_EQ(&a, aOut.value().ptr());
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-
-    {
-        HashSet<Ref<RefLogger>> set;
-        auto emptyTake = set.takeAny();
-        ASSERT_FALSE(static_cast<bool>(emptyTake));
-    }
-
-    {
-        HashSet<Ref<RefLogger>> set;
-
-        RefLogger a("a");
-        Ref<RefLogger> ref(a);
-        set.add(WTFMove(ref));
-        
-        ASSERT_TRUE(set.contains(&a));
-    }
-
-    ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
-}
-
 } // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to