diff options
| author | Ulf Hermann <ulf.hermann@qt.io> | 2023-12-22 14:06:34 +0100 |
|---|---|---|
| committer | Ulf Hermann <ulf.hermann@qt.io> | 2024-01-10 11:22:43 +0100 |
| commit | 47ddbb72e052989622f5fa23e032c787bed5f2e5 (patch) | |
| tree | 6c18a31045527b7b43be331651607ac34908639a /src/qml/jsruntime/qv4executablecompilationunit.cpp | |
| parent | be6d1499af75228341227d15441284e07cfe1e41 (diff) | |
QtQml: Get rid of the module mutex
It only exists so that the type loader can query pre-compiled and native
modules from the loader thread. However, the type loader already has a
mutex of its own. We can use that to inject a "native" blob into its
script cache for the same effect.
We need to get rid of the mutex so that we can use the module map for
other compilation units, too.
Change-Id: I5a9c266ea36b50f5ea69214110def644f7501674
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src/qml/jsruntime/qv4executablecompilationunit.cpp')
| -rw-r--r-- | src/qml/jsruntime/qv4executablecompilationunit.cpp | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/src/qml/jsruntime/qv4executablecompilationunit.cpp b/src/qml/jsruntime/qv4executablecompilationunit.cpp index ebd0ae3d4a..7f44182a57 100644 --- a/src/qml/jsruntime/qv4executablecompilationunit.cpp +++ b/src/qml/jsruntime/qv4executablecompilationunit.cpp @@ -534,17 +534,6 @@ QQmlType ExecutableCompilationUnit::qmlTypeForComponent(const QString &inlineCom return inlineComponentData[inlineComponentName].qmlType; } -QStringList ExecutableCompilationUnit::moduleRequests() const -{ - const CompiledData::Unit *data = m_compilationUnit->data; - - QStringList requests; - requests.reserve(data->moduleRequestTableSize); - for (uint i = 0; i < data->moduleRequestTableSize; ++i) - requests << stringAt(data->moduleRequestTable()[i]); - return requests; -} - Heap::Module *ExecutableCompilationUnit::instantiate() { const CompiledData::Unit *data = m_compilationUnit->data; @@ -565,7 +554,8 @@ Heap::Module *ExecutableCompilationUnit::instantiate() if (isESModule()) setModule(module->d()); - for (const QString &request: moduleRequests()) { + const QStringList moduleRequests = m_compilationUnit->moduleRequests(); + for (const QString &request: moduleRequests) { const QUrl url(request); const auto dependentModuleUnit = engine->loadModule(url, this); if (engine->hasException) @@ -848,7 +838,8 @@ void ExecutableCompilationUnit::evaluateModuleRequests() { Q_ASSERT(engine); - for (const QString &request: moduleRequests()) { + const QStringList moduleRequests = m_compilationUnit->moduleRequests(); + for (const QString &request: moduleRequests) { auto dependentModule = engine->loadModule(QUrl(request), this); if (dependentModule.native) continue; |
