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