Title: [200249] trunk/Source
Revision
200249
Author
beid...@apple.com
Date
2016-04-29 10:05:46 -0700 (Fri, 29 Apr 2016)

Log Message

Add a default ".isolatedCopy()" specialization to CrossThreadCopier, and other small cleanup.
https://bugs.webkit.org/show_bug.cgi?id=157185

Reviewed by Anders Carlsson.

Source/WebCore:

No new tests (Code cleanup, no change in behavior).

* platform/CrossThreadCopier.cpp:
(WebCore::IndexedDB::TransactionMode>::copy): Deleted.
(WebCore::IndexedDB::CursorDirection>::copy): Deleted.
(WebCore::IndexedDB::CursorType>::copy): Deleted.
(WebCore::IDBGetResult>::copy): Deleted.
(WebCore::IDBKeyData>::copy): Deleted.
(WebCore::IDBKeyRangeData>::copy): Deleted.
(WebCore::IDBDatabaseInfo>::copy): Deleted.
(WebCore::IDBDatabaseIdentifier>::copy): Deleted.
(WebCore::IDBTransactionInfo>::copy): Deleted.
(WebCore::IDBResourceIdentifier>::copy): Deleted.
(WebCore::IDBError>::copy): Deleted.
(WebCore::IDBObjectStoreInfo>::copy): Deleted.
(WebCore::IDBIndexInfo>::copy): Deleted.
(WebCore::IDBCursorInfo>::copy): Deleted.
(WebCore::IDBValue>::copy): Deleted.

* platform/CrossThreadCopier.h:
(WebCore::AllowCrossThreadAccessWrapper::AllowCrossThreadAccessWrapper): Deleted dead code.
(WebCore::AllowCrossThreadAccessWrapper::value): Deleted dead code.
(WebCore::AllowCrossThreadAccess): Deleted dead code.
(WebCore::AllowAccessLaterWrapper::AllowAccessLaterWrapper): Deleted dead code.
(WebCore::AllowAccessLaterWrapper::value): Deleted dead code.
(WebCore::AllowAccessLater): Deleted dead code.

Source/WebKit2:

* Shared/WebCrossThreadCopier.cpp:
(WebCore::Vector<char>>::copy): reserveInitialCapacity() before creating the copy.
(WebCore::Vector<int64_t>>::copy): Ditto.
(WebCore::Vector<uint8_t>>::copy): Ditto.
(WebCore::Vector<Vector<IDBKeyData>>>::copy): Deleted dead code.
* Shared/WebCrossThreadCopier.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (200248 => 200249)


--- trunk/Source/WebCore/ChangeLog	2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebCore/ChangeLog	2016-04-29 17:05:46 UTC (rev 200249)
@@ -1,3 +1,37 @@
+2016-04-29  Brady Eidson  <beid...@apple.com>
+
+        Add a default ".isolatedCopy()" specialization to CrossThreadCopier, and other small cleanup.
+        https://bugs.webkit.org/show_bug.cgi?id=157185
+
+        Reviewed by Anders Carlsson.
+
+        No new tests (Code cleanup, no change in behavior).
+
+        * platform/CrossThreadCopier.cpp:
+        (WebCore::IndexedDB::TransactionMode>::copy): Deleted.
+        (WebCore::IndexedDB::CursorDirection>::copy): Deleted.
+        (WebCore::IndexedDB::CursorType>::copy): Deleted.
+        (WebCore::IDBGetResult>::copy): Deleted.
+        (WebCore::IDBKeyData>::copy): Deleted.
+        (WebCore::IDBKeyRangeData>::copy): Deleted.
+        (WebCore::IDBDatabaseInfo>::copy): Deleted.
+        (WebCore::IDBDatabaseIdentifier>::copy): Deleted.
+        (WebCore::IDBTransactionInfo>::copy): Deleted.
+        (WebCore::IDBResourceIdentifier>::copy): Deleted.
+        (WebCore::IDBError>::copy): Deleted.
+        (WebCore::IDBObjectStoreInfo>::copy): Deleted.
+        (WebCore::IDBIndexInfo>::copy): Deleted.
+        (WebCore::IDBCursorInfo>::copy): Deleted.
+        (WebCore::IDBValue>::copy): Deleted.
+
+        * platform/CrossThreadCopier.h:
+        (WebCore::AllowCrossThreadAccessWrapper::AllowCrossThreadAccessWrapper): Deleted dead code.
+        (WebCore::AllowCrossThreadAccessWrapper::value): Deleted dead code.
+        (WebCore::AllowCrossThreadAccess): Deleted dead code.
+        (WebCore::AllowAccessLaterWrapper::AllowAccessLaterWrapper): Deleted dead code.
+        (WebCore::AllowAccessLaterWrapper::value): Deleted dead code.
+        (WebCore::AllowAccessLater): Deleted dead code.
+
 2016-04-29  Simon Fraser  <simon.fra...@apple.com>
 
         Wheel Event Not Fired For `body,html { height:100% }`

Modified: trunk/Source/WebCore/platform/CrossThreadCopier.cpp (200248 => 200249)


--- trunk/Source/WebCore/platform/CrossThreadCopier.cpp	2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.cpp	2016-04-29 17:05:46 UTC (rev 200249)
@@ -43,21 +43,6 @@
 #include <wtf/Assertions.h>
 #include <wtf/text/WTFString.h>
 
-#if ENABLE(INDEXED_DATABASE)
-#include "IDBCursorInfo.h"
-#include "IDBDatabaseIdentifier.h"
-#include "IDBDatabaseInfo.h"
-#include "IDBError.h"
-#include "IDBGetResult.h"
-#include "IDBIndexInfo.h"
-#include "IDBKeyData.h"
-#include "IDBKeyRangeData.h"
-#include "IDBObjectStoreInfo.h"
-#include "IDBResourceIdentifier.h"
-#include "IDBTransactionInfo.h"
-#include "IDBValue.h"
-#endif
-
 namespace WebCore {
 
 CrossThreadCopierBase<false, false, URL>::Type CrossThreadCopierBase<false, false, URL>::copy(const URL& url)
@@ -110,85 +95,6 @@
     return result;
 }
 
-#if ENABLE(INDEXED_DATABASE)
-
-IndexedDB::TransactionMode CrossThreadCopierBase<false, false, IndexedDB::TransactionMode>::copy(const IndexedDB::TransactionMode& mode)
-{
-    return mode;
-}
-
-IndexedDB::CursorDirection CrossThreadCopierBase<false, false, IndexedDB::CursorDirection>::copy(const IndexedDB::CursorDirection& direction)
-{
-    return direction;
-}
-
-IndexedDB::CursorType CrossThreadCopierBase<false, false, IndexedDB::CursorType>::copy(const IndexedDB::CursorType& type)
-{
-    return type;
-}
-
-CrossThreadCopierBase<false, false, IDBGetResult>::Type CrossThreadCopierBase<false, false, IDBGetResult>::copy(const IDBGetResult& result)
-{
-    return result.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBKeyData>::Type CrossThreadCopierBase<false, false, IDBKeyData>::copy(const IDBKeyData& keyData)
-{
-    return keyData.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBKeyRangeData>::Type CrossThreadCopierBase<false, false, IDBKeyRangeData>::copy(const IDBKeyRangeData& keyRangeData)
-{
-    return keyRangeData.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBDatabaseInfo>::Type CrossThreadCopierBase<false, false, IDBDatabaseInfo>::copy(const IDBDatabaseInfo& info)
-{
-    return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBDatabaseIdentifier>::Type CrossThreadCopierBase<false, false, IDBDatabaseIdentifier>::copy(const IDBDatabaseIdentifier& identifier)
-{
-    return identifier.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBTransactionInfo>::Type CrossThreadCopierBase<false, false, IDBTransactionInfo>::copy(const IDBTransactionInfo& info)
-{
-    return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBResourceIdentifier>::Type CrossThreadCopierBase<false, false, IDBResourceIdentifier>::copy(const IDBResourceIdentifier& identifier)
-{
-    return identifier.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBError>::Type CrossThreadCopierBase<false, false, IDBError>::copy(const IDBError& error)
-{
-    return error.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBObjectStoreInfo>::Type CrossThreadCopierBase<false, false, IDBObjectStoreInfo>::copy(const IDBObjectStoreInfo& info)
-{
-    return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBIndexInfo>::Type CrossThreadCopierBase<false, false, IDBIndexInfo>::copy(const IDBIndexInfo& info)
-{
-    return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBCursorInfo>::Type CrossThreadCopierBase<false, false, IDBCursorInfo>::copy(const IDBCursorInfo& info)
-{
-    return info.isolatedCopy();
-}
-
-CrossThreadCopierBase<false, false, IDBValue>::Type CrossThreadCopierBase<false, false, IDBValue>::copy(const IDBValue& value)
-{
-    return value.isolatedCopy();
-}
-
-#endif // ENABLE(INDEXED_DATABASE)
-
 // Test CrossThreadCopier using COMPILE_ASSERT.
 
 // Verify that ThreadSafeRefCounted objects get handled correctly.
@@ -211,32 +117,25 @@
                   >::value),
                RawPointerTest);
 
+// Add specializations for RefCounted types which will let us verify that no other template matches.
+template<typename T> struct CrossThreadCopierBase<false, false, RefPtr<T>> {
+    typedef int Type;
+};
 
-// Add a generic specialization which will let's us verify that no other template matches.
-template<typename T> struct CrossThreadCopierBase<false, false, T> {
+template<typename T> struct CrossThreadCopierBase<false, false, PassRefPtr<T>> {
     typedef int Type;
 };
 
-// Verify that RefCounted objects only match our generic template which exposes Type as int.
+template<typename T> struct CrossThreadCopierBase<false, false, T*> {
+    typedef int Type;
+};
+
+// Verify that RefCounted objects only match the above templates which expose Type as int.
 class CopierRefCountedTest : public RefCounted<CopierRefCountedTest> {
 };
 
-COMPILE_ASSERT((std::is_same<
-                  int,
-                  CrossThreadCopier<PassRefPtr<CopierRefCountedTest>>::Type
-                  >::value),
-               PassRefPtrRefCountedTest);
+static_assert((std::is_same<int, CrossThreadCopier<PassRefPtr<CopierRefCountedTest>>::Type>::value), "CrossThreadCopier specialization improperly applied to PassRefPtr<> of a RefCounted (but not ThreadSafeRefCounted) type");
+static_assert((std::is_same<int, CrossThreadCopier<RefPtr<CopierRefCountedTest>>::Type>::value), "CrossThreadCopier specialization improperly applied to RefPtr<> of a RefCounted (but not ThreadSafeRefCounted) type");
+static_assert((std::is_same<int, CrossThreadCopier<CopierRefCountedTest*>::Type>::value), "CrossThreadCopier specialization improperly applied to raw pointer of a RefCounted (but not ThreadSafeRefCounted) type");
 
-COMPILE_ASSERT((std::is_same<
-                  int,
-                  CrossThreadCopier<RefPtr<CopierRefCountedTest>>::Type
-                  >::value),
-               RefPtrRefCountedTest);
-
-COMPILE_ASSERT((std::is_same<
-                  int,
-                  CrossThreadCopier<CopierRefCountedTest*>::Type
-                  >::value),
-               RawPointerRefCountedTest);
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/platform/CrossThreadCopier.h (200248 => 200249)


--- trunk/Source/WebCore/platform/CrossThreadCopier.h	2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebCore/platform/CrossThreadCopier.h	2016-04-29 17:05:46 UTC (rev 200249)
@@ -100,6 +100,14 @@
 template<> struct CrossThreadCopierBase<false, false, IntSize> : public CrossThreadCopierPassThrough<IntSize> {
 };
 
+// Classes that have an isolatedCopy() method get a default specialization.
+template<class T> struct CrossThreadCopierBase<false, false, T> {
+    static T copy(const T& value)
+    {
+        return value.isolatedCopy();
+    }
+};
+
 // Custom copy methods.
 template<typename T> struct CrossThreadCopierBase<false, true, T> {
     typedef typename CrossThreadCopierBaseHelper::RemovePointer<T>::Type RefCountedType;
@@ -157,139 +165,8 @@
     static Type copy(const Vector<String>&);
 };
 
-#if ENABLE(INDEXED_DATABASE)
-namespace IndexedDB {
-enum class TransactionMode;
-enum class CursorDirection;
-enum class CursorType;
-}
-template<> struct CrossThreadCopierBase<false, false, IndexedDB::TransactionMode> {
-    WEBCORE_EXPORT static IndexedDB::TransactionMode copy(const IndexedDB::TransactionMode&);
-};
-template<> struct CrossThreadCopierBase<false, false, IndexedDB::CursorDirection> {
-    WEBCORE_EXPORT static IndexedDB::CursorDirection copy(const IndexedDB::CursorDirection&);
-};
-template<> struct CrossThreadCopierBase<false, false, IndexedDB::CursorType> {
-    WEBCORE_EXPORT static IndexedDB::CursorType copy(const IndexedDB::CursorType&);
-};
-
-class IDBGetResult;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBGetResult> {
-    typedef IDBGetResult Type;
-    static Type copy(const IDBGetResult&);
-};
-
-class IDBKeyData;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBKeyData> {
-    typedef IDBKeyData Type;
-    static Type copy(const IDBKeyData&);
-};
-
-struct IDBKeyRangeData;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBKeyRangeData> {
-    typedef IDBKeyRangeData Type;
-    static Type copy(const IDBKeyRangeData&);
-};
-
-class IDBDatabaseInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBDatabaseInfo> {
-    typedef IDBDatabaseInfo Type;
-    static Type copy(const IDBDatabaseInfo&);
-};
-
-class IDBDatabaseIdentifier;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBDatabaseIdentifier> {
-    typedef IDBDatabaseIdentifier Type;
-    static Type copy(const IDBDatabaseIdentifier&);
-};
-
-class IDBError;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBError> {
-    typedef IDBError Type;
-    static Type copy(const IDBError&);
-};
-
-class IDBResourceIdentifier;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBResourceIdentifier> {
-    typedef IDBResourceIdentifier Type;
-    static Type copy(const IDBResourceIdentifier&);
-};
-
-class IDBTransactionInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBTransactionInfo> {
-    typedef IDBTransactionInfo Type;
-    static Type copy(const IDBTransactionInfo&);
-};
-
-class IDBObjectStoreInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBObjectStoreInfo> {
-    typedef IDBObjectStoreInfo Type;
-    static Type copy(const IDBObjectStoreInfo&);
-};
-
-class IDBIndexInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBIndexInfo> {
-    typedef IDBIndexInfo Type;
-    static Type copy(const IDBIndexInfo&);
-};
-
-class IDBCursorInfo;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBCursorInfo> {
-    typedef IDBCursorInfo Type;
-    static Type copy(const IDBCursorInfo&);
-};
-
-class IDBValue;
-template<> struct WEBCORE_EXPORT CrossThreadCopierBase<false, false, IDBValue> {
-    typedef IDBValue Type;
-    static Type copy(const IDBValue&);
-};
-
-#endif
-
 template<typename T>
 struct CrossThreadCopier : public CrossThreadCopierBase<CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger<T>::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer<T>::value, T> {
 };
 
-template<typename T> struct AllowCrossThreadAccessWrapper {
-public:
-    explicit AllowCrossThreadAccessWrapper(T* value)
-        : m_value(value) { }
-    T* value() const { return m_value; }
-private:
-    T* m_value;
-};
-
-template<typename T> struct CrossThreadCopierBase<false, false, AllowCrossThreadAccessWrapper<T>> {
-    typedef T* Type;
-    static Type copy(const AllowCrossThreadAccessWrapper<T>& wrapper) { return wrapper.value(); }
-};
-
-template<typename T> AllowCrossThreadAccessWrapper<T> AllowCrossThreadAccess(T* value) 
-{
-    return AllowCrossThreadAccessWrapper<T>(value);
-}
-
-// FIXME: Move to a different header file. AllowAccessLater is for cross-thread access
-// that is not cross-thread (tasks posted to a queue guaranteed to run on the same thread).
-template<typename T> struct AllowAccessLaterWrapper {
-public:
-    explicit AllowAccessLaterWrapper(T* value)
-        : m_value(value) { }
-    T* value() const { return m_value; }
-private:
-    T* m_value;
-};
-
-template<typename T> struct CrossThreadCopierBase<false, false, AllowAccessLaterWrapper<T>> {
-    typedef T* Type;
-    static Type copy(const AllowAccessLaterWrapper<T>& wrapper) { return wrapper.value(); }
-};
-
-template<typename T> AllowAccessLaterWrapper<T> AllowAccessLater(T* value)
-{
-    return AllowAccessLaterWrapper<T>(value);
-}
-
-
 } // namespace WebCore

Modified: trunk/Source/WebKit2/ChangeLog (200248 => 200249)


--- trunk/Source/WebKit2/ChangeLog	2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebKit2/ChangeLog	2016-04-29 17:05:46 UTC (rev 200249)
@@ -1,3 +1,17 @@
+2016-04-29  Brady Eidson  <beid...@apple.com>
+
+        Add a default ".isolatedCopy()" specialization to CrossThreadCopier, and other small cleanup.
+        https://bugs.webkit.org/show_bug.cgi?id=157185
+
+        Reviewed by Anders Carlsson.
+
+        * Shared/WebCrossThreadCopier.cpp:
+        (WebCore::Vector<char>>::copy): reserveInitialCapacity() before creating the copy.
+        (WebCore::Vector<int64_t>>::copy): Ditto.
+        (WebCore::Vector<uint8_t>>::copy): Ditto.
+        (WebCore::Vector<Vector<IDBKeyData>>>::copy): Deleted dead code.
+        * Shared/WebCrossThreadCopier.h:
+
 2016-04-29  Commit Queue  <commit-qu...@webkit.org>
 
         Unreviewed, rolling out r200217.

Modified: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp (200248 => 200249)


--- trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp	2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp	2016-04-29 17:05:46 UTC (rev 200249)
@@ -36,6 +36,7 @@
 Vector<char> CrossThreadCopierBase<false, false, Vector<char>>::copy(const Vector<char>& vector)
 {
     Vector<char> result;
+    result.reserveInitialCapacity(vector.size());
     result.appendVector(vector);
     return result;
 }
@@ -43,6 +44,7 @@
 Vector<int64_t> CrossThreadCopierBase<false, false, Vector<int64_t>>::copy(const Vector<int64_t>& vector)
 {
     Vector<int64_t> result;
+    result.reserveInitialCapacity(vector.size());
     result.appendVector(vector);
     return result;
 }
@@ -50,23 +52,11 @@
 Vector<uint8_t> CrossThreadCopierBase<false, false, Vector<uint8_t>>::copy(const Vector<uint8_t>& vector)
 {
     Vector<uint8_t> result;
+    result.reserveInitialCapacity(vector.size());
     result.appendVector(vector);
     return result;
 }
 
-Vector<Vector<IDBKeyData>> CrossThreadCopierBase<false, false, Vector<Vector<IDBKeyData>>>::copy(const Vector<Vector<IDBKeyData>>& vector)
-{
-    Vector<Vector<IDBKeyData>> result;
-
-    for (const auto& keys : vector) {
-        result.append(Vector<IDBKeyData>());
-        for (const auto& key : keys)
-            result.last().append(WebCore::CrossThreadCopier<IDBKeyData>::copy(key));
-    }
-
-    return result;
-}
-
 ASCIILiteral CrossThreadCopierBase<false, false, ASCIILiteral>::copy(const ASCIILiteral& literal)
 {
     return literal;

Modified: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h (200248 => 200249)


--- trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h	2016-04-29 16:54:36 UTC (rev 200248)
+++ trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h	2016-04-29 17:05:46 UTC (rev 200249)
@@ -64,10 +64,6 @@
     static Vector<uint8_t> copy(const Vector<uint8_t>&);
 };
 
-template<> struct CrossThreadCopierBase<false, false, Vector<Vector<IDBKeyData>>> {
-    static Vector<Vector<IDBKeyData>> copy(const Vector<Vector<IDBKeyData>>&);
-};
-
 template<> struct CrossThreadCopierBase<false, false, WTF::ASCIILiteral> {
     static WTF::ASCIILiteral copy(const WTF::ASCIILiteral&);
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to