diff options
author | Marc Mutz <marc.mutz@qt.io> | 2022-04-05 08:39:19 +0200 |
---|---|---|
committer | Marc Mutz <marc.mutz@qt.io> | 2022-08-05 22:02:02 +0200 |
commit | f4b60a0850ea9f67338bfd22d0847f0f0db72255 (patch) | |
tree | 40107161c9f91e36210d9320e0cf95f990dcf6e4 | |
parent | 15422d191fb03eb9cafe68b24484d59c1270244c (diff) |
QMetaType: make all atomic operations explicit
In one case, optimize away an unnecessary extra load.
Pick-to: 6.4
Task-number: QTBUG-103834
Change-Id: Iabbf58a09627dd2fd7a40c713a878d74cb522d60
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp index 103b3190a2..71a0687113 100644 --- a/src/corelib/kernel/qmetatype.cpp +++ b/src/corelib/kernel/qmetatype.cpp @@ -104,8 +104,9 @@ struct QMetaTypeCustomRegistry #endif (ti->name); if (auto ti2 = aliases.value(name)) { - ti->typeId.storeRelaxed(ti2->typeId.loadRelaxed()); - return ti2->typeId; + const auto id = ti2->typeId.loadRelaxed(); + ti->typeId.storeRelaxed(id); + return id; } aliases[name] = ti; int size = registry.size(); @@ -2657,7 +2658,7 @@ static int qMetaTypeCustomType_unlocked(const char *typeName, int length) Q_ASSERT(!reg->lock.tryLockForWrite()); #endif if (auto ti = reg->aliases.value(QByteArray::fromRawData(typeName, length), nullptr)) { - return ti->typeId; + return ti->typeId.loadRelaxed(); } } return QMetaType::UnknownType; |