Skip to content
This repository was archived by the owner on Jul 9, 2025. It is now read-only.

Commit 1ea666e

Browse files
committed
Bug 1313185 - Move main StartOp logic to TransactionInfo to reduce indirect variable access; r=asuth
This simplifies ConnectionPool code by relocating logic closer to the data it operates on. Differential Revision: https://phabricator.services.mozilla.com/D235745
1 parent 1114a53 commit 1ea666e

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

dom/indexedDB/ActorsParent.cpp

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1718,6 +1718,8 @@ class ConnectionPool::TransactionInfo final {
17181718

17191719
void RemoveBlockingTransactions();
17201720

1721+
void StartOp(nsCOMPtr<nsIRunnable> aRunnable);
1722+
17211723
private:
17221724
~TransactionInfo();
17231725

@@ -7973,21 +7975,8 @@ void ConnectionPool::StartOp(uint64_t aTransactionId,
79737975

79747976
auto* const transactionInfo = mTransactions.Get(aTransactionId);
79757977
MOZ_ASSERT(transactionInfo);
7976-
MOZ_ASSERT(!transactionInfo->mFinished);
79777978

7978-
if (transactionInfo->mRunning) {
7979-
DatabaseInfo& dbInfo = transactionInfo->mDatabaseInfo;
7980-
MOZ_ASSERT(dbInfo.mEventTarget);
7981-
MOZ_ASSERT(!dbInfo.mClosing);
7982-
MOZ_ASSERT_IF(
7983-
transactionInfo->mIsWriteTransaction,
7984-
dbInfo.mRunningWriteTransaction &&
7985-
dbInfo.mRunningWriteTransaction.refEquals(*transactionInfo));
7986-
7987-
MOZ_ALWAYS_SUCCEEDS(dbInfo.Dispatch(aRunnable.forget()));
7988-
} else {
7989-
transactionInfo->mQueuedRunnables.AppendElement(std::move(aRunnable));
7990-
}
7979+
transactionInfo->StartOp(std::move(aRunnable));
79917980
}
79927981

79937982
void ConnectionPool::Finish(uint64_t aTransactionId,
@@ -8848,6 +8837,23 @@ void ConnectionPool::TransactionInfo::RemoveBlockingTransactions() {
88488837
mBlockingOrdered.Clear();
88498838
}
88508839

8840+
void ConnectionPool::TransactionInfo::StartOp(nsCOMPtr<nsIRunnable> aRunnable) {
8841+
AssertIsOnBackgroundThread();
8842+
MOZ_ASSERT(!mFinished);
8843+
8844+
if (mRunning) {
8845+
MOZ_ASSERT(mDatabaseInfo.mEventTarget);
8846+
MOZ_ASSERT(!mDatabaseInfo.mClosing);
8847+
MOZ_ASSERT_IF(mIsWriteTransaction,
8848+
mDatabaseInfo.mRunningWriteTransaction &&
8849+
mDatabaseInfo.mRunningWriteTransaction.refEquals(*this));
8850+
8851+
MOZ_ALWAYS_SUCCEEDS(mDatabaseInfo.Dispatch(aRunnable.forget()));
8852+
} else {
8853+
mQueuedRunnables.AppendElement(std::move(aRunnable));
8854+
}
8855+
}
8856+
88518857
void ConnectionPool::TransactionInfo::MaybeUnblock(
88528858
TransactionInfo& aTransactionInfo) {
88538859
AssertIsOnBackgroundThread();

0 commit comments

Comments
 (0)