From ff5bc526b4868aef9fb3a551afc5636b308a3d83 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Thu, 31 May 2018 16:06:34 +0200 Subject: Add support for yield* Change-Id: I5b054b59519ed825459a5b0b0a7cd2c6fc8a3797 Reviewed-by: Simon Hausmann --- src/qml/jit/qv4baselinejit.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/qml/jit/qv4baselinejit.cpp') diff --git a/src/qml/jit/qv4baselinejit.cpp b/src/qml/jit/qv4baselinejit.cpp index baaab75158..1e77c1a001 100644 --- a/src/qml/jit/qv4baselinejit.cpp +++ b/src/qml/jit/qv4baselinejit.cpp @@ -400,6 +400,12 @@ void BaselineJIT::generate_Yield() Q_UNREACHABLE(); } +void BaselineJIT::generate_YieldStar() +{ + // ##### + Q_UNREACHABLE(); +} + void BaselineJIT::generate_Resume(int) { // ##### @@ -694,6 +700,18 @@ void BaselineJIT::generate_IteratorNext(int value, int done) as->checkException(); } +void BaselineJIT::generate_IteratorNextForYieldStar(int iterator, int object) +{ + as->saveAccumulatorInFrame(); + as->prepareCallWithArgCount(4); + as->passJSSlotAsArg(object, 3); + as->passJSSlotAsArg(iterator, 2); + as->passAccumulatorAsArg(1); + as->passEngineAsArg(0); + BASELINEJIT_GENERATE_RUNTIME_CALL(Runtime::method_iteratorNextForYieldStar, CallResultDestination::InAccumulator); + as->checkException(); +} + void BaselineJIT::generate_IteratorClose(int done) { as->saveAccumulatorInFrame(); -- cgit v1.2.3