aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-11-02 17:40:35 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-25 22:04:42 +0100
commit62c906059516bb829f05073096fd3e12f5103fba (patch)
tree92176ac795e64dff690ed100f61935f301189871 /src/qml/compiler
parent71e498adc4d8af11205de2eeefc50ab9eb1ad497 (diff)
Cleanup, get rid of MemberOfQObject V4IR::Member specialization
It is technically redundant to the Member::property field. Change-Id: If0ee35b2c94a2c9373784d36a1f8dfe8ad7dcfb3 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler')
-rw-r--r--src/qml/compiler/qqmlcodegenerator.cpp4
-rw-r--r--src/qml/compiler/qv4isel_p.cpp4
-rw-r--r--src/qml/compiler/qv4jsir.cpp17
-rw-r--r--src/qml/compiler/qv4jsir_p.h20
-rw-r--r--src/qml/compiler/qv4ssa.cpp2
5 files changed, 14 insertions, 33 deletions
diff --git a/src/qml/compiler/qqmlcodegenerator.cpp b/src/qml/compiler/qqmlcodegenerator.cpp
index 02f21569e4..4e1d2ef9c8 100644
--- a/src/qml/compiler/qqmlcodegenerator.cpp
+++ b/src/qml/compiler/qqmlcodegenerator.cpp
@@ -1427,7 +1427,7 @@ V4IR::Expr *JSCodeGen::fallbackNameLookup(const QString &name, int line, int col
_function->scopeObjectDependencies.insert(pd);
V4IR::Temp *base = _block->TEMP(_scopeObjectTemp);
initMetaObjectResolver(&base->memberResolver, _scopeObject);
- return _block->QML_QOBJECT_PROPERTY(base, _function->newString(name), pd);
+ return _block->MEMBER(base, _function->newString(name), pd);
}
}
@@ -1441,7 +1441,7 @@ V4IR::Expr *JSCodeGen::fallbackNameLookup(const QString &name, int line, int col
_function->contextObjectDependencies.insert(pd);
V4IR::Temp *base = _block->TEMP(_contextObjectTemp);
initMetaObjectResolver(&base->memberResolver, _contextObject);
- return _block->QML_QOBJECT_PROPERTY(base, _function->newString(name), pd);
+ return _block->MEMBER(base, _function->newString(name), pd);
}
}
diff --git a/src/qml/compiler/qv4isel_p.cpp b/src/qml/compiler/qv4isel_p.cpp
index 45b1e9f3b0..b3407867b4 100644
--- a/src/qml/compiler/qv4isel_p.cpp
+++ b/src/qml/compiler/qv4isel_p.cpp
@@ -150,7 +150,7 @@ void IRDecoder::visitMove(V4IR::Move *s)
loadQmlIdObject(m->memberIndex, t);
return;
}
- } else if (m->type == V4IR::Member::MemberOfQObject) {
+ } else if (m->property) {
bool captureRequired = true;
if (_function) {
captureRequired = !_function->contextObjectDependencies.contains(m->property)
@@ -195,7 +195,7 @@ void IRDecoder::visitMove(V4IR::Move *s)
} else if (V4IR::Member *m = s->target->asMember()) {
if (m->base->asTemp() || m->base->asConst()) {
if (s->source->asTemp() || s->source->asConst()) {
- if (m->type == V4IR::Member::MemberOfQObject) {
+ if (m->property) {
setQObjectProperty(s->source, m->base, m->property->coreIndex);
return;
} else {
diff --git a/src/qml/compiler/qv4jsir.cpp b/src/qml/compiler/qv4jsir.cpp
index dc982e72cc..949a73432d 100644
--- a/src/qml/compiler/qv4jsir.cpp
+++ b/src/qml/compiler/qv4jsir.cpp
@@ -550,7 +550,7 @@ void Member::dump(QTextStream &out) const
{
base->dump(out);
out << '.' << *name;
- if (type == MemberOfQObject)
+ if (property)
out << " (meta-property " << property->coreIndex << " <" << QMetaType::typeName(property->propType) << ">)";
}
@@ -834,10 +834,10 @@ Expr *BasicBlock::SUBSCRIPT(Expr *base, Expr *index)
return e;
}
-Expr *BasicBlock::MEMBER(Expr *base, const QString *name)
+Expr *BasicBlock::MEMBER(Expr *base, const QString *name, QQmlPropertyData *property)
{
Member*e = function->New<Member>();
- e->init(base, name);
+ e->init(base, name, property);
return e;
}
@@ -848,13 +848,6 @@ Expr *BasicBlock::QML_CONTEXT_MEMBER(Expr *base, const QString *id, int memberIn
return e;
}
-Expr *BasicBlock::QML_QOBJECT_PROPERTY(Expr *base, const QString *id, QQmlPropertyData *property)
-{
- Member*e = function->New<Member>();
- e->initMetaProperty(base, id, property);
- return e;
-}
-
Stmt *BasicBlock::EXP(Expr *expr)
{
if (isTerminated())
@@ -1042,11 +1035,9 @@ void CloneExpr::visitSubscript(Subscript *e)
void CloneExpr::visitMember(Member *e)
{
if (e->type == Member::MemberByName)
- cloned = block->MEMBER(clone(e->base), e->name);
+ cloned = block->MEMBER(clone(e->base), e->name, e->property);
else if (e->type == Member::MemberOfQmlContext)
cloned = block->QML_CONTEXT_MEMBER(clone(e->base), e->name, e->memberIndex);
- else if (e->type == Member::MemberOfQObject)
- cloned = block->QML_QOBJECT_PROPERTY(clone(e->base), e->name, e->property);
else
Q_ASSERT(!"Unimplemented!");
}
diff --git a/src/qml/compiler/qv4jsir_p.h b/src/qml/compiler/qv4jsir_p.h
index cb8e9d9195..5fd58acba4 100644
--- a/src/qml/compiler/qv4jsir_p.h
+++ b/src/qml/compiler/qv4jsir_p.h
@@ -541,8 +541,7 @@ struct Member: Expr {
enum MemberType {
MemberByName,
// QML extensions
- MemberOfQmlContext, // lookup in context's id values
- MemberOfQObject
+ MemberOfQmlContext // lookup in context's id values
};
MemberType type;
@@ -551,12 +550,13 @@ struct Member: Expr {
int memberIndex; // used if type == MemberOfQmlContext
QQmlPropertyData *property;
- void init(Expr *base, const QString *name)
+ void init(Expr *base, const QString *name, QQmlPropertyData *property = 0)
{
this->type = MemberByName;
this->base = base;
this->name = name;
- this->property = 0;
+ this->memberIndex = -1;
+ this->property = property;
}
void initQmlContextMember(Expr *base, const QString *name, int memberIndex)
@@ -568,15 +568,6 @@ struct Member: Expr {
this->property = 0;
}
- void initMetaProperty(Expr *base, const QString *name, QQmlPropertyData *property)
- {
- this->type = MemberOfQObject;
- this->base = base;
- this->name = name;
- this->memberIndex = -1;
- this->property = property;
- }
-
virtual void accept(ExprVisitor *v) { v->visitMember(this); }
virtual bool isLValue() { return type != MemberOfQmlContext; }
virtual Member *asMember() { return this; }
@@ -880,9 +871,8 @@ struct BasicBlock {
Expr *CALL(Expr *base, ExprList *args = 0);
Expr *NEW(Expr *base, ExprList *args = 0);
Expr *SUBSCRIPT(Expr *base, Expr *index);
- Expr *MEMBER(Expr *base, const QString *name);
+ Expr *MEMBER(Expr *base, const QString *name, QQmlPropertyData *property = 0);
Expr *QML_CONTEXT_MEMBER(Expr *base, const QString *id, int memberIndex);
- Expr *QML_QOBJECT_PROPERTY(Expr *base, const QString *id, QQmlPropertyData *property);
Stmt *EXP(Expr *expr);
diff --git a/src/qml/compiler/qv4ssa.cpp b/src/qml/compiler/qv4ssa.cpp
index ab2334d7dc..1f6ace359c 100644
--- a/src/qml/compiler/qv4ssa.cpp
+++ b/src/qml/compiler/qv4ssa.cpp
@@ -1907,7 +1907,7 @@ protected:
// when writing undefined to them, and an exception is thrown when they're missing
// a reset function.
const Member *targetMember = s->target->asMember();
- const bool inhibitConversion = targetMember && targetMember->type == Member::MemberOfQObject && targetMember->property;
+ const bool inhibitConversion = targetMember && targetMember->property;
run(s->source, s->target->type, !inhibitConversion);
}