diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-11-02 17:40:35 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-25 22:04:42 +0100 |
commit | 62c906059516bb829f05073096fd3e12f5103fba (patch) | |
tree | 92176ac795e64dff690ed100f61935f301189871 /src/qml/compiler | |
parent | 71e498adc4d8af11205de2eeefc50ab9eb1ad497 (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.cpp | 4 | ||||
-rw-r--r-- | src/qml/compiler/qv4isel_p.cpp | 4 | ||||
-rw-r--r-- | src/qml/compiler/qv4jsir.cpp | 17 | ||||
-rw-r--r-- | src/qml/compiler/qv4jsir_p.h | 20 | ||||
-rw-r--r-- | src/qml/compiler/qv4ssa.cpp | 2 |
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); } |