diff options
| author | Thiago Macieira <thiago.macieira@intel.com> | 2023-04-27 20:47:53 -0700 |
|---|---|---|
| committer | Thiago Macieira <thiago.macieira@intel.com> | 2023-05-11 12:31:55 -0700 |
| commit | 0c0778fb36641efe73caa8776ee0a2ffdc98f4ea (patch) | |
| tree | 6a615456fb854b86dee9bc3c2085e3bac3d17797 /src/corelib/thread/qreadwritelock.cpp | |
| parent | 859ef056331a94fb0b1e4b41f596ff78539dfd8b (diff) | |
QReadWriteLock: remove the private function from the symbol table
Just move it to the private class. This also allows this function to get
inlined in QWaitCondition::wait().
Pick-to: 6.5
Change-Id: I6f518d59e63249ddbf43fffd1759fc99c28c7ca8
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src/corelib/thread/qreadwritelock.cpp')
| -rw-r--r-- | src/corelib/thread/qreadwritelock.cpp | 28 |
1 files changed, 1 insertions, 27 deletions
diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp index 32302b1e174..4aaf076d9fc 100644 --- a/src/corelib/thread/qreadwritelock.cpp +++ b/src/corelib/thread/qreadwritelock.cpp @@ -6,9 +6,7 @@ #include "qplatformdefs.h" #include "qreadwritelock.h" -#include "qmutex.h" #include "qthread.h" -#include "qwaitcondition.h" #include "qreadwritelock_p.h" #include "qelapsedtimer.h" #include "private/qfreelist_p.h" @@ -30,15 +28,11 @@ QT_BEGIN_NAMESPACE * - In any other case, d_ptr points to an actual QReadWriteLockPrivate. */ +using namespace QReadWriteLockStates; namespace { using ms = std::chrono::milliseconds; -enum { - StateMask = 0x3, - StateLockedForRead = 0x1, - StateLockedForWrite = 0x2, -}; const auto dummyLockedForRead = reinterpret_cast<QReadWriteLockPrivate *>(quintptr(StateLockedForRead)); const auto dummyLockedForWrite = reinterpret_cast<QReadWriteLockPrivate *>(quintptr(StateLockedForWrite)); inline bool isUncontendedLocked(const QReadWriteLockPrivate *d) @@ -411,26 +405,6 @@ void QReadWriteLock::unlock() } } -/*! \internal Helper for QWaitCondition::wait */ -QReadWriteLock::StateForWaitCondition QReadWriteLock::stateForWaitCondition() const -{ - QReadWriteLockPrivate *d = d_ptr.loadAcquire(); - switch (quintptr(d) & StateMask) { - case StateLockedForRead: return LockedForRead; - case StateLockedForWrite: return LockedForWrite; - } - - if (!d) - return Unlocked; - const auto lock = qt_scoped_lock(d->mutex); - if (d->writerCount > 1) - return RecursivelyLocked; - else if (d->writerCount == 1) - return LockedForWrite; - return LockedForRead; - -} - bool QReadWriteLockPrivate::lockForRead(std::unique_lock<QtPrivate::mutex> &lock, int timeout) { Q_ASSERT(!mutex.try_lock()); // mutex must be locked when entering this function |
