aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/compiler/qqmlirbuilder.cpp
diff options
context:
space:
mode:
authorErik Verbruggen <erik.verbruggen@qt.io>2017-06-30 10:33:37 +0200
committerLars Knoll <lars.knoll@qt.io>2017-06-30 08:57:14 +0000
commitb31ac3e4870ac73034e678fbdd8bca04de282dfc (patch)
tree3c30c389b75691c500383c15f998fb01607a1739 /src/qml/compiler/qqmlirbuilder.cpp
parent6f1b4931d75993227def93c06935a933e8692f0b (diff)
Re-add missing captureRequired flag
Change-Id: I79b49655a55f98906723351ef7dd79099697bea1 Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/qml/compiler/qqmlirbuilder.cpp')
-rw-r--r--src/qml/compiler/qqmlirbuilder.cpp40
1 files changed, 8 insertions, 32 deletions
diff --git a/src/qml/compiler/qqmlirbuilder.cpp b/src/qml/compiler/qqmlirbuilder.cpp
index 10f1b53ff3..fa5dbdeda7 100644
--- a/src/qml/compiler/qqmlirbuilder.cpp
+++ b/src/qml/compiler/qqmlirbuilder.cpp
@@ -1969,16 +1969,6 @@ QQmlJS::Codegen::Reference JSCodeGen::fallbackNameLookup(const QString &name)
load.result = result.asLValue();
bytecodeGenerator->addInstruction(load);
result.isReadonly = true;
-
-#if 0
- if (mapping.type) {
- result->memberResolver = _function->New<QV4::IR::MemberExpressionResolver>();
- result->memberResolver->owner = _function;
- initMetaObjectResolver(result->memberResolver, mapping.type);
- result->memberResolver->flags |= AllPropertiesAreFinal;
- }
- result->isReadOnly = true; // don't allow use as lvalue
-#endif
return result;
}
}
@@ -1990,13 +1980,6 @@ QQmlJS::Codegen::Reference JSCodeGen::fallbackNameLookup(const QString &name)
Reference imports = Reference::fromTemp(this, _importedScriptsTemp);
return Reference::fromSubscript(imports, Reference::fromConst(this, QV4::Encode(r.scriptIndex)));
} else if (r.type) {
-#if 0
- typeName->freeOfSideEffects = true;
- result = _block->TEMP(result->index);
- result->memberResolver = _function->New<QV4::IR::MemberExpressionResolver>();
- result->memberResolver->owner = _function;
- initQmlTypeResolver(result->memberResolver, r.type);
-#endif
if (r.type->isCompositeSingleton()) {
Reference result = Reference::fromTemp(this);
Instruction::LoadQmlSingleton load;
@@ -2005,21 +1988,10 @@ QQmlJS::Codegen::Reference JSCodeGen::fallbackNameLookup(const QString &name)
bytecodeGenerator->addInstruction(load);
return result;
}
- Reference result = Reference::fromName(this, name);
- return result;
+ return Reference::fromName(this, name);
} else {
Q_ASSERT(r.importNamespace);
- Reference result = Reference::fromName(this, name);
-#if 0
- QV4::IR::Name *namespaceName = _block->NAME(name, line, col);
- namespaceName->freeOfSideEffects = true;
- QV4::IR::Temp *result = _block->TEMP(_block->newTemp());
- result->memberResolver = _function->New<QV4::IR::MemberExpressionResolver>();
- result->memberResolver->owner = _function;
- initImportNamespaceResolver(result->memberResolver, imports, r.importNamespace);
- _block->MOVE(result, namespaceName);
-#endif
- return result;
+ return Reference::fromName(this, name);
}
}
}
@@ -2029,7 +2001,9 @@ QQmlJS::Codegen::Reference JSCodeGen::fallbackNameLookup(const QString &name)
if (!data)
return Reference::fromName(this, name);
Reference base = Reference::fromTemp(this, _qmlContextTemp);
- return Reference::fromQmlScopeObject(base, data->coreIndex(), data->notifyIndex());
+ bool requiresCapture = !data->isConstant() && _function->isQmlBinding;
+ return Reference::fromQmlScopeObject(base, data->coreIndex(), data->notifyIndex(),
+ requiresCapture);
}
if (_contextObject) {
@@ -2037,7 +2011,9 @@ QQmlJS::Codegen::Reference JSCodeGen::fallbackNameLookup(const QString &name)
if (!data)
return Reference::fromName(this, name);
Reference base = Reference::fromTemp(this, _qmlContextTemp);
- return Reference::fromQmlContextObject(base, data->coreIndex(), data->notifyIndex());
+ bool requiresCapture = !data->isConstant() && _function->isQmlBinding;
+ return Reference::fromQmlContextObject(base, data->coreIndex(), data->notifyIndex(),
+ requiresCapture);
}
#else
Q_UNUSED(name)