aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@digia.com>2012-11-02 17:21:38 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2012-11-27 23:14:57 +0100
commit51c12b2d4899db31d62e930ffbe5a8849fa7336b (patch)
treea399457446b9ad4759c5eef0c590105fdfa0f948
parent76251c91afdfbe6d0d9679c2036cbf72c7ee3cde (diff)
Declare type information for some internal qml types.
QQmlVME::State and QBitField are movable and used in QStack. Declaring them as movable may improve potential reallocation time, although it is hard to prove. Change-Id: Ia42b8104e2f24ca7574370c76084df44b9f9298e Reviewed-by: Alan Alpert <aalpert@rim.com>
-rw-r--r--src/qml/qml/ftw/qbitfield_p.h3
-rw-r--r--src/qml/qml/qqmlvme_p.h25
2 files changed, 17 insertions, 11 deletions
diff --git a/src/qml/qml/ftw/qbitfield_p.h b/src/qml/qml/ftw/qbitfield_p.h
index 95ca372f3a..f225c279fc 100644
--- a/src/qml/qml/ftw/qbitfield_p.h
+++ b/src/qml/qml/ftw/qbitfield_p.h
@@ -54,6 +54,7 @@
//
#include <QtCore/qglobal.h>
+#include <QtCore/qtypeinfo.h>
QT_BEGIN_NAMESPACE
@@ -160,6 +161,8 @@ bool QBitField::testBit(int b) const
}
}
+Q_DECLARE_TYPEINFO(QBitField, Q_MOVABLE_TYPE);
+
QT_END_NAMESPACE
#endif // QBITFIELD_P_H
diff --git a/src/qml/qml/qqmlvme_p.h b/src/qml/qml/qqmlvme_p.h
index d2df630b4b..e71094352f 100644
--- a/src/qml/qml/qqmlvme_p.h
+++ b/src/qml/qml/qqmlvme_p.h
@@ -62,6 +62,7 @@
#include <QtCore/QString>
#include <QtCore/qelapsedtimer.h>
#include <QtCore/qcoreapplication.h>
+#include <QtCore/qtypeinfo.h>
#include <private/qv8_p.h>
#include <private/qqmlengine_p.h>
@@ -87,8 +88,20 @@ namespace QQmlVMETypes {
int type;
QQmlListProperty<void> qListProperty;
};
+ struct State {
+ enum Flag { Deferred = 0x00000001 };
+
+ State() : flags(0), context(0), compiledData(0), instructionStream(0) {}
+ quint32 flags;
+ QQmlContextData *context;
+ QQmlCompiledData *compiledData;
+ const char *instructionStream;
+ QBitField bindingSkipList;
+ };
}
Q_DECLARE_TYPEINFO(QQmlVMETypes::List, Q_PRIMITIVE_TYPE | Q_MOVABLE_TYPE);
+template<>
+class QTypeInfo<QQmlVMETypes::State> : public QTypeInfoMerger<QQmlVMETypes::State, QBitField> {}; //Q_DECLARE_TYPEINFO
class Q_QML_PRIVATE_EXPORT QQmlVME
{
@@ -161,17 +174,7 @@ private:
QQmlGuardedContextData rootContext;
QQmlGuardedContextData creationContext;
- struct State {
- enum Flag { Deferred = 0x00000001 };
-
- State() : flags(0), context(0), compiledData(0), instructionStream(0) {}
- quint32 flags;
- QQmlContextData *context;
- QQmlCompiledData *compiledData;
- const char *instructionStream;
- QBitField bindingSkipList;
- };
-
+ typedef QQmlVMETypes::State State;
QStack<State> states;
static void blank(QFiniteStack<QQmlParserStatus *> &);