diff options
author | Simon Hausmann <simon.hausmann@qt.io> | 2016-08-26 16:11:38 +0200 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@qt.io> | 2016-08-30 13:48:19 +0000 |
commit | 12d8004874c3f69ddd5aa7622da309c46930336b (patch) | |
tree | e0bdbb130381ac35469494734c2793ddd153ab8e /src/qml/jit/qv4isel_masm.cpp | |
parent | bb26b8ea7b973cf53099a35028780309750b10c7 (diff) |
Fix binding dependencies when used in together with functions
When a function called from a binding would access a scope or context
property, we would end up registering those dependencies as permanent
dependencies in the expression and set m_permanentDependenciesRegistered
to true. Then after the binding evaluation itself, we would not end up
registering the real binding's permanent dependencies.
Change-Id: I3b6c1c181aa064d535362c736b5b2bbc4f576ba9
Done-with: Erik
Task-number: QTBUG-54394
Reviewed-by: Erik Verbruggen <erik.verbruggen@qt.io>
Diffstat (limited to 'src/qml/jit/qv4isel_masm.cpp')
-rw-r--r-- | src/qml/jit/qv4isel_masm.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/jit/qv4isel_masm.cpp b/src/qml/jit/qv4isel_masm.cpp index 737ff389fa..d06d6907e5 100644 --- a/src/qml/jit/qv4isel_masm.cpp +++ b/src/qml/jit/qv4isel_masm.cpp @@ -737,12 +737,12 @@ void InstructionSelection::getProperty(IR::Expr *base, const QString &name, IR:: } } -void InstructionSelection::getQmlContextProperty(IR::Expr *base, IR::Member::MemberKind kind, int index, IR::Expr *target) +void InstructionSelection::getQmlContextProperty(IR::Expr *base, IR::Member::MemberKind kind, int index, bool captureRequired, IR::Expr *target) { if (kind == IR::Member::MemberOfQmlScopeObject) - generateRuntimeCall(target, getQmlScopeObjectProperty, Assembler::EngineRegister, Assembler::PointerToValue(base), Assembler::TrustedImm32(index)); + generateRuntimeCall(target, getQmlScopeObjectProperty, Assembler::EngineRegister, Assembler::PointerToValue(base), Assembler::TrustedImm32(index), Assembler::TrustedImm32(captureRequired)); else if (kind == IR::Member::MemberOfQmlContextObject) - generateRuntimeCall(target, getQmlContextObjectProperty, Assembler::EngineRegister, Assembler::PointerToValue(base), Assembler::TrustedImm32(index)); + generateRuntimeCall(target, getQmlContextObjectProperty, Assembler::EngineRegister, Assembler::PointerToValue(base), Assembler::TrustedImm32(index), Assembler::TrustedImm32(captureRequired)); else if (kind == IR::Member::MemberOfIdObjectsArray) generateRuntimeCall(target, getQmlIdObject, Assembler::EngineRegister, Assembler::PointerToValue(base), Assembler::TrustedImm32(index)); else |