aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/qml/qdeclarativecompiler_p.h
diff options
context:
space:
mode:
authorAaron Kennedy <aaron.kennedy@nokia.com>2011-06-17 11:37:17 +1000
committerAaron Kennedy <aaron.kennedy@nokia.com>2011-06-17 11:37:17 +1000
commit69a17a912a41458a2b4a20bdbda1717920275250 (patch)
treef0eb0cdb210765ddb954539a0fbe520640eae2a1 /src/declarative/qml/qdeclarativecompiler_p.h
parent9c5e112e12f09ad5c8356d6815f9b23102e99bfd (diff)
Evaluate all shared bindings together using a shared context
The vast majority of bindings are capable of being shared (that is, don't introduce closures themselves) and consequently this improves the performance of almost every app.
Diffstat (limited to 'src/declarative/qml/qdeclarativecompiler_p.h')
-rw-r--r--src/declarative/qml/qdeclarativecompiler_p.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/declarative/qml/qdeclarativecompiler_p.h b/src/declarative/qml/qdeclarativecompiler_p.h
index e4b9240a93..2756c3fefb 100644
--- a/src/declarative/qml/qdeclarativecompiler_p.h
+++ b/src/declarative/qml/qdeclarativecompiler_p.h
@@ -55,6 +55,7 @@
#include "qdeclarative.h"
#include "qdeclarativeerror.h"
+#include "private/qv8_p.h"
#include "private/qdeclarativeinstruction_p.h"
#include "private/qdeclarativeparser_p.h"
#include "private/qdeclarativeengine_p.h"
@@ -103,6 +104,8 @@ public:
};
QList<TypeReference> types;
+ v8::Persistent<v8::Array> v8bindings;
+
const QMetaObject *root;
QAbstractDynamicMetaObject rootData;
QDeclarativePropertyCache *rootPropertyCache;
@@ -283,12 +286,12 @@ private:
QDeclarativeParser::Property *property;
QDeclarativeParser::Value *value;
- enum DataType { QtScript, Experimental };
+ enum DataType { QtScript, V4, V8 };
DataType dataType;
int compiledIndex;
- QByteArray compiledData;
+ QString rewrittenExpression;
BindingContext bindingContext;
};
void addBindingReference(const BindingReference &);
@@ -296,7 +299,7 @@ private:
struct ComponentCompileState
{
ComponentCompileState()
- : parserStatusCount(0), pushedProperties(0), nested(false), root(0) {}
+ : parserStatusCount(0), pushedProperties(0), nested(false), v8BindingProgramLine(-1), root(0) {}
QHash<QString, QDeclarativeParser::Object *> ids;
QHash<int, QDeclarativeParser::Object *> idIndexes;
int parserStatusCount;
@@ -304,6 +307,8 @@ private:
bool nested;
QByteArray compiledBindingData;
+ QString v8BindingProgram;
+ int v8BindingProgramLine;
QHash<QDeclarativeParser::Value *, BindingReference> bindings;
QHash<QDeclarativeParser::Value *, BindingContext> signalExpressions;