diff options
author | Erik Verbruggen <erik.verbruggen@qt.io> | 2017-06-30 10:33:37 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2017-06-30 08:57:14 +0000 |
commit | b31ac3e4870ac73034e678fbdd8bca04de282dfc (patch) | |
tree | 3c30c389b75691c500383c15f998fb01607a1739 /src/qml/compiler/qqmlirbuilder.cpp | |
parent | 6f1b4931d75993227def93c06935a933e8692f0b (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.cpp | 40 |
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) |