diff options
author | Lars Knoll <lars.knoll@qt.io> | 2018-05-14 12:36:16 +0200 |
---|---|---|
committer | Lars Knoll <lars.knoll@qt.io> | 2018-05-14 19:32:34 +0000 |
commit | d8eade23bc4fdd7040204f4374ef26975b94ea0a (patch) | |
tree | 19542aa2a8ddf285a80f3fe528913cd630a7f601 /src/qml/jit | |
parent | 16288498cf0e1eb389ac3acdce86eb74cc69e67a (diff) |
Refactor InteratorNext instruction
The instruction now writes the value into a stack slot,
and returns the done state in the accumulator. This should
make it easier to implement the IteratorClose functionality
required by the spec.
Change-Id: I8cc497c54b0d044bd3c68a5a1b774eea8b2740ef
Reviewed-by: Simon Hausmann <simon.hausmann@qt.io>
Diffstat (limited to 'src/qml/jit')
-rw-r--r-- | src/qml/jit/qv4jit.cpp | 4 | ||||
-rw-r--r-- | src/qml/jit/qv4jit_p.h | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/src/qml/jit/qv4jit.cpp b/src/qml/jit/qv4jit.cpp index ff139e6645..a480cfbc30 100644 --- a/src/qml/jit/qv4jit.cpp +++ b/src/qml/jit/qv4jit.cpp @@ -714,11 +714,11 @@ void BaselineJIT::generate_GetIterator(int iterator) as->checkException(); } -void BaselineJIT::generate_IteratorNext(int returnUndefinedWhenDone) +void BaselineJIT::generate_IteratorNext(int value) { as->saveAccumulatorInFrame(); as->prepareCallWithArgCount(3); - as->passInt32AsArg(returnUndefinedWhenDone, 2); + as->passRegAsArg(value, 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 d57e043bc2..fa4a367e91 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(int returnUndefinedWhenDone) override; + void generate_IteratorNext(int value) override; void generate_DestructureRestElement() override; void generate_DeleteMember(int member, int base) override; void generate_DeleteSubscript(int base, int index) override; |