From 6aeff1b5429ca97af052a7a172369585382096e8 Mon Sep 17 00:00:00 2001 From: Matthew Vogt Date: Thu, 9 Aug 2012 13:26:32 +1000 Subject: Reduce memory consumption of source coordinates Reduce memory consumption by storing source location coordinates as 16-bit variables (in run-time structures). Also modify qmlmin to restrict line lengths so that the column bound is not normally exceeded. Change-Id: I08605626ffbdf081b6da2aea1116bdfe24998572 Reviewed-by: Yann Bodson --- src/qml/qml/qqmlbinding.cpp | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) (limited to 'src/qml/qml/qqmlbinding.cpp') diff --git a/src/qml/qml/qqmlbinding.cpp b/src/qml/qml/qqmlbinding.cpp index 5860cbe19d..f5f0f49ddd 100644 --- a/src/qml/qml/qqmlbinding.cpp +++ b/src/qml/qml/qqmlbinding.cpp @@ -72,7 +72,7 @@ QQmlBinding::Identifier QQmlBinding::Invalid = -1; QQmlBinding * QQmlBinding::createBinding(Identifier id, QObject *obj, QQmlContext *ctxt, - const QString &url, int lineNumber) + const QString &url, quint16 lineNumber) { if (id < 0) return 0; @@ -102,7 +102,7 @@ static QQmlJavaScriptExpression::VTable QQmlBinding_jsvtable = { QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContext *ctxt) : QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), - m_lineNumber(-1), m_columnNumber(-1) + m_lineNumber(0), m_columnNumber(0) { setNotifyOnValueChanged(true); QQmlAbstractExpression::setContext(QQmlContextData::get(ctxt)); @@ -164,7 +164,7 @@ QQmlBinding::QQmlBinding(const QQmlScriptString &script, QObject *obj, QQmlConte QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt) : QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), - m_lineNumber(-1), m_columnNumber(-1) + m_lineNumber(0), m_columnNumber(0) { setNotifyOnValueChanged(true); QQmlAbstractExpression::setContext(ctxt); @@ -179,9 +179,9 @@ QQmlBinding::QQmlBinding(const QString &str, QObject *obj, QQmlContextData *ctxt QQmlBinding::QQmlBinding(const QString &str, bool isRewritten, QObject *obj, QQmlContextData *ctxt, - const QString &url, int lineNumber, int columnNumber) + const QString &url, quint16 lineNumber, quint16 columnNumber) : QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), - m_lineNumber(-1), m_columnNumber(-1) + m_url(url), m_lineNumber(lineNumber), m_columnNumber(columnNumber) { setNotifyOnValueChanged(true); QQmlAbstractExpression::setContext(ctxt); @@ -195,12 +195,9 @@ QQmlBinding::QQmlBinding(const QString &str, bool isRewritten, QObject *obj, code = rewriteBinding(str); } - m_url = url; - m_lineNumber = lineNumber; - m_columnNumber = columnNumber; m_expression = str.toUtf8(); - v8function = evalFunction(ctxt, obj, code, url, lineNumber); + v8function = evalFunction(ctxt, obj, code, url, m_lineNumber); } /*! @@ -212,7 +209,7 @@ QQmlBinding::QQmlBinding(const QString &str, bool isRewritten, QObject *obj, new QQmlBinding(&function, scope, ctxt); */ QQmlBinding::QQmlBinding(void *functionPtr, QObject *obj, QQmlContextData *ctxt, - const QString &url, int lineNumber, int columnNumber) + const QString &url, quint16 lineNumber, quint16 columnNumber) : QQmlJavaScriptExpression(&QQmlBinding_jsvtable), QQmlAbstractBinding(Binding), m_url(url), m_lineNumber(lineNumber), m_columnNumber(columnNumber) { @@ -252,13 +249,16 @@ void QQmlBinding::update(QQmlPropertyPrivate::WriteFlags flags) if (QQmlData::wasDeleted(object())) return; + int lineNo = qmlSourceCoordinate(m_lineNumber); + int columnNo = qmlSourceCoordinate(m_columnNumber); + QQmlTrace trace("General Binding Update"); trace.addDetail("URL", m_url); - trace.addDetail("Line", m_lineNumber); - trace.addDetail("Column", m_columnNumber); + trace.addDetail("Line", lineNo); + trace.addDetail("Column", columnNo); if (!updatingFlag()) { - QQmlBindingProfiler prof(m_url, m_lineNumber, m_columnNumber, QQmlProfilerService::QmlBinding); + QQmlBindingProfiler prof(m_url, lineNo, columnNo, QQmlProfilerService::QmlBinding); setUpdatingFlag(true); QQmlAbstractExpression::DeleteWatcher watcher(this); -- cgit v1.2.3