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