aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2014-03-18 08:46:33 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-19 08:32:23 +0100
commitc33a79f0a0de8f01b3a43335778e246e1f02598e (patch)
tree7a0d9c176b0bbfa894ea90919ab71627d31d35f3 /src/qml
parent3b2e7bf03b656b38ba7b24acf7ed38de555635f1 (diff)
Clean, part 3
* Get rid of QQmlScript::Pragma * Allow retrieving the QML unit size after generation * Add flag equivalent of .pragma library to QV4::CompiledData * Remove unused method Change-Id: I2f95b83f919004013741bc539c82960cc878f3a4 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml')
-rw-r--r--src/qml/compiler/qqmlirbuilder.cpp4
-rw-r--r--src/qml/compiler/qqmlirbuilder_p.h2
-rw-r--r--src/qml/compiler/qv4compileddata_p.h3
-rw-r--r--src/qml/qml/qqmlscript_p.h11
-rw-r--r--src/qml/qml/qqmltypeloader.cpp42
-rw-r--r--src/qml/qml/qqmltypeloader_p.h6
6 files changed, 18 insertions, 50 deletions
diff --git a/src/qml/compiler/qqmlirbuilder.cpp b/src/qml/compiler/qqmlirbuilder.cpp
index dbd733f506..a6276096b2 100644
--- a/src/qml/compiler/qqmlirbuilder.cpp
+++ b/src/qml/compiler/qqmlirbuilder.cpp
@@ -1207,7 +1207,7 @@ bool IRBuilder::isStatementNodeScript(QQmlJS::AST::Statement *statement)
return true;
}
-QV4::CompiledData::QmlUnit *QmlUnitGenerator::generate(Document &output)
+QV4::CompiledData::QmlUnit *QmlUnitGenerator::generate(Document &output, int *totalUnitSizeInBytes)
{
jsUnitGenerator = &output.jsGenerator;
int unitSize = 0;
@@ -1231,6 +1231,8 @@ QV4::CompiledData::QmlUnit *QmlUnitGenerator::generate(Document &output)
}
const int totalSize = unitSize + importSize + objectOffsetTableSize + objectsSize;
+ if (totalUnitSizeInBytes)
+ *totalUnitSizeInBytes = totalSize;
char *data = (char*)malloc(totalSize);
memcpy(data, jsUnit, unitSize);
free(jsUnit);
diff --git a/src/qml/compiler/qqmlirbuilder_p.h b/src/qml/compiler/qqmlirbuilder_p.h
index 3a0a2054db..f40799436e 100644
--- a/src/qml/compiler/qqmlirbuilder_p.h
+++ b/src/qml/compiler/qqmlirbuilder_p.h
@@ -422,7 +422,7 @@ struct Q_QML_EXPORT QmlUnitGenerator
{
}
- QV4::CompiledData::QmlUnit *generate(Document &output);
+ QV4::CompiledData::QmlUnit *generate(Document &output, int *totalUnitSizeInBytes = 0);
private:
typedef bool (Binding::*BindingFilter)() const;
diff --git a/src/qml/compiler/qv4compileddata_p.h b/src/qml/compiler/qv4compileddata_p.h
index 186363dcde..474d4c88bc 100644
--- a/src/qml/compiler/qv4compileddata_p.h
+++ b/src/qml/compiler/qv4compileddata_p.h
@@ -168,7 +168,8 @@ struct Unit
IsJavascript = 0x1,
IsQml = 0x2,
StaticData = 0x4, // Unit data persistent in memory?
- IsSingleton = 0x8
+ IsSingleton = 0x8,
+ IsSharedLibrary = 0x10 // .pragma shared?
};
quint32 flags;
uint stringTableSize;
diff --git a/src/qml/qml/qqmlscript_p.h b/src/qml/qml/qqmlscript_p.h
index 15446c089f..e46cef9206 100644
--- a/src/qml/qml/qqmlscript_p.h
+++ b/src/qml/qml/qqmlscript_p.h
@@ -119,17 +119,6 @@ public:
QQmlScript::LocationSpan location;
};
-class Pragma
-{
-public:
- Pragma() : type(Singleton) {}
-
- enum Type { Singleton };
- Type type;
-
- QQmlScript::LocationSpan location;
-};
-
class Object;
class TypeReference : public QQmlPool::Class
{
diff --git a/src/qml/qml/qqmltypeloader.cpp b/src/qml/qml/qqmltypeloader.cpp
index 25e98d13a6..e43b8177f8 100644
--- a/src/qml/qml/qqmltypeloader.cpp
+++ b/src/qml/qml/qqmltypeloader.cpp
@@ -51,7 +51,6 @@
#include <private/qqmlcomponent_p.h>
#include <private/qqmlprofiler_p.h>
#include <private/qqmlmemoryprofiler_p.h>
-#include <private/qqmlirbuilder_p.h>
#include <private/qqmltypecompiler_p.h>
#include <QtCore/qdir.h>
@@ -1337,11 +1336,11 @@ bool QQmlTypeLoader::Blob::addImport(const QQmlScript::Import &import, QList<QQm
return true;
}
-bool QQmlTypeLoader::Blob::addPragma(const QQmlScript::Pragma &pragma, QList<QQmlError> *errors)
+bool QQmlTypeLoader::Blob::addPragma(const QmlIR::Pragma &pragma, QList<QQmlError> *errors)
{
Q_ASSERT(errors);
- if (pragma.type == QQmlScript::Pragma::Singleton) {
+ if (pragma.type == QmlIR::Pragma::PragmaSingleton) {
QUrl myUrl = finalUrl();
QQmlType *ret = QQmlMetaType::qmlType(myUrl, true);
@@ -1349,8 +1348,8 @@ bool QQmlTypeLoader::Blob::addPragma(const QQmlScript::Pragma &pragma, QList<QQm
QQmlError error;
error.setDescription(QQmlTypeLoader::tr("No matching type found, pragma Singleton files cannot be used by QQmlComponent."));
error.setUrl(myUrl);
- error.setLine(pragma.location.start.line);
- error.setColumn(pragma.location.start.column);
+ error.setLine(pragma.location.line);
+ error.setColumn(pragma.location.column);
errors->prepend(error);
return false;
}
@@ -1359,8 +1358,8 @@ bool QQmlTypeLoader::Blob::addPragma(const QQmlScript::Pragma &pragma, QList<QQm
QQmlError error;
error.setDescription(QQmlTypeLoader::tr("pragma Singleton used with a non composite singleton type %1").arg(ret->qmlTypeName()));
error.setUrl(myUrl);
- error.setLine(pragma.location.start.line);
- error.setColumn(pragma.location.start.column);
+ error.setLine(pragma.location.line);
+ error.setColumn(pragma.location.column);
errors->prepend(error);
return false;
}
@@ -1371,8 +1370,8 @@ bool QQmlTypeLoader::Blob::addPragma(const QQmlScript::Pragma &pragma, QList<QQm
QQmlError error;
error.setDescription(QLatin1String("Invalid pragma"));
error.setUrl(finalUrl());
- error.setLine(pragma.location.start.line);
- error.setColumn(pragma.location.start.column);
+ error.setLine(pragma.location.line);
+ error.setColumn(pragma.location.column);
errors->prepend(error);
return false;
}
@@ -2201,24 +2200,8 @@ void QQmlTypeData::dataReceived(const Data &data)
}
}
- if (m_pragmas.isEmpty()) {
- m_pragmas.reserve(m_document->pragmas.count());
- foreach (QmlIR::Pragma *p, m_document->pragmas) {
- QQmlScript::Pragma pragma;
- pragma.location.start.line = p->location.line;
- pragma.location.start.column = p->location.column;
-
- switch (p->type) {
- case QmlIR::Pragma::PragmaSingleton: pragma.type = QQmlScript::Pragma::Singleton; break;
- default: break;
- }
-
- m_pragmas << pragma;
- }
- }
-
- foreach (const QQmlScript::Pragma &pragma, m_pragmas) {
- if (!addPragma(pragma, &errors)) {
+ foreach (QmlIR::Pragma *pragma, m_document->pragmas) {
+ if (!addPragma(*pragma, &errors)) {
Q_ASSERT(errors.size());
setError(errors);
return;
@@ -2618,11 +2601,6 @@ QQmlScriptBlob::~QQmlScriptBlob()
}
}
-QQmlScript::Object::ScriptBlock::Pragmas QQmlScriptBlob::pragmas() const
-{
- return m_metadata.pragmas;
-}
-
QQmlScriptData *QQmlScriptBlob::scriptData() const
{
return m_scriptData;
diff --git a/src/qml/qml/qqmltypeloader_p.h b/src/qml/qml/qqmltypeloader_p.h
index 6e759266ef..fa606bf1a9 100644
--- a/src/qml/qml/qqmltypeloader_p.h
+++ b/src/qml/qml/qqmltypeloader_p.h
@@ -68,6 +68,7 @@
#include <private/qqmldirparser_p.h>
#include <private/qqmlbundle_p.h>
#include <private/qflagpointer_p.h>
+#include <private/qqmlirbuilder_p.h>
#include <private/qv4value_inl_p.h>
#include <private/qv4script_p.h>
@@ -279,7 +280,7 @@ public:
protected:
bool addImport(const QQmlScript::Import &import, QList<QQmlError> *errors);
- bool addPragma(const QQmlScript::Pragma &pragma, QList<QQmlError> *errors);
+ bool addPragma(const QmlIR::Pragma &pragma, QList<QQmlError> *errors);
bool fetchQmldir(const QUrl &url, const QQmlScript::Import *import, int priority, QList<QQmlError> *errors);
bool updateQmldir(QQmlQmldirData *data, const QQmlScript::Import *import, QList<QQmlError> *errors);
@@ -457,7 +458,6 @@ private:
QScopedPointer<QmlIR::Document> m_document;
QList<QQmlScript::Import> m_imports;
- QList<QQmlScript::Pragma> m_pragmas;
QList<ScriptReference> m_scripts;
@@ -537,8 +537,6 @@ public:
QQmlScriptBlob *script;
};
- QQmlScript::Object::ScriptBlock::Pragmas pragmas() const;
-
QQmlScriptData *scriptData() const;
protected: