Bug 1331092 - Part 11: Await on the innerResult.value when innerResult.done is true in yield*.

Tag #1287
This commit is contained in:
Gaming4JC 2019-12-14 09:25:14 -05:00 committed by Roy Tam
commit 9cecb72f37

View file

@ -8896,6 +8896,10 @@ BytecodeEmitter::emitYieldStar(ParseNode* iter)
return false;
if (!emitAtomOp(cx->names().value, JSOP_GETPROP)) // ITER OLDRESULT FTYPE FVALUE VALUE
return false;
if (isAsyncGenerator) {
if (!emitAwait()) // ITER OLDRESULT FTYPE FVALUE VALUE
return false;
}
if (!emitPrepareIteratorResult()) // ITER OLDRESULT FTYPE FVALUE VALUE RESULT
return false;
if (!emit1(JSOP_SWAP)) // ITER OLDRESULT FTYPE FVALUE RESULT VALUE
@ -8988,6 +8992,11 @@ BytecodeEmitter::emitYieldStar(ParseNode* iter)
if (!emitAtomOp(cx->names().value, JSOP_GETPROP)) // VALUE
return false;
if (isAsyncGenerator) {
if (!emitAwait()) // VALUE
return false;
}
MOZ_ASSERT(this->stackDepth == startDepth - 1);
return true;