aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qv4jsir.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-11-02 18:48:18 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-25 22:04:42 +0100
commita41764cafbc85c271edde8d09eae46798ccdcb8d (patch)
treecb027ea57c6f764bdc277bf899caa3f8a866647b /src/qml/compiler/qv4jsir.cpp
parent62c906059516bb829f05073096fd3e12f5103fba (diff)
IR Cleanup, resolve ID objects through array subscripts
...instead of a special MEMBER type. This allows removing the type member from V4IR::Member altogether (and thus unshadow from V4IR::Expr::type). By not requiring the base of a id lookup member expression to be a NAME, we can also speed up repeated id lookups by fetching the id object array wrapper only once per function. Change-Id: I3e9b8f498d32ace4a0cc2254f49e02ecc124f79c Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/compiler/qv4jsir.cpp')
-rw-r--r--src/qml/compiler/qv4jsir.cpp18
1 files changed, 3 insertions, 15 deletions
diff --git a/src/qml/compiler/qv4jsir.cpp b/src/qml/compiler/qv4jsir.cpp
index 949a73432d..79b963f400 100644
--- a/src/qml/compiler/qv4jsir.cpp
+++ b/src/qml/compiler/qv4jsir.cpp
@@ -433,8 +433,8 @@ static const char *builtin_to_string(Name::Builtin b)
return "builtin_setup_argument_object";
case V4IR::Name::builtin_convert_this_to_object:
return "builtin_convert_this_to_object";
- case V4IR::Name::builtin_qml_id_scope:
- return "builtin_qml_id_scope";
+ case V4IR::Name::builtin_qml_id_array:
+ return "builtin_qml_id_array";
case V4IR::Name::builtin_qml_imported_scripts_object:
return "builtin_qml_imported_scripts_object";
case V4IR::Name::builtin_qml_scope_object:
@@ -841,13 +841,6 @@ Expr *BasicBlock::MEMBER(Expr *base, const QString *name, QQmlPropertyData *prop
return e;
}
-Expr *BasicBlock::QML_CONTEXT_MEMBER(Expr *base, const QString *id, int memberIndex)
-{
- Member*e = function->New<Member>();
- e->initQmlContextMember(base, id, memberIndex);
- return e;
-}
-
Stmt *BasicBlock::EXP(Expr *expr)
{
if (isTerminated())
@@ -1034,12 +1027,7 @@ void CloneExpr::visitSubscript(Subscript *e)
void CloneExpr::visitMember(Member *e)
{
- if (e->type == Member::MemberByName)
- 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
- Q_ASSERT(!"Unimplemented!");
+ cloned = block->MEMBER(clone(e->base), e->name, e->property);
}
} // end of namespace IR