diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-05-12 22:54:27 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-05-13 12:55:32 +0000 |
commit | fbca1b7942fc58d5573c6ec95295c2d4472b80ff (patch) | |
tree | 25bc99ba2cc4b4c2742c3b799707415862b840dc /src/qml/jit | |
parent | 9e379e8fb72305aff1fb6758c23198c8b30829ac (diff) |
Fix array destructuring
Array destructuring should use iterator objects, not integer
indexes.
Change-Id: I769bb1d63246da6bc45233f7a6e9a8e5ddc53a4d
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jit')
-rw-r--r-- | src/qml/jit/qv4jit.cpp | 5 | ||||
-rw-r--r-- | src/qml/jit/qv4jit_p.h | 2 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/qml/jit/qv4jit.cpp b/src/qml/jit/qv4jit.cpp index 77024176ae..e0a5a0590c 100644 --- a/src/qml/jit/qv4jit.cpp +++ b/src/qml/jit/qv4jit.cpp @@ -714,10 +714,11 @@ void BaselineJIT::generate_GetIterator(int iterator) as->checkException(); } -void BaselineJIT::generate_IteratorNext() +void BaselineJIT::generate_IteratorNext(int returnUndefinedWhenDone) { as->saveAccumulatorInFrame(); - as->prepareCallWithArgCount(2); + as->prepareCallWithArgCount(3); + as->passInt32AsArg(returnUndefinedWhenDone, 2); as->passAccumulatorAsArg(1); as->passEngineAsArg(0); JIT_GENERATE_RUNTIME_CALL(Runtime::method_iteratorNext, Assembler::ResultInAccumulator); diff --git a/src/qml/jit/qv4jit_p.h b/src/qml/jit/qv4jit_p.h index d395ea908c..942b96071f 100644 --- a/src/qml/jit/qv4jit_p.h +++ b/src/qml/jit/qv4jit_p.h @@ -186,7 +186,7 @@ public: void generate_PopScriptContext() override; void generate_PopContext(int reg) override; void generate_GetIterator(int iterator) override; - void generate_IteratorNext() override; + void generate_IteratorNext(int returnUndefinedWhenDone) override; void generate_DeleteMember(int member, int base) override; void generate_DeleteSubscript(int base, int index) override; void generate_DeleteName(int name) override; |