<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[200249] trunk/Source</title>
</head>
<body>
<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/200249">200249</a></dd>
<dt>Author</dt> <dd>beidson@apple.com</dd>
<dt>Date</dt> <dd>2016-04-29 10:05:46 -0700 (Fri, 29 Apr 2016)</dd>
</dl>
<h3>Log Message</h3>
<pre>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:</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformCrossThreadCopiercpp">trunk/Source/WebCore/platform/CrossThreadCopier.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformCrossThreadCopierh">trunk/Source/WebCore/platform/CrossThreadCopier.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCrossThreadCopiercpp">trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp</a></li>
<li><a href="#trunkSourceWebKit2SharedWebCrossThreadCopierh">trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (200248 => 200249)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2016-04-29 Brady Eidson <beidson@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.
+
</ins><span class="cx"> 2016-04-29 Simon Fraser <simon.fraser@apple.com>
</span><span class="cx">
</span><span class="cx"> Wheel Event Not Fired For `body,html { height:100% }`
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformCrossThreadCopiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/CrossThreadCopier.cpp (200248 => 200249)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -43,21 +43,6 @@
</span><span class="cx"> #include <wtf/Assertions.h>
</span><span class="cx"> #include <wtf/text/WTFString.h>
</span><span class="cx">
</span><del>-#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
-
</del><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> CrossThreadCopierBase<false, false, URL>::Type CrossThreadCopierBase<false, false, URL>::copy(const URL& url)
</span><span class="lines">@@ -110,85 +95,6 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-#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)
-
</del><span class="cx"> // Test CrossThreadCopier using COMPILE_ASSERT.
</span><span class="cx">
</span><span class="cx"> // Verify that ThreadSafeRefCounted objects get handled correctly.
</span><span class="lines">@@ -211,32 +117,25 @@
</span><span class="cx"> >::value),
</span><span class="cx"> RawPointerTest);
</span><span class="cx">
</span><ins>+// 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;
+};
</ins><span class="cx">
</span><del>-// Add a generic specialization which will let's us verify that no other template matches.
-template<typename T> struct CrossThreadCopierBase<false, false, T> {
</del><ins>+template<typename T> struct CrossThreadCopierBase<false, false, PassRefPtr<T>> {
</ins><span class="cx"> typedef int Type;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-// Verify that RefCounted objects only match our generic template which exposes Type as int.
</del><ins>+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.
</ins><span class="cx"> class CopierRefCountedTest : public RefCounted<CopierRefCountedTest> {
</span><span class="cx"> };
</span><span class="cx">
</span><del>-COMPILE_ASSERT((std::is_same<
- int,
- CrossThreadCopier<PassRefPtr<CopierRefCountedTest>>::Type
- >::value),
- PassRefPtrRefCountedTest);
</del><ins>+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");
</ins><span class="cx">
</span><del>-COMPILE_ASSERT((std::is_same<
- int,
- CrossThreadCopier<RefPtr<CopierRefCountedTest>>::Type
- >::value),
- RefPtrRefCountedTest);
-
-COMPILE_ASSERT((std::is_same<
- int,
- CrossThreadCopier<CopierRefCountedTest*>::Type
- >::value),
- RawPointerRefCountedTest);
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformCrossThreadCopierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/CrossThreadCopier.h (200248 => 200249)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -100,6 +100,14 @@
</span><span class="cx"> template<> struct CrossThreadCopierBase<false, false, IntSize> : public CrossThreadCopierPassThrough<IntSize> {
</span><span class="cx"> };
</span><span class="cx">
</span><ins>+// 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();
+ }
+};
+
</ins><span class="cx"> // Custom copy methods.
</span><span class="cx"> template<typename T> struct CrossThreadCopierBase<false, true, T> {
</span><span class="cx"> typedef typename CrossThreadCopierBaseHelper::RemovePointer<T>::Type RefCountedType;
</span><span class="lines">@@ -157,139 +165,8 @@
</span><span class="cx"> static Type copy(const Vector<String>&);
</span><span class="cx"> };
</span><span class="cx">
</span><del>-#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
-
</del><span class="cx"> template<typename T>
</span><span class="cx"> struct CrossThreadCopier : public CrossThreadCopierBase<CrossThreadCopierBaseHelper::IsEnumOrConvertibleToInteger<T>::value, CrossThreadCopierBaseHelper::IsThreadSafeRefCountedPointer<T>::value, T> {
</span><span class="cx"> };
</span><span class="cx">
</span><del>-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);
-}
-
-
</del><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (200248 => 200249)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -1,3 +1,17 @@
</span><ins>+2016-04-29 Brady Eidson <beidson@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:
+
</ins><span class="cx"> 2016-04-29 Commit Queue <commit-queue@webkit.org>
</span><span class="cx">
</span><span class="cx"> Unreviewed, rolling out r200217.
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCrossThreadCopiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.cpp (200248 => 200249)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -36,6 +36,7 @@
</span><span class="cx"> Vector<char> CrossThreadCopierBase<false, false, Vector<char>>::copy(const Vector<char>& vector)
</span><span class="cx"> {
</span><span class="cx"> Vector<char> result;
</span><ins>+ result.reserveInitialCapacity(vector.size());
</ins><span class="cx"> result.appendVector(vector);
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="lines">@@ -43,6 +44,7 @@
</span><span class="cx"> Vector<int64_t> CrossThreadCopierBase<false, false, Vector<int64_t>>::copy(const Vector<int64_t>& vector)
</span><span class="cx"> {
</span><span class="cx"> Vector<int64_t> result;
</span><ins>+ result.reserveInitialCapacity(vector.size());
</ins><span class="cx"> result.appendVector(vector);
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="lines">@@ -50,23 +52,11 @@
</span><span class="cx"> Vector<uint8_t> CrossThreadCopierBase<false, false, Vector<uint8_t>>::copy(const Vector<uint8_t>& vector)
</span><span class="cx"> {
</span><span class="cx"> Vector<uint8_t> result;
</span><ins>+ result.reserveInitialCapacity(vector.size());
</ins><span class="cx"> result.appendVector(vector);
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-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;
-}
-
</del><span class="cx"> ASCIILiteral CrossThreadCopierBase<false, false, ASCIILiteral>::copy(const ASCIILiteral& literal)
</span><span class="cx"> {
</span><span class="cx"> return literal;
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebCrossThreadCopierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebCrossThreadCopier.h (200248 => 200249)</h4>
<pre class="diff"><span>
<span class="info">--- 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)
</span><span class="lines">@@ -64,10 +64,6 @@
</span><span class="cx"> static Vector<uint8_t> copy(const Vector<uint8_t>&);
</span><span class="cx"> };
</span><span class="cx">
</span><del>-template<> struct CrossThreadCopierBase<false, false, Vector<Vector<IDBKeyData>>> {
- static Vector<Vector<IDBKeyData>> copy(const Vector<Vector<IDBKeyData>>&);
-};
-
</del><span class="cx"> template<> struct CrossThreadCopierBase<false, false, WTF::ASCIILiteral> {
</span><span class="cx"> static WTF::ASCIILiteral copy(const WTF::ASCIILiteral&);
</span><span class="cx"> };
</span></span></pre>
</div>
</div>
</body>
</html>