Title: [200861] trunk/Source/WebCore
Revision
200861
Author
beid...@apple.com
Date
2016-05-13 10:37:23 -0700 (Fri, 13 May 2016)

Log Message

Give CrossThreadCopier a default specialization for Vectors of objects.
https://bugs.webkit.org/show_bug.cgi?id=157675

Reviewed by Darin Adler.

No new tests (Refactor, no change in behavior).

* platform/CrossThreadCopier.cpp:
(WebCore::Vector<String>>::copy): Deleted.
* platform/CrossThreadCopier.h: Add a default specialization for Vector<T> where T is a type
  that is CrossThreadCopyable itself.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (200860 => 200861)


--- trunk/Source/WebCore/ChangeLog	2016-05-13 17:29:22 UTC (rev 200860)
+++ trunk/Source/WebCore/ChangeLog	2016-05-13 17:37:23 UTC (rev 200861)
@@ -1,3 +1,17 @@
+2016-05-13  Brady Eidson  <beid...@apple.com>
+
+        Give CrossThreadCopier a default specialization for Vectors of objects.
+        https://bugs.webkit.org/show_bug.cgi?id=157675
+
+        Reviewed by Darin Adler.
+
+        No new tests (Refactor, no change in behavior).
+
+        * platform/CrossThreadCopier.cpp:
+        (WebCore::Vector<String>>::copy): Deleted.
+        * platform/CrossThreadCopier.h: Add a default specialization for Vector<T> where T is a type
+          that is CrossThreadCopyable itself.
+
 2016-05-13  Chris Dumez  <cdu...@apple.com>
 
         Have the WorkerGlobalScope API return more references

Modified: trunk/Source/WebCore/platform/CrossThreadCopier.cpp (200860 => 200861)


--- trunk/Source/WebCore/platform/CrossThreadCopier.cpp	2016-05-13 17:29:22 UTC (rev 200860)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.cpp	2016-05-13 17:37:23 UTC (rev 200861)
@@ -85,16 +85,6 @@
     return ThreadSafeDataBuffer(buffer);
 }
 
-CrossThreadCopierBase<false, false, Vector<String>>::Type CrossThreadCopierBase<false, false, Vector<String>>::copy(const Vector<String>& strings)
-{
-    Vector<String> result;
-    result.reserveInitialCapacity(strings.size());
-    for (auto& string : strings)
-        result.uncheckedAppend(string.isolatedCopy());
-
-    return result;
-}
-
 // Test CrossThreadCopier using COMPILE_ASSERT.
 
 // Verify that ThreadSafeRefCounted objects get handled correctly.

Modified: trunk/Source/WebCore/platform/CrossThreadCopier.h (200860 => 200861)


--- trunk/Source/WebCore/platform/CrossThreadCopier.h	2016-05-13 17:29:22 UTC (rev 200860)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.h	2016-05-13 17:37:23 UTC (rev 200861)
@@ -160,13 +160,21 @@
     static Type copy(const ThreadSafeDataBuffer&);
 };
 
-template<> struct CrossThreadCopierBase<false, false, Vector<String>> {
-    typedef Vector<String> Type;
-    static Type copy(const Vector<String>&);
-};
-
 template<typename T>
 struct CrossThreadCopier : public CrossThreadCopierBase<CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger<T>::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer<T>::value, T> {
 };
 
+// Default specialization for Vectors of CrossThreadCopyable classes.
+template<typename T> struct CrossThreadCopierBase<false, false, Vector<T>> {
+    typedef Vector<T> Type;
+    static Type copy(const Type& source)
+    {
+        Type destination;
+        destination.reserveInitialCapacity(source.size());
+        for (auto& object : source)
+            destination.uncheckedAppend(CrossThreadCopier<T>::copy(object));
+        return destination;
+    }
+};
+
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to