aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jsruntime/qv4executablecompilationunit.cpp
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2023-12-22 14:06:34 +0100
committerUlf Hermann <ulf.hermann@qt.io>2024-01-10 11:22:43 +0100
commit47ddbb72e052989622f5fa23e032c787bed5f2e5 (patch)
tree6c18a31045527b7b43be331651607ac34908639a /src/qml/jsruntime/qv4executablecompilationunit.cpp
parentbe6d1499af75228341227d15441284e07cfe1e41 (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.cpp17
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;