From 2b00cb4fc62f64b75c906a9f65cfc2b60ecfcb43 Mon Sep 17 00:00:00 2001 From: Simon Hausmann Date: Mon, 13 Jan 2014 09:42:55 +0100 Subject: [new compiler] Clean up property cache / meta object builder Move the outter loop into the builder class itself, use a vector instead of a list (we know that it's a fixed size and we only do indexed access) Change-Id: I933f0496ea47b3bc7c2bebde7f1a14b4f603b4c3 Reviewed-by: Lars Knoll --- src/qml/compiler/qqmltypecompiler_p.h | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'src/qml/compiler/qqmltypecompiler_p.h') diff --git a/src/qml/compiler/qqmltypecompiler_p.h b/src/qml/compiler/qqmltypecompiler_p.h index 9f055f4376..7f7adf1c86 100644 --- a/src/qml/compiler/qqmltypecompiler_p.h +++ b/src/qml/compiler/qqmltypecompiler_p.h @@ -84,8 +84,10 @@ struct QQmlTypeCompiler QHash *resolvedTypes(); QList *qmlObjects(); int rootObjectIndex() const; - const QList &propertyCaches() const; - QList *vmeMetaObjects() const; + void setPropertyCaches(const QVector &caches); + const QVector &propertyCaches() const; + void setVMEMetaObjects(const QVector &metaObjects); + QVector *vmeMetaObjects() const; QHash *objectIndexToIdForRoot(); QHash > *objectIndexToIdPerComponent(); QHash *customParserData(); @@ -101,6 +103,8 @@ private: struct QQmlCompilePass { + virtual ~QQmlCompilePass() {} + QQmlCompilePass(QQmlTypeCompiler *typeCompiler); QList errors; @@ -117,13 +121,18 @@ class QQmlPropertyCacheCreator : public QQmlCompilePass Q_DECLARE_TR_FUNCTIONS(QQmlPropertyCacheCreator) public: QQmlPropertyCacheCreator(QQmlTypeCompiler *typeCompiler); + ~QQmlPropertyCacheCreator(); - bool create(const QtQml::QmlObject *obj, QQmlPropertyCache **cache, QByteArray *vmeMetaObjectData); - + bool buildMetaObjects(); protected: + bool createMetaObject(int objectIndex, const QtQml::QmlObject *obj, QQmlPropertyCache *baseTypeCache); + QQmlEnginePrivate *enginePrivate; + const QList &qmlObjects; const QQmlImports *imports; QHash *resolvedTypes; + QVector vmeMetaObjects; + QVector propertyCaches; }; class QQmlComponentAndAliasResolver : public QQmlCompilePass @@ -157,8 +166,8 @@ protected: QList _objectsWithAliases; QHash *resolvedTypes; - const QList propertyCaches; - QList *vmeMetaObjectData; + const QVector propertyCaches; + QVector *vmeMetaObjectData; QHash *objectIndexToIdForRoot; QHash > *objectIndexToIdPerComponent; }; @@ -178,7 +187,7 @@ private: const QV4::CompiledData::QmlUnit *qmlUnit; const QHash &resolvedTypes; - const QList &propertyCaches; + const QVector &propertyCaches; const QHash > objectIndexToIdPerComponent; QHash *customParserData; }; -- cgit v1.2.3