Title: [253352] trunk/Source/WebCore
Revision
253352
Author
[email protected]
Date
2019-12-10 15:28:18 -0800 (Tue, 10 Dec 2019)

Log Message

IndexedDB: remove timer for completed operation in IDBTransaction
https://bugs.webkit.org/show_bug.cgi?id=205043

Reviewed by Brady Eidson.

Using a zero-delay Timer is slower than executing task immediately, and there is no specific reason to use a
Timer here.

Covered by existing tests.

* Modules/indexeddb/IDBTransaction.cpp:
(WebCore::IDBTransaction::IDBTransaction):
(WebCore::IDBTransaction::operationCompletedOnServer):
(WebCore::IDBTransaction::handleOperationsCompletedOnServer):
(WebCore::IDBTransaction::finishedDispatchEventForRequest):
(WebCore::IDBTransaction::scheduleCompletedOperationTimer): Deleted.
(WebCore::IDBTransaction::completedOperationTimerFired): Deleted.
* Modules/indexeddb/IDBTransaction.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (253351 => 253352)


--- trunk/Source/WebCore/ChangeLog	2019-12-10 23:21:41 UTC (rev 253351)
+++ trunk/Source/WebCore/ChangeLog	2019-12-10 23:28:18 UTC (rev 253352)
@@ -1,3 +1,24 @@
+2019-12-10  Sihui Liu  <[email protected]>
+
+        IndexedDB: remove timer for completed operation in IDBTransaction
+        https://bugs.webkit.org/show_bug.cgi?id=205043
+
+        Reviewed by Brady Eidson.
+
+        Using a zero-delay Timer is slower than executing task immediately, and there is no specific reason to use a 
+        Timer here.
+
+        Covered by existing tests.
+
+        * Modules/indexeddb/IDBTransaction.cpp:
+        (WebCore::IDBTransaction::IDBTransaction):
+        (WebCore::IDBTransaction::operationCompletedOnServer):
+        (WebCore::IDBTransaction::handleOperationsCompletedOnServer):
+        (WebCore::IDBTransaction::finishedDispatchEventForRequest):
+        (WebCore::IDBTransaction::scheduleCompletedOperationTimer): Deleted.
+        (WebCore::IDBTransaction::completedOperationTimerFired): Deleted.
+        * Modules/indexeddb/IDBTransaction.h:
+
 2019-12-10  Per Arne Vollan  <[email protected]>
 
         [iOS] Deny mach lookup access to network extension services in the WebContent sandbox

Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp (253351 => 253352)


--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp	2019-12-10 23:21:41 UTC (rev 253351)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp	2019-12-10 23:28:18 UTC (rev 253352)
@@ -79,7 +79,6 @@
     , m_database(database)
     , m_info(info)
     , m_pendingOperationTimer(*this, &IDBTransaction::pendingOperationTimerFired)
-    , m_completedOperationTimer(*this, &IDBTransaction::completedOperationTimerFired)
     , m_openDBRequest(request)
     , m_currentlyCompletingRequest(request)
 
@@ -447,30 +446,18 @@
     m_completedOnServerQueue.append({ &operation, data });
 
     if (!m_currentlyCompletingRequest)
-        scheduleCompletedOperationTimer();
+        handleOperationsCompletedOnServer();
 }
 
-void IDBTransaction::scheduleCompletedOperationTimer()
+void IDBTransaction::handleOperationsCompletedOnServer()
 {
-    ASSERT(canCurrentThreadAccessThreadLocalData(m_database->originThread()));
-
-    if (!m_completedOperationTimer.isActive())
-        m_completedOperationTimer.startOneShot(0_s);
-}
-
-void IDBTransaction::completedOperationTimerFired()
-{
     LOG(IndexedDB, "IDBTransaction::completedOperationTimerFired (%p)", this);
     ASSERT(canCurrentThreadAccessThreadLocalData(m_database->originThread()));
 
-    if (m_completedOnServerQueue.isEmpty() || m_currentlyCompletingRequest)
-        return;
-
-    auto iterator = m_completedOnServerQueue.takeFirst();
-    iterator.first->doComplete(iterator.second);
-
-    if (!m_completedOnServerQueue.isEmpty() && !m_currentlyCompletingRequest)
-        scheduleCompletedOperationTimer();
+    while (!m_completedOnServerQueue.isEmpty() && !m_currentlyCompletingRequest) {
+        auto iterator = m_completedOnServerQueue.takeFirst();
+        iterator.first->doComplete(iterator.second);
+    }
 }
 
 void IDBTransaction::completeNoncursorRequest(IDBRequest& request, const IDBResultData& result)
@@ -499,7 +486,7 @@
     ASSERT_UNUSED(request, !m_currentlyCompletingRequest || m_currentlyCompletingRequest == &request);
 
     m_currentlyCompletingRequest = nullptr;
-    scheduleCompletedOperationTimer();
+    handleOperationsCompletedOnServer();
 }
 
 void IDBTransaction::commit()

Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h (253351 => 253352)


--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h	2019-12-10 23:21:41 UTC (rev 253351)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h	2019-12-10 23:28:18 UTC (rev 253352)
@@ -167,7 +167,7 @@
 
     void scheduleOperation(Ref<IDBClient::TransactionOperation>&&);
     void pendingOperationTimerFired();
-    void completedOperationTimerFired();
+    void handleOperationsCompletedOnServer();
 
     void fireOnComplete();
     void fireOnAbort();
@@ -229,7 +229,6 @@
     void completeCursorRequest(IDBRequest&, const IDBResultData&);
 
     void trySchedulePendingOperationTimer();
-    void scheduleCompletedOperationTimer();
 
     Ref<IDBDatabase> m_database;
     IDBTransactionInfo m_info;
@@ -241,8 +240,6 @@
     RefPtr<DOMException> m_domError;
 
     Timer m_pendingOperationTimer;
-    Timer m_completedOperationTimer;
-    std::unique_ptr<Timer> m_activationTimer;
 
     RefPtr<IDBOpenDBRequest> m_openDBRequest;
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to