diff options
author | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-09 12:04:52 +0100 |
---|---|---|
committer | Ulf Hermann <ulf.hermann@qt.io> | 2020-12-10 12:22:30 +0100 |
commit | c0b59369ab45a78e4407633365a52c1a9255512c (patch) | |
tree | f3c94857667de0d58f83d5827789bc35f7756a3e /src/qml | |
parent | c1c4a874e31ba108a3600fbbb0aee7fc0bf34601 (diff) |
Respect QML_DISABLE_DISK_CACHE also for caches built into the binary
Previously it would only disable loading of separate cache files.
Change-Id: Iae92fc03d2e5566ef7dc44a6730b788b7512fd3d
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml')
-rw-r--r-- | src/qml/jsruntime/qv4engine.cpp | 16 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4engine_p.h | 2 | ||||
-rw-r--r-- | src/qml/jsruntime/qv4script.cpp | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmltypeloader.cpp | 13 |
4 files changed, 27 insertions, 8 deletions
diff --git a/src/qml/jsruntime/qv4engine.cpp b/src/qml/jsruntime/qv4engine.cpp index 1085b81ab7..320dc15a15 100644 --- a/src/qml/jsruntime/qv4engine.cpp +++ b/src/qml/jsruntime/qv4engine.cpp @@ -142,6 +142,9 @@ Q_DECLARE_METATYPE(QList<int>) QT_BEGIN_NAMESPACE +DEFINE_BOOL_CONFIG_OPTION(disableDiskCache, QML_DISABLE_DISK_CACHE); +DEFINE_BOOL_CONFIG_OPTION(forceDiskCache, QML_FORCE_DISK_CACHE); + using namespace QV4; static QBasicAtomicInt engineSerial = Q_BASIC_ATOMIC_INITIALIZER(1); @@ -1957,9 +1960,13 @@ ReturnedValue ExecutionEngine::global() QQmlRefPointer<ExecutableCompilationUnit> ExecutionEngine::compileModule(const QUrl &url) { QQmlMetaType::CachedUnitLookupError cacheError = QQmlMetaType::CachedUnitLookupError::NoError; - if (const QQmlPrivate::CachedQmlUnit *cachedUnit = QQmlMetaType::findCachedCompilationUnit(url, &cacheError)) { + if (const QQmlPrivate::CachedQmlUnit *cachedUnit = diskCacheEnabled() + ? QQmlMetaType::findCachedCompilationUnit(url, &cacheError) + : nullptr) { return ExecutableCompilationUnit::create( - QV4::CompiledData::CompilationUnit(cachedUnit->qmlData, cachedUnit->aotCompiledFunctions, url.fileName(), url.toString())); + QV4::CompiledData::CompilationUnit( + cachedUnit->qmlData, cachedUnit->aotCompiledFunctions, + url.fileName(), url.toString())); } QFile f(QQmlFile::urlToLocalFileOrQrc(url)); @@ -2039,6 +2046,11 @@ QQmlRefPointer<ExecutableCompilationUnit> ExecutionEngine::loadModule(const QUrl return newModule; } +bool ExecutionEngine::diskCacheEnabled() const +{ + return (!disableDiskCache() && !debugger()) || forceDiskCache(); +} + void ExecutionEngine::initQmlGlobalObject() { initializeGlobal(); diff --git a/src/qml/jsruntime/qv4engine_p.h b/src/qml/jsruntime/qv4engine_p.h index bf24663920..6d02ffd54b 100644 --- a/src/qml/jsruntime/qv4engine_p.h +++ b/src/qml/jsruntime/qv4engine_p.h @@ -739,6 +739,8 @@ public: QQmlRefPointer<ExecutableCompilationUnit> moduleForUrl(const QUrl &_url, const ExecutableCompilationUnit *referrer = nullptr) const; QQmlRefPointer<ExecutableCompilationUnit> loadModule(const QUrl &_url, const ExecutableCompilationUnit *referrer = nullptr); + bool diskCacheEnabled() const; + private: #if QT_CONFIG(qml_debug) QScopedPointer<QV4::Debugging::Debugger> m_debugger; diff --git a/src/qml/jsruntime/qv4script.cpp b/src/qml/jsruntime/qv4script.cpp index 10250f6adc..b6469ffd77 100644 --- a/src/qml/jsruntime/qv4script.cpp +++ b/src/qml/jsruntime/qv4script.cpp @@ -227,7 +227,9 @@ Script *Script::createFromFileOrCache(ExecutionEngine *engine, QmlContext *qmlCo error->clear(); QQmlMetaType::CachedUnitLookupError cacheError = QQmlMetaType::CachedUnitLookupError::NoError; - if (const QQmlPrivate::CachedQmlUnit *cachedUnit = QQmlMetaType::findCachedCompilationUnit(originalUrl, &cacheError)) { + if (const QQmlPrivate::CachedQmlUnit *cachedUnit = engine->diskCacheEnabled() + ? QQmlMetaType::findCachedCompilationUnit(originalUrl, &cacheError) + : nullptr) { QQmlRefPointer<QV4::ExecutableCompilationUnit> jsUnit = QV4::ExecutableCompilationUnit::create( QV4::CompiledData::CompilationUnit(cachedUnit->qmlData, cachedUnit->aotCompiledFunctions)); diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp index 1b14467266..6c5e7eccb9 100644 --- a/src/qml/qml/qqmltypeloader.cpp +++ b/src/qml/qml/qqmltypeloader.cpp @@ -68,8 +68,6 @@ #define ASSERT_LOADTHREAD() #endif -DEFINE_BOOL_CONFIG_OPTION(disableDiskCache, QML_DISABLE_DISK_CACHE); -DEFINE_BOOL_CONFIG_OPTION(forceDiskCache, QML_FORCE_DISK_CACHE); QT_BEGIN_NAMESPACE @@ -772,7 +770,7 @@ bool QQmlTypeLoader::Blob::isDebugging() const bool QQmlTypeLoader::Blob::diskCacheEnabled() const { - return (!disableDiskCache() && !isDebugging()) || forceDiskCache(); + return typeLoader()->engine()->handle()->diskCacheEnabled(); } bool QQmlTypeLoader::Blob::qmldirDataAvailable(const QQmlRefPointer<QQmlQmldirData> &data, QList<QQmlError> *errors) @@ -863,7 +861,10 @@ QQmlRefPointer<QQmlTypeData> QQmlTypeLoader::getType(const QUrl &unNormalizedUrl // TODO: if (compiledData == 0), is it safe to omit this insertion? m_typeCache.insert(url, typeData); QQmlMetaType::CachedUnitLookupError error = QQmlMetaType::CachedUnitLookupError::NoError; - if (const QQmlPrivate::CachedQmlUnit *cachedUnit = QQmlMetaType::findCachedCompilationUnit(typeData->url(), &error)) { + + if (const QQmlPrivate::CachedQmlUnit *cachedUnit = typeData->diskCacheEnabled() + ? QQmlMetaType::findCachedCompilationUnit(typeData->url(), &error) + : nullptr) { QQmlTypeLoader::loadWithCachedUnit(typeData, cachedUnit, mode); } else { typeData->setCachedUnitStatus(error); @@ -922,7 +923,9 @@ QQmlRefPointer<QQmlScriptBlob> QQmlTypeLoader::getScript(const QUrl &unNormalize m_scriptCache.insert(url, scriptBlob); QQmlMetaType::CachedUnitLookupError error; - if (const QQmlPrivate::CachedQmlUnit *cachedUnit = QQmlMetaType::findCachedCompilationUnit(scriptBlob->url(), &error)) { + if (const QQmlPrivate::CachedQmlUnit *cachedUnit = scriptBlob->diskCacheEnabled() + ? QQmlMetaType::findCachedCompilationUnit(scriptBlob->url(), &error) + : nullptr) { QQmlTypeLoader::loadWithCachedUnit(scriptBlob, cachedUnit); } else { scriptBlob->setCachedUnitStatus(error); |