diff options
author | Alessandro Portale <[email protected]> | 2023-05-17 20:09:43 +0200 |
---|---|---|
committer | Alessandro Portale <[email protected]> | 2023-05-19 14:03:34 +0000 |
commit | b1b9f54de734d7621c3c62b44aa55d713577583c (patch) | |
tree | 4ccdb2aec4d869c10295dad6a925de556a44f1e9 /src/plugins/webassembly/webassemblyemsdk.cpp | |
parent | 22af1a02550fe6c0c9c807c50227ba71ab9587aa (diff) |
WebAssembly: Make caching code less cryptic
Change-Id: Ib768e6f41fe8c5218875287dd0e60c76cbe0053e
Reviewed-by: hjk <[email protected]>
Diffstat (limited to 'src/plugins/webassembly/webassemblyemsdk.cpp')
-rw-r--r-- | src/plugins/webassembly/webassemblyemsdk.cpp | 31 |
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() |