summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml')
-rw-r--r--src/declarative/qml/qmlbasicscript.cpp17
-rw-r--r--src/declarative/qml/qmlbasicscript_p.h2
-rw-r--r--src/declarative/qml/qmlbindingoptimizations.cpp71
-rw-r--r--src/declarative/qml/qmlbindingoptimizations_p.h26
-rw-r--r--src/declarative/qml/qmlcompiler.cpp21
-rw-r--r--src/declarative/qml/qmlinstruction.cpp3
-rw-r--r--src/declarative/qml/qmlinstruction_p.h1
-rw-r--r--src/declarative/qml/qmlvme.cpp19
8 files changed, 2 insertions, 158 deletions
diff --git a/src/declarative/qml/qmlbasicscript.cpp b/src/declarative/qml/qmlbasicscript.cpp
index b596437..ebdd348 100644
--- a/src/declarative/qml/qmlbasicscript.cpp
+++ b/src/declarative/qml/qmlbasicscript.cpp
@@ -737,23 +737,6 @@ int QmlBasicScript::singleIdFetchIndex() const
return d->instructions()[0].fetch.idx;
}
-bool QmlBasicScript::isSingleContextProperty() const
-{
- if (!isValid())
- return false;
-
- return d->instructionCount == 1 &&
- d->instructions()[0].type == ScriptInstruction::FetchContextConstant;
-}
-
-int QmlBasicScript::singleContextPropertyIndex() const
-{
- if (!isSingleContextProperty())
- return -1;
-
- return d->instructions()[0].constant.idx;
-}
-
/*!
Return a pointer to the script's compile data, or null if there is no data.
*/
diff --git a/src/declarative/qml/qmlbasicscript_p.h b/src/declarative/qml/qmlbasicscript_p.h
index 3af09c2..c4b436d 100644
--- a/src/declarative/qml/qmlbasicscript_p.h
+++ b/src/declarative/qml/qmlbasicscript_p.h
@@ -104,8 +104,6 @@ public:
bool isSingleIdFetch() const;
int singleIdFetchIndex() const;
- bool isSingleContextProperty() const;
- int singleContextPropertyIndex() const;
private:
int flags;
QmlBasicScriptPrivate *d;
diff --git a/src/declarative/qml/qmlbindingoptimizations.cpp b/src/declarative/qml/qmlbindingoptimizations.cpp
index d8a2de0..d7105b2 100644
--- a/src/declarative/qml/qmlbindingoptimizations.cpp
+++ b/src/declarative/qml/qmlbindingoptimizations.cpp
@@ -255,75 +255,4 @@ void QmlBinding_Id::reset()
m_propertyIdx, a);
}
-/*
- The QmlBinding_ObjectProperty optimization handles expressions of the type:
-
- property: objectProperty
-
- where both property and objectProperty are object properties on the target
- object. Coercian between the two must be checked outside the
- QmlBinding_ObjectProperty - it assumes that they coerce successfully.
-
- Due to dot properties, property does not have to be on the same object as
- objectProperty. For example:
-
- anchors.fill: parent
-*/
-QmlBinding_ObjProperty::QmlBinding_ObjProperty(QObject *object, int propertyIdx,
- QObject *context, int contextIdx,
- int notifyIdx)
-: m_enabled(false), m_object(object), m_propertyIdx(propertyIdx),
- m_context(context), m_contextIdx(contextIdx), m_notifyIdx(notifyIdx)
-{
-}
-
-void QmlBinding_ObjProperty::setEnabled(bool e, QmlMetaProperty::WriteFlags flags)
-{
- m_enabled = e;
- if (e) {
- addToObject(m_object);
- update(flags);
- } else {
- removeFromObject();
- }
-
- QmlAbstractBinding::setEnabled(e, flags);
-}
-
-int QmlBinding_ObjProperty::propertyIndex()
-{
- return m_propertyIdx;
-}
-
-void QmlBinding_ObjProperty::update(QmlMetaProperty::WriteFlags flags)
-{
- if (!m_enabled)
- return;
-
- QObject *value = 0;
- int status = -1;
- void *ra[] = { &value, 0, &status };
-
- // Read
- QMetaObject::metacall(m_context, QMetaObject::ReadProperty,
- m_contextIdx, ra);
-
- void *wa[] = { &value, 0, &status, &flags };
-
- // Write
- QMetaObject::metacall(m_object, QMetaObject::WriteProperty,
- m_propertyIdx, wa);
-
- // Connect notify if needed. Only need to connect once, so we set
- // m_notifyIdx back to -1 afterwards
- static int slotIdx = -1;
- if (m_notifyIdx != -1) {
- if (slotIdx == -1)
- slotIdx = QmlBinding_ObjProperty::staticMetaObject.indexOfMethod("update()");
-
- QMetaObject::connect(m_context, m_notifyIdx, this, slotIdx);
- m_notifyIdx = -1;
- }
-}
-
QT_END_NAMESPACE
diff --git a/src/declarative/qml/qmlbindingoptimizations_p.h b/src/declarative/qml/qmlbindingoptimizations_p.h
index 6289cc0..feb753e 100644
--- a/src/declarative/qml/qmlbindingoptimizations_p.h
+++ b/src/declarative/qml/qmlbindingoptimizations_p.h
@@ -128,32 +128,6 @@ private:
int m_id;
};
-class QmlBinding_ObjProperty : public QObject,
- public QmlAbstractExpression,
- public QmlAbstractBinding
-{
- Q_OBJECT
-public:
- QmlBinding_ObjProperty(QObject *object, int propertyIdx,
- QObject *context, int contextIdx, int notifyIdx);
-
- // Inherited from QmlAbstractBinding
- virtual void setEnabled(bool, QmlMetaProperty::WriteFlags flags);
- virtual int propertyIndex();
- virtual void update(QmlMetaProperty::WriteFlags flags);
-
-private Q_SLOTS:
- void update() { update(QmlMetaProperty::DontRemoveBinding); }
-
-private:
- bool m_enabled;
- QObject *m_object;
- int m_propertyIdx;
- QObject *m_context;
- int m_contextIdx;
- int m_notifyIdx;
-};
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp
index 3ebefea..7f11a23 100644
--- a/src/declarative/qml/qmlcompiler.cpp
+++ b/src/declarative/qml/qmlcompiler.cpp
@@ -2545,24 +2545,7 @@ void QmlCompiler::genBindingAssignment(QmlParser::Value *binding,
output->bytecode << store;
return;
}
- } else if (bs.isSingleContextProperty()) {
- int propIndex = bs.singleContextPropertyIndex();
-
- QMetaProperty p =
- ref.bindingContext.object->metaObject()->property(propIndex);
- if ((p.notifySignalIndex() != -1 || p.isConstant()) &&
- canCoerce(prop->type, p.userType())) {
-
- store.type = QmlInstruction::StoreObjPropBinding;
- store.assignObjPropBinding.property = prop->index;
- store.assignObjPropBinding.contextIdx = propIndex;
- store.assignObjPropBinding.context = ref.bindingContext.stack;
- store.assignObjPropBinding.notifyIdx = p.notifySignalIndex();
-
- output->bytecode << store;
- return;
- }
- }
+ }
store.type = QmlInstruction::StoreBinding;
store.assignBinding.value = output->indexForByteArray(ref.compiledData);
@@ -2634,7 +2617,7 @@ bool QmlCompiler::completeComponentBuild()
bs.compile(expr);
- if (qmlExperimental() && (!bs.isValid() || (!bs.isSingleIdFetch() && !bs.isSingleContextProperty()))) {
+ if (qmlExperimental() && (!bs.isValid() || !bs.isSingleIdFetch())) {
int index = bindingCompiler.compile(expr, QmlEnginePrivate::get(engine));
if (index != -1) {
qWarning() << "Accepted for optimization:" << qPrintable(expr.expression.asScript());
diff --git a/src/declarative/qml/qmlinstruction.cpp b/src/declarative/qml/qmlinstruction.cpp
index c873803..2ddad49 100644
--- a/src/declarative/qml/qmlinstruction.cpp
+++ b/src/declarative/qml/qmlinstruction.cpp
@@ -164,9 +164,6 @@ void QmlCompiledData::dump(QmlInstruction *instr, int idx)
case QmlInstruction::StoreIdOptBinding:
qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_ID_OPT_BINDING\t" << instr->assignIdOptBinding.property << "\t" << instr->assignIdOptBinding.id;
break;
- case QmlInstruction::StoreObjPropBinding:
- qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_OBJ_PROP_BINDING\t" << instr->assignObjPropBinding.property << "\t" << instr->assignObjPropBinding.contextIdx << "\t" << instr->assignObjPropBinding.context << "\t" << instr->assignObjPropBinding.notifyIdx;
- break;
case QmlInstruction::StoreValueSource:
qWarning().nospace() << idx << "\t\t" << line << "\t" << "STORE_VALUE_SOURCE\t" << instr->assignValueSource.property << "\t" << instr->assignValueSource.castValue;
break;
diff --git a/src/declarative/qml/qmlinstruction_p.h b/src/declarative/qml/qmlinstruction_p.h
index 6e2b452..44fa196 100644
--- a/src/declarative/qml/qmlinstruction_p.h
+++ b/src/declarative/qml/qmlinstruction_p.h
@@ -130,7 +130,6 @@ public:
StoreBinding, /* assignBinding */
StoreCompiledBinding, /* assignBinding */
StoreIdOptBinding, /* assignIdOptBinding */
- StoreObjPropBinding, /* assignObjPropBinding */
StoreValueSource, /* assignValueSource */
StoreValueInterceptor, /* assignValueInterceptor */
diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp
index f1abd7d..06795a8 100644
--- a/src/declarative/qml/qmlvme.cpp
+++ b/src/declarative/qml/qmlvme.cpp
@@ -644,25 +644,6 @@ QObject *QmlVME::run(QmlVMEStack<QObject *> &stack, QmlContext *ctxt,
}
break;
- case QmlInstruction::StoreObjPropBinding:
- {
- int coreIndex = instr.assignObjPropBinding.property;
- if (stack.count() == 1 && bindingSkipList.testBit(coreIndex))
- break;
-
- QObject *target = stack.top();
- QObject *context =
- stack.at(stack.count() - 1 - instr.assignObjPropBinding.context);
-
- QmlBinding_ObjProperty *bind =
- new QmlBinding_ObjProperty(target, instr.assignObjPropBinding.property, context, instr.assignObjPropBinding.contextIdx, instr.assignObjPropBinding.notifyIdx);
-
- bindValues.append(bind);
- bind->m_mePtr = &bindValues.values[bindValues.count - 1];
- bind->addToObject(target);
- }
- break;
-
case QmlInstruction::StoreValueSource:
{
QObject *obj = stack.pop();