⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 201518 in webkit


Ignore:
Timestamp:
May 31, 2016, 12:33:22 PM (10 years ago)
Author:
beidson@apple.com
Message:

Make createCrossThreadTask() functions return on the stack instead of the heap.
https://bugs.webkit.org/show_bug.cgi?id=158215

Reviewed by Darin Adler.

Source/WebCore:

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

  • Modules/indexeddb/client/IDBConnectionProxy.h:
  • Modules/indexeddb/server/IDBServer.cpp:

(WebCore::IDBServer::IDBServer::postDatabaseTask):
(WebCore::IDBServer::IDBServer::postDatabaseTaskReply):
(WebCore::IDBServer::IDBServer::databaseRunLoop):

  • Modules/indexeddb/server/IDBServer.h:
  • Modules/indexeddb/server/UniqueIDBDatabase.cpp:

(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
(WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):

  • Modules/indexeddb/server/UniqueIDBDatabase.h:
  • dom/ScriptExecutionContext.h:

(WebCore::ScriptExecutionContext::postCrossThreadTask):

  • fileapi/ThreadableBlobRegistry.cpp:

(WebCore::threadableQueue):

Source/WebKit2:

  • DatabaseProcess/DatabaseProcess.cpp:

(WebKit::DatabaseProcess::postDatabaseTask):
(WebKit::DatabaseProcess::performNextDatabaseTask):
(WebKit::DatabaseProcess::fetchWebsiteData):

  • DatabaseProcess/DatabaseProcess.h:

Source/WTF:

  • WTF.xcodeproj/project.pbxproj:
  • wtf/CrossThreadCopier.cpp:
  • wtf/CrossThreadQueue.h: Added. A lightweight of MessageQueue that deals directly in objects instead of in std::unique_ptrs.

(WTF::CrossThreadQueue::isKilled):
(WTF::CrossThreadQueue<DataType>::append):
(WTF::CrossThreadQueue<DataType>::waitForMessage):
(WTF::CrossThreadQueue<DataType>::tryGetMessage):

  • wtf/CrossThreadTask.h:

(WTF::createCrossThreadTask):
(WTF::CrossThreadTask::CrossThreadTask): Deleted.

Location:
trunk/Source
Files:
1 added
15 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WTF/ChangeLog

    r201504 r201518  
     12016-05-31  Brady Eidson  <beidson@apple.com>
     2
     3        Make createCrossThreadTask() functions return on the stack instead of the heap.
     4        https://bugs.webkit.org/show_bug.cgi?id=158215
     5
     6        Reviewed by Darin Adler.
     7
     8        * WTF.xcodeproj/project.pbxproj:
     9
     10        * wtf/CrossThreadCopier.cpp:
     11
     12        * wtf/CrossThreadQueue.h: Added. A lightweight of MessageQueue that deals directly
     13          in objects instead of in std::unique_ptrs.
     14        (WTF::CrossThreadQueue::isKilled):
     15        (WTF::CrossThreadQueue<DataType>::append):
     16        (WTF::CrossThreadQueue<DataType>::waitForMessage):
     17        (WTF::CrossThreadQueue<DataType>::tryGetMessage):
     18
     19        * wtf/CrossThreadTask.h:
     20        (WTF::createCrossThreadTask):
     21        (WTF::CrossThreadTask::CrossThreadTask): Deleted.
     22
    1232016-05-30  Brady Eidson  <beidson@apple.com>
    224
  • trunk/Source/WTF/WTF.xcodeproj/project.pbxproj

    r201504 r201518  
    105105                515F794F1CFC9F4A00CCED93 /* CrossThreadCopier.h in Headers */ = {isa = PBXBuildFile; fileRef = 515F794C1CFC9F4A00CCED93 /* CrossThreadCopier.h */; };
    106106                515F79501CFC9F4A00CCED93 /* CrossThreadTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 515F794D1CFC9F4A00CCED93 /* CrossThreadTask.h */; };
     107                515F79561CFD3A6900CCED93 /* CrossThreadQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 515F79551CFD3A6900CCED93 /* CrossThreadQueue.h */; };
    107108                553071CA1C40427200384898 /* TinyLRUCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 553071C91C40427200384898 /* TinyLRUCache.h */; };
    108109                70A993FE1AD7151300FA615B /* SymbolRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 70A993FC1AD7151300FA615B /* SymbolRegistry.cpp */; };
     
    427428                515F794C1CFC9F4A00CCED93 /* CrossThreadCopier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadCopier.h; sourceTree = "<group>"; };
    428429                515F794D1CFC9F4A00CCED93 /* CrossThreadTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadTask.h; sourceTree = "<group>"; };
     430                515F79551CFD3A6900CCED93 /* CrossThreadQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CrossThreadQueue.h; sourceTree = "<group>"; };
    429431                553071C91C40427200384898 /* TinyLRUCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TinyLRUCache.h; sourceTree = "<group>"; };
    430432                5D247B6214689B8600E78B76 /* libWTF.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libWTF.a; sourceTree = BUILT_PRODUCTS_DIR; };
     
    806808                                515F794B1CFC9F4A00CCED93 /* CrossThreadCopier.cpp */,
    807809                                515F794C1CFC9F4A00CCED93 /* CrossThreadCopier.h */,
     810                                515F79551CFD3A6900CCED93 /* CrossThreadQueue.h */,
    808811                                515F794D1CFC9F4A00CCED93 /* CrossThreadTask.h */,
    809812                                A8A47273151A825A004123FF /* CryptographicallyRandomNumber.cpp */,
     
    11831186                                A8A4738A151A825B004123FF /* Bitmap.h in Headers */,
    11841187                                A8A4738C151A825B004123FF /* BitVector.h in Headers */,
     1188                                515F79561CFD3A6900CCED93 /* CrossThreadQueue.h in Headers */,
    11851189                                1A944F471C3D8814005BD28C /* BlockPtr.h in Headers */,
    11861190                                93DDE9321CDC052D00FD3491 /* dyldSPI.h in Headers */,
  • trunk/Source/WTF/wtf/CrossThreadCopier.cpp

    r201504 r201518  
    3131
    3232#include "config.h"
    33 #include "CrossThreadCopier.h"
     33#include <wtf/CrossThreadCopier.h>
     34
     35#include <wtf/CrossThreadTask.h>
    3436
    3537namespace WTF {
     
    7981
    8082} // namespace WTF
     83
  • trunk/Source/WTF/wtf/CrossThreadTask.h

    r201504 r201518  
    2828#include <wtf/CrossThreadCopier.h>
    2929#include <wtf/NoncopyableFunction.h>
     30#include <wtf/StdLibExtras.h>
    3031
    3132namespace WTF {
    3233
    3334class CrossThreadTask {
    34     WTF_MAKE_NONCOPYABLE(CrossThreadTask);
    3535public:
     36    CrossThreadTask() = default;
     37
    3638    CrossThreadTask(NoncopyableFunction<void ()>&& taskFunction)
    3739        : m_taskFunction(WTFMove(taskFunction))
     
    4648
    4749protected:
    48     CrossThreadTask() { }
    49 
    5050    NoncopyableFunction<void ()> m_taskFunction;
    5151};
     
    7474
    7575template<typename T>
    76 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     76CrossThreadTask createCrossThreadTask(
    7777    T& callee,
    7878    void (T::*method)())
    7979{
    80     return std::make_unique<CrossThreadTaskImpl<T>>(&callee, method);
     80    return CrossThreadTaskImpl<T>(&callee, method);
    8181}
    8282
    8383template<typename T, typename P1, typename MP1>
    84 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     84CrossThreadTask createCrossThreadTask(
    8585    T& callee,
    8686    void (T::*method)(MP1),
    8787    const P1& parameter1)
    8888{
    89     return std::make_unique<CrossThreadTaskImpl<T, MP1>>(
     89    return CrossThreadTaskImpl<T, MP1>(
    9090        &callee,
    9191        method,
     
    9494
    9595template<typename T, typename P1, typename MP1, typename P2, typename MP2>
    96 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     96CrossThreadTask createCrossThreadTask(
    9797    T& callee,
    9898    void (T::*method)(MP1, MP2),
     
    100100    const P2& parameter2)
    101101{
    102     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2>>(
     102    return CrossThreadTaskImpl<T, MP1, MP2>(
    103103        &callee,
    104104        method,
     
    109109
    110110template<typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
    111 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     111CrossThreadTask createCrossThreadTask(
    112112    T& callee,
    113113    void (T::*method)(MP1, MP2, MP3),
     
    116116    const P3& parameter3)
    117117{
    118     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2, MP3>>(
     118    return CrossThreadTaskImpl<T, MP1, MP2, MP3>(
    119119        &callee,
    120120        method,
     
    125125
    126126template<typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3>
    127 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     127CrossThreadTask createCrossThreadTask(
    128128    void (*method)(MP1, MP2, MP3),
    129129    const P1& parameter1,
     
    131131    const P3& parameter3)
    132132{
    133     return std::make_unique<CrossThreadTaskStaticImpl<MP1, MP2, MP3>>(
     133    return CrossThreadTaskStaticImpl<MP1, MP2, MP3>(
    134134        method,
    135135        WTF::CrossThreadCopier<P1>::copy(parameter1),
     
    139139
    140140template<typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4>
    141 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     141CrossThreadTask createCrossThreadTask(
    142142    T& callee,
    143143    void (T::*method)(MP1, MP2, MP3, MP4),
     
    147147    const P4& parameter4)
    148148{
    149     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4>>(
     149    return CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4>(
    150150        &callee,
    151151        method,
     
    157157
    158158template<typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5>
    159 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     159CrossThreadTask createCrossThreadTask(
    160160    T& callee,
    161161    void (T::*method)(MP1, MP2, MP3, MP4, MP5),
     
    166166    const P5& parameter5)
    167167{
    168     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5>>(
     168    return CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5>(
    169169        &callee,
    170170        method,
     
    177177
    178178template<typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6>
    179 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     179CrossThreadTask createCrossThreadTask(
    180180    T& callee,
    181181    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6),
     
    187187    const P6& parameter6)
    188188{
    189     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5, MP6>>(
     189    return CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5, MP6>(
    190190        &callee,
    191191        method,
     
    199199
    200200template<typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6, typename P7, typename MP7>
    201 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     201CrossThreadTask createCrossThreadTask(
    202202    T& callee,
    203203    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6, MP7),
     
    210210    const P7& parameter7)
    211211{
    212     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5, MP6, MP7>>(
     212    return CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5, MP6, MP7>(
    213213        &callee,
    214214        method,
     
    223223
    224224template<typename T, typename P1, typename MP1, typename P2, typename MP2, typename P3, typename MP3, typename P4, typename MP4, typename P5, typename MP5, typename P6, typename MP6, typename P7, typename MP7, typename P8, typename MP8>
    225 std::unique_ptr<CrossThreadTask> createCrossThreadTask(
     225CrossThreadTask createCrossThreadTask(
    226226    T& callee,
    227227    void (T::*method)(MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8),
     
    235235    const P8& parameter8)
    236236{
    237     return std::make_unique<CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8>>(
     237    return CrossThreadTaskImpl<T, MP1, MP2, MP3, MP4, MP5, MP6, MP7, MP8>(
    238238        &callee,
    239239        method,
  • trunk/Source/WebCore/ChangeLog

    r201516 r201518  
     12016-05-31  Brady Eidson  <beidson@apple.com>
     2
     3        Make createCrossThreadTask() functions return on the stack instead of the heap.
     4        https://bugs.webkit.org/show_bug.cgi?id=158215
     5
     6        Reviewed by Darin Adler.
     7
     8        No new tests (Refactor, no change in behavior).
     9
     10        * Modules/indexeddb/client/IDBConnectionProxy.h:
     11       
     12        * Modules/indexeddb/server/IDBServer.cpp:
     13        (WebCore::IDBServer::IDBServer::postDatabaseTask):
     14        (WebCore::IDBServer::IDBServer::postDatabaseTaskReply):
     15        (WebCore::IDBServer::IDBServer::databaseRunLoop):
     16        * Modules/indexeddb/server/IDBServer.h:
     17       
     18        * Modules/indexeddb/server/UniqueIDBDatabase.cpp:
     19        (WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTask):
     20        (WebCore::IDBServer::UniqueIDBDatabase::postDatabaseTaskReply):
     21        * Modules/indexeddb/server/UniqueIDBDatabase.h:
     22       
     23        * dom/ScriptExecutionContext.h:
     24        (WebCore::ScriptExecutionContext::postCrossThreadTask):
     25       
     26        * fileapi/ThreadableBlobRegistry.cpp:
     27        (WebCore::threadableQueue):
     28
    1292016-05-31  Dave Hyatt  <hyatt@apple.com>
    230
  • trunk/Source/WebCore/Modules/indexeddb/client/IDBConnectionProxy.h

    r201504 r201518  
    3232#include "TransactionOperation.h"
    3333#include <functional>
     34#include <wtf/CrossThreadQueue.h>
    3435#include <wtf/CrossThreadTask.h>
    3536#include <wtf/HashMap.h>
     
    158159    Lock m_transactionOperationLock;
    159160
    160     MessageQueue<CrossThreadTask> m_mainThreadQueue;
     161    CrossThreadQueue<CrossThreadTask> m_mainThreadQueue;
    161162    Lock m_mainThreadTaskLock;
    162163    RefPtr<IDBConnectionToServer> m_mainThreadProtector;
  • trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.cpp

    r201504 r201518  
    432432}
    433433
    434 void IDBServer::postDatabaseTask(std::unique_ptr<CrossThreadTask>&& task)
     434void IDBServer::postDatabaseTask(CrossThreadTask&& task)
    435435{
    436436    ASSERT(isMainThread());
     
    438438}
    439439
    440 void IDBServer::postDatabaseTaskReply(std::unique_ptr<CrossThreadTask>&& task)
     440void IDBServer::postDatabaseTaskReply(CrossThreadTask&& task)
    441441{
    442442    ASSERT(!isMainThread());
     
    468468    }
    469469
    470     while (auto task = m_databaseQueue.waitForMessage())
    471         task->performTask();
     470    while (!m_databaseQueue.isKilled())
     471        m_databaseQueue.waitForMessage().performTask();
    472472}
    473473
  • trunk/Source/WebCore/Modules/indexeddb/server/IDBServer.h

    r201504 r201518  
    3232#include "UniqueIDBDatabase.h"
    3333#include "UniqueIDBDatabaseConnection.h"
     34#include <wtf/CrossThreadQueue.h>
    3435#include <wtf/CrossThreadTask.h>
    3536#include <wtf/HashMap.h>
     
    8586    WEBCORE_EXPORT void getAllDatabaseNames(uint64_t serverConnectionIdentifier, const SecurityOriginData& mainFrameOrigin, const SecurityOriginData& openingOrigin, uint64_t callbackID);
    8687
    87     void postDatabaseTask(std::unique_ptr<CrossThreadTask>&&);
    88     void postDatabaseTaskReply(std::unique_ptr<CrossThreadTask>&&);
     88    void postDatabaseTask(CrossThreadTask&&);
     89    void postDatabaseTaskReply(CrossThreadTask&&);
    8990
    9091    void registerDatabaseConnection(UniqueIDBDatabaseConnection&);
     
    125126    bool m_mainThreadReplyScheduled { false };
    126127
    127     MessageQueue<CrossThreadTask> m_databaseQueue;
    128     MessageQueue<CrossThreadTask> m_databaseReplyQueue;
     128    CrossThreadQueue<CrossThreadTask> m_databaseQueue;
     129    CrossThreadQueue<CrossThreadTask> m_databaseReplyQueue;
    129130
    130131    HashMap<uint64_t, UniqueIDBDatabaseConnection*> m_databaseConnections;
  • trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.cpp

    r201461 r201518  
    15061506}
    15071507
    1508 void UniqueIDBDatabase::postDatabaseTask(std::unique_ptr<CrossThreadTask>&& task)
     1508void UniqueIDBDatabase::postDatabaseTask(CrossThreadTask&& task)
    15091509{
    15101510    ASSERT(isMainThread());
     
    15151515}
    15161516
    1517 void UniqueIDBDatabase::postDatabaseTaskReply(std::unique_ptr<CrossThreadTask>&& task)
     1517void UniqueIDBDatabase::postDatabaseTaskReply(CrossThreadTask&& task)
    15181518{
    15191519    ASSERT(!isMainThread());
  • trunk/Source/WebCore/Modules/indexeddb/server/UniqueIDBDatabase.h

    r201504 r201518  
    3838#include "UniqueIDBDatabaseConnection.h"
    3939#include "UniqueIDBDatabaseTransaction.h"
     40#include <wtf/CrossThreadQueue.h>
    4041#include <wtf/CrossThreadTask.h>
    4142#include <wtf/Deque.h>
     
    196197    bool prepareToFinishTransaction(UniqueIDBDatabaseTransaction&);
    197198
    198     void postDatabaseTask(std::unique_ptr<CrossThreadTask>&&);
    199     void postDatabaseTaskReply(std::unique_ptr<CrossThreadTask>&&);
     199    void postDatabaseTask(CrossThreadTask&&);
     200    void postDatabaseTaskReply(CrossThreadTask&&);
    200201    void executeNextDatabaseTask();
    201202    void executeNextDatabaseTaskReply();
     
    243244    bool m_deleteBackingStoreInProgress { false };
    244245
    245     MessageQueue<CrossThreadTask> m_databaseQueue;
    246     MessageQueue<CrossThreadTask> m_databaseReplyQueue;
     246    CrossThreadQueue<CrossThreadTask> m_databaseQueue;
     247    CrossThreadQueue<CrossThreadTask> m_databaseReplyQueue;
    247248    std::atomic<uint64_t> m_queuedTaskCount { 0 };
    248249
  • trunk/Source/WebCore/dom/ScriptExecutionContext.h

    r201504 r201518  
    173173    void postCrossThreadTask(Arguments&&... arguments)
    174174    {
    175         auto crossThreadTask = createCrossThreadTask(arguments...);
    176         auto* rawTask = crossThreadTask.release();
    177         postTask([=](ScriptExecutionContext&) {
    178             std::unique_ptr<CrossThreadTask> task(rawTask);
    179             task->performTask();
     175        postTask([crossThreadTask = createCrossThreadTask(arguments...)](ScriptExecutionContext&) mutable {
     176            crossThreadTask.performTask();
    180177        });
    181178    }
  • trunk/Source/WebCore/fileapi/ThreadableBlobRegistry.cpp

    r201504 r201518  
    3838#include "SecurityOrigin.h"
    3939#include <mutex>
     40#include <wtf/CrossThreadQueue.h>
    4041#include <wtf/CrossThreadTask.h>
    4142#include <wtf/HashMap.h>
     
    101102}
    102103
    103 static MessageQueue<CrossThreadTask>& threadableQueue()
     104static CrossThreadQueue<CrossThreadTask>& threadableQueue()
    104105{
    105106    static std::once_flag onceFlag;
    106     static MessageQueue<CrossThreadTask>* queue;
     107    static CrossThreadQueue<CrossThreadTask>* queue;
    107108    std::call_once(onceFlag, [] {
    108         queue = new MessageQueue<CrossThreadTask>;
     109        queue = new CrossThreadQueue<CrossThreadTask>;
    109110    });
    110111
  • trunk/Source/WebKit2/ChangeLog

    r201507 r201518  
     12016-05-31  Brady Eidson  <beidson@apple.com>
     2
     3        Make createCrossThreadTask() functions return on the stack instead of the heap.
     4        https://bugs.webkit.org/show_bug.cgi?id=158215
     5
     6        Reviewed by Darin Adler.
     7
     8        * DatabaseProcess/DatabaseProcess.cpp:
     9        (WebKit::DatabaseProcess::postDatabaseTask):
     10        (WebKit::DatabaseProcess::performNextDatabaseTask):
     11        (WebKit::DatabaseProcess::fetchWebsiteData):
     12        * DatabaseProcess/DatabaseProcess.h:
     13
    1142016-05-31  Carlos Garcia Campos  <cgarcia@igalia.com>
    215
  • trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp

    r201506 r201518  
    144144#endif
    145145
    146 void DatabaseProcess::postDatabaseTask(std::unique_ptr<CrossThreadTask> task)
     146void DatabaseProcess::postDatabaseTask(CrossThreadTask&& task)
    147147{
    148148    ASSERT(RunLoop::isMain());
     
    161161    ASSERT(!RunLoop::isMain());
    162162
    163     std::unique_ptr<CrossThreadTask> task;
     163    CrossThreadTask task;
    164164    {
    165165        LockHolder locker(m_databaseTaskMutex);
     
    168168    }
    169169
    170     task->performTask();
     170    task.performTask();
    171171}
    172172
     
    224224    if (websiteDataTypes.contains(WebsiteDataType::IndexedDBDatabases)) {
    225225        // FIXME: Pick the right database store based on the session ID.
    226         postDatabaseTask(std::make_unique<CrossThreadTask>([callbackAggregator, websiteDataTypes, this] {
     226        postDatabaseTask(CrossThreadTask([callbackAggregator, websiteDataTypes, this] {
    227227
    228228            Vector<RefPtr<SecurityOrigin>> securityOrigins = indexedDatabaseOrigins();
  • trunk/Source/WebKit2/DatabaseProcess/DatabaseProcess.h

    r201504 r201518  
    6969    WorkQueue& queue() { return m_queue.get(); }
    7070
    71     void postDatabaseTask(std::unique_ptr<CrossThreadTask>);
     71    void postDatabaseTask(CrossThreadTask&&);
    7272
    7373#if ENABLE(INDEXED_DATABASE)
     
    127127    HashMap<uint64_t, std::function<void (const SandboxExtension::HandleArray&)>> m_sandboxExtensionForBlobsCompletionHandlers;
    128128
    129     Deque<std::unique_ptr<CrossThreadTask>> m_databaseTasks;
     129    Deque<CrossThreadTask> m_databaseTasks;
    130130    Lock m_databaseTaskMutex;
    131131};
Note: See TracChangeset for help on using the changeset viewer.