aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/qml/qqmlboundsignal_p.h
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@live.com>2014-03-03 12:06:51 -0600
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-03-04 10:26:10 +0100
commit17eaab833cb303caf3f99a0cf9f98e7edc47b0f9 (patch)
treeb8832f3133625b02fc1a0b84edca3248b4dc8df3 /src/qml/qml/qqmlboundsignal_p.h
parent72293bf3b0a6a3d6ac30cf472b81fd4844b3d582 (diff)
Reduce size of QQmlBoundSignalExpression in the common case.
This reduces the base size of QQmlBoundSignalExpression by 20 bytes, by moving member variables specific to runtime rewrites in to an "extra" structure. Task-number: QTBUG-37134 Change-Id: I235895a395ba4304a7ea071d88aa9aebcfff61cb Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'src/qml/qml/qqmlboundsignal_p.h')
-rw-r--r--src/qml/qml/qqmlboundsignal_p.h40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/qml/qml/qqmlboundsignal_p.h b/src/qml/qml/qqmlboundsignal_p.h
index fe0dbd380e..93cff745e2 100644
--- a/src/qml/qml/qqmlboundsignal_p.h
+++ b/src/qml/qml/qqmlboundsignal_p.h
@@ -86,9 +86,9 @@ public:
// evaluation of a bound signal expression doesn't return any value
void evaluate(void **a);
- QString sourceFile() const { return m_fileName; }
- quint16 lineNumber() const { return m_line; }
- quint16 columnNumber() const { return m_column; }
+ QString sourceFile() const;
+ quint16 lineNumber() const;
+ quint16 columnNumber() const;
QString expression() const;
QV4::Function *function() const;
QObject *target() const { return m_target; }
@@ -100,23 +100,35 @@ private:
void init(QQmlContextData *ctxt, QObject *scope);
+ bool expressionFunctionValid() const { return m_extra.flag(); }
+ void setExpressionFunctionValid(bool v) { m_extra.setFlagValue(v); }
+
+ bool invalidParameterName() const { return m_extra.flag2(); }
+ void setInvalidParameterName(bool v) { m_extra.setFlag2Value(v); }
+
QV4::PersistentValue m_v8qmlscope;
QV4::PersistentValue m_v8function;
- QString m_handlerName;
- QString m_parameterString;
- //once m_v8function is valid, we clear expression and
- //extract it from m_v8function if needed.
- QString m_expression; //only used when expression needs to be rewritten
- QString m_fileName;
- quint16 m_line;
- quint16 m_column;
-
QObject *m_target;
int m_index;
- bool m_expressionFunctionValid:1;
- bool m_invalidParameterName:1;
+ // only needed when !expressionFunctionValid()
+ struct ExtraData {
+ ExtraData(const QString &handlerName, const QString &parameterString,
+ const QString &expression, const QString &fileName,
+ quint16 line, quint16 column);
+ QString m_handlerName;
+ QString m_parameterString;
+ QString m_expression;
+ QString m_fileName;
+ quint16 m_line;
+ quint16 m_column;
+ };
+
+ // We store some flag bits in the following flag pointers.
+ // flag - expressionFunctionValid
+ // flag2 - invalidParameterName
+ QFlagPointer<ExtraData> m_extra;
};
class Q_QML_PRIVATE_EXPORT QQmlAbstractBoundSignal