aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorUlf Hermann <ulf.hermann@qt.io>2024-01-08 16:29:51 +0100
committerUlf Hermann <ulf.hermann@qt.io>2024-01-13 16:03:59 +0100
commit46911d539a5eb22e86a3a62254f1fecb8813529b (patch)
tree8bcc8267076f7050ff20f11f63cc4f9944265143 /src
parentec5b042736410440b10a00c70715b6701f65ce10 (diff)
QtQml: Move binding, object and parser status counts to base CU
Change-Id: Id52e3d50b02649010ebcb2309253aa689a536770 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'src')
-rw-r--r--src/qml/common/qv4compileddata.cpp21
-rw-r--r--src/qml/common/qv4compileddata_p.h8
-rw-r--r--src/qml/jsruntime/qv4executablecompilationunit.cpp24
-rw-r--r--src/qml/jsruntime/qv4executablecompilationunit_p.h11
4 files changed, 35 insertions, 29 deletions
diff --git a/src/qml/common/qv4compileddata.cpp b/src/qml/common/qv4compileddata.cpp
index 16ef43f678..9e9d8831a1 100644
--- a/src/qml/common/qv4compileddata.cpp
+++ b/src/qml/common/qv4compileddata.cpp
@@ -170,6 +170,27 @@ ResolvedTypeReference *CompilationUnit::resolvedType(QMetaType type) const
}
+int CompilationUnit::totalBindingsCount() const
+{
+ if (!icRootName)
+ return m_totalBindingsCount;
+ return inlineComponentData[*icRootName].totalBindingCount;
+}
+
+int CompilationUnit::totalObjectCount() const
+{
+ if (!icRootName)
+ return m_totalObjectCount;
+ return inlineComponentData[*icRootName].totalObjectCount;
+}
+
+int CompilationUnit::totalParserStatusCount() const
+{
+ if (!icRootName)
+ return m_totalParserStatusCount;
+ return inlineComponentData[*icRootName].totalParserStatusCount;
+}
+
} // namespace CompiledData
} // namespace QV4
diff --git a/src/qml/common/qv4compileddata_p.h b/src/qml/common/qv4compileddata_p.h
index 1d6cbb9742..893ba6c671 100644
--- a/src/qml/common/qv4compileddata_p.h
+++ b/src/qml/common/qv4compileddata_p.h
@@ -1474,6 +1474,10 @@ struct CompilationUnit final : public QQmlRefCounted<CompilationUnit>
std::unique_ptr<CompilationUnitMapper> backingFile;
+ int m_totalBindingsCount = 0; // Number of bindings used in this type
+ int m_totalParserStatusCount = 0; // Number of instantiated types that are QQmlParserStatus subclasses
+ int m_totalObjectCount = 0; // Number of objects explicitly instantiated
+
std::unique_ptr<QString> icRootName;
QHash<QString, InlineComponentData> inlineComponentData;
@@ -1626,6 +1630,10 @@ public:
return propertyCaches.at(/*root object*/0);
}
+ int totalBindingsCount() const;
+ int totalParserStatusCount() const;
+ int totalObjectCount() const;
+
int inlineComponentId(const QString &inlineComponentName) const
{
for (uint i = 0; i < qmlData->nObjects; ++i) {
diff --git a/src/qml/jsruntime/qv4executablecompilationunit.cpp b/src/qml/jsruntime/qv4executablecompilationunit.cpp
index b6eb5298db..b62dea9c83 100644
--- a/src/qml/jsruntime/qv4executablecompilationunit.cpp
+++ b/src/qml/jsruntime/qv4executablecompilationunit.cpp
@@ -475,27 +475,9 @@ void ExecutableCompilationUnit::finalizeCompositeType(const QQmlType &type)
}
}
- m_totalBindingsCount = bindingCount;
- m_totalParserStatusCount = parserStatusCount;
- m_totalObjectCount = objectCount;
-}
-
-int ExecutableCompilationUnit::totalBindingsCount() const {
- if (!m_compilationUnit->icRootName)
- return m_totalBindingsCount;
- return m_compilationUnit->inlineComponentData[*icRootName()].totalBindingCount;
-}
-
-int ExecutableCompilationUnit::totalObjectCount() const {
- if (!m_compilationUnit->icRootName)
- return m_totalObjectCount;
- return m_compilationUnit->inlineComponentData[*icRootName()].totalObjectCount;
-}
-
-int ExecutableCompilationUnit::totalParserStatusCount() const {
- if (!m_compilationUnit->icRootName)
- return m_totalParserStatusCount;
- return m_compilationUnit->inlineComponentData[*icRootName()].totalParserStatusCount;
+ m_compilationUnit->m_totalBindingsCount = bindingCount;
+ m_compilationUnit->m_totalParserStatusCount = parserStatusCount;
+ m_compilationUnit->m_totalObjectCount = objectCount;
}
bool ExecutableCompilationUnit::verifyChecksum(const CompiledData::DependentTypesHasher &dependencyHasher) const
diff --git a/src/qml/jsruntime/qv4executablecompilationunit_p.h b/src/qml/jsruntime/qv4executablecompilationunit_p.h
index 4acb8e6451..4039e1c94d 100644
--- a/src/qml/jsruntime/qv4executablecompilationunit_p.h
+++ b/src/qml/jsruntime/qv4executablecompilationunit_p.h
@@ -102,10 +102,6 @@ public:
void finalizeCompositeType(const QQmlType &type);
- int m_totalBindingsCount = 0; // Number of bindings used in this type
- int m_totalParserStatusCount = 0; // Number of instantiated types that are QQmlParserStatus subclasses
- int m_totalObjectCount = 0; // Number of objects explicitly instantiated
-
const QString *icRootName() const { return m_compilationUnit->icRootName.get(); }
QString *icRootName() { return m_compilationUnit->icRootName.get(); }
void setIcRootName(std::unique_ptr<QString> &&icRootName)
@@ -113,10 +109,9 @@ public:
m_compilationUnit->icRootName = std::move(icRootName);
}
- int totalBindingsCount() const;
- int totalParserStatusCount() const;
- int totalObjectCount() const;
-
+ int totalBindingsCount() const { return m_compilationUnit->totalBindingsCount(); }
+ int totalParserStatusCount() const { return m_compilationUnit->totalParserStatusCount(); }
+ int totalObjectCount() const { return m_compilationUnit->totalObjectCount(); }
QVector<QQmlRefPointer<QQmlScriptData>> dependentScripts;
ResolvedTypeReference *resolvedType(int id) const