aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/webassembly/webassemblyemsdk.cpp
diff options
context:
space:
mode:
authorAlessandro Portale <[email protected]>2023-05-17 20:09:43 +0200
committerAlessandro Portale <[email protected]>2023-05-19 14:03:34 +0000
commitb1b9f54de734d7621c3c62b44aa55d713577583c (patch)
tree4ccdb2aec4d869c10295dad6a925de556a44f1e9 /src/plugins/webassembly/webassemblyemsdk.cpp
parent22af1a02550fe6c0c9c807c50227ba71ab9587aa (diff)
WebAssembly: Make caching code less cryptic
Diffstat (limited to 'src/plugins/webassembly/webassemblyemsdk.cpp')
-rw-r--r--src/plugins/webassembly/webassemblyemsdk.cpp31
1 files changed, 19 insertions, 12 deletions
diff --git a/src/plugins/webassembly/webassemblyemsdk.cpp b/src/plugins/webassembly/webassemblyemsdk.cpp
index 507c2949654..ad12f12e62d 100644
--- a/src/plugins/webassembly/webassemblyemsdk.cpp
+++ b/src/plugins/webassembly/webassemblyemsdk.cpp
@@ -16,16 +16,24 @@ using namespace Utils;
namespace WebAssembly::Internal::WebAssemblyEmSdk {
-using EmSdkEnvCache = QCache<QString, QString>;
-Q_GLOBAL_STATIC_WITH_ARGS(EmSdkEnvCache, emSdkEnvCache, (10))
-using EmSdkVersionCache = QCache<QString, QVersionNumber>;
-Q_GLOBAL_STATIC_WITH_ARGS(EmSdkVersionCache, emSdkVersionCache, (10))
+using EmSdkEnvCache = QCache<FilePath, QString>;
+static EmSdkEnvCache *emSdkEnvCache()
+{
+ static EmSdkEnvCache cache(10);
+ return &cache;
+}
+
+using EmSdkVersionCache = QCache<FilePath, QVersionNumber>;
+static EmSdkVersionCache *emSdkVersionCache()
+{
+ static EmSdkVersionCache cache(10);
+ return &cache;
+}
static QString emSdkEnvOutput(const FilePath &sdkRoot)
{
- const QString cacheKey = sdkRoot.toString();
const bool isWindows = sdkRoot.osType() == OsTypeWindows;
- if (!emSdkEnvCache()->contains(cacheKey)) {
+ if (!emSdkEnvCache()->contains(sdkRoot)) {
const FilePath scriptFile = sdkRoot.pathAppended(QLatin1String("emsdk_env") +
(isWindows ? ".bat" : ".sh"));
Process emSdkEnv;
@@ -37,9 +45,9 @@ static QString emSdkEnvOutput(const FilePath &sdkRoot)
}
emSdkEnv.runBlocking();
const QString output = emSdkEnv.allOutput();
- emSdkEnvCache()->insert(cacheKey, new QString(output));
+ emSdkEnvCache()->insert(sdkRoot, new QString(output));
}
- return *emSdkEnvCache()->object(cacheKey);
+ return *emSdkEnvCache()->object(sdkRoot);
}
void parseEmSdkEnvOutputAndAddToEnv(const QString &output, Environment &env)
@@ -80,8 +88,7 @@ QVersionNumber version(const FilePath &sdkRoot)
{
if (!sdkRoot.exists())
return {};
- const QString cacheKey = sdkRoot.toString();
- if (!emSdkVersionCache()->contains(cacheKey)) {
+ if (!emSdkVersionCache()->contains(sdkRoot)) {
Environment env = sdkRoot.deviceEnvironment();
addToEnvironment(sdkRoot, env);
QLatin1String scriptFile{sdkRoot.osType() == OsType::OsTypeWindows ? "emcc.bat" : "emcc"};
@@ -92,10 +99,10 @@ QVersionNumber version(const FilePath &sdkRoot)
emcc.setEnvironment(env);
emcc.runBlocking();
const QString version = emcc.cleanedStdOut();
- emSdkVersionCache()->insert(cacheKey,
+ emSdkVersionCache()->insert(sdkRoot,
new QVersionNumber(QVersionNumber::fromString(version)));
}
- return *emSdkVersionCache()->object(cacheKey);
+ return *emSdkVersionCache()->object(sdkRoot);
}
void clearCaches()