Avoid double-lookup in QLibraryStore::findOrCreate()
The code is in a critical section, so don't waste time traversing the QMap twice. Now that two previous commits have re-arranged the code such that lookup and insertion are symmetric, we can combine them into a single lookup using operator[]. Pick-to: 6.6 6.5 Change-Id: I4a10cece65b8c35d05a9b80967bf15d2e15bd73f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> (cherry picked from commit 7192b1184190982b6422196121821838d9fcbba6) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
39e9b6b24c
commit
25649bcd3b
@ -414,18 +414,15 @@ inline QLibraryPrivate *QLibraryStore::findOrCreate(const QString &fileName, con
|
|||||||
|
|
||||||
QString mapName = version.isEmpty() ? fileName : fileName + u'\0' + version;
|
QString mapName = version.isEmpty() ? fileName : fileName + u'\0' + version;
|
||||||
|
|
||||||
// check if this library is already loaded
|
QLibraryPrivate *&lib = data->libraryMap[std::move(mapName)];
|
||||||
QLibraryPrivate *lib = data->libraryMap.value(mapName);
|
|
||||||
if (lib) {
|
if (lib) {
|
||||||
|
// already loaded
|
||||||
lib->libraryRefCount.ref();
|
lib->libraryRefCount.ref();
|
||||||
lib->mergeLoadHints(loadHints);
|
lib->mergeLoadHints(loadHints);
|
||||||
} else {
|
} else {
|
||||||
lib = lazyNewLib();
|
lib = lazyNewLib();
|
||||||
}
|
}
|
||||||
|
|
||||||
// track this library
|
|
||||||
data->libraryMap.insert(mapName, lib);
|
|
||||||
|
|
||||||
return lib;
|
return lib;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user