diff options
| author | Marc Mutz <marc.mutz@qt.io> | 2022-05-17 17:19:54 +0200 |
|---|---|---|
| committer | Marc Mutz <marc.mutz@qt.io> | 2022-05-18 06:37:46 +0200 |
| commit | adb4a3beb7a0e02d4e4f96dadaa6587298c4d1f5 (patch) | |
| tree | 247ff4e4f8066bb8a9da7bfe4ed1b6de961d19d6 /src/corelib/kernel/qobject.cpp | |
| parent | 5dc724d98dec8b4dfaa04132cac227d1909ca825 (diff) | |
Optimize atomics in QObject::moveToThread() [1/2]: relax a pointer load
We don't need an acquire fence for checking a pointer for nullness,
and we're not dereferencing the pointer later, so use a relaxed load
there.
Pick-to: 6.3
Change-Id: Id84e6fc50100f1bf6a4e33f89424f8b1cbb250cd
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
Diffstat (limited to 'src/corelib/kernel/qobject.cpp')
| -rw-r--r-- | src/corelib/kernel/qobject.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp index e15dbde52e3..6dfa7c3e674 100644 --- a/src/corelib/kernel/qobject.cpp +++ b/src/corelib/kernel/qobject.cpp @@ -1818,7 +1818,7 @@ void QObject::moveToThread(QThread *targetThread) QThreadData *currentData = QThreadData::current(); QThreadData *targetData = targetThread ? QThreadData::get2(targetThread) : nullptr; QThreadData *thisThreadData = d->threadData.loadAcquire(); - if (!thisThreadData->thread.loadAcquire() && currentData == targetData) { + if (!thisThreadData->thread.loadRelaxed() && currentData == targetData) { // one exception to the rule: we allow moving objects with no thread affinity to the current thread currentData = d->threadData; } else if (thisThreadData != currentData) { |
