aboutsummaryrefslogtreecommitdiffstats
path: root/src/qml/jit
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2018-05-14 12:36:16 +0200
committerLars Knoll <lars.knoll@qt.io>2018-05-14 19:32:34 +0000
commitd8eade23bc4fdd7040204f4374ef26975b94ea0a (patch)
tree19542aa2a8ddf285a80f3fe528913cd630a7f601 /src/qml/jit
parent16288498cf0e1eb389ac3acdce86eb74cc69e67a (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.cpp4
-rw-r--r--src/qml/jit/qv4jit_p.h2
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;