Bug 1331092 - Part 7: Implement Async Generator yield*.

Tag #1287
This commit is contained in:
Gaming4JC 2019-12-14 09:16:32 -05:00 committed by Roy Tam
commit 142e8bf444
14 changed files with 451 additions and 43 deletions

View file

@ -1940,7 +1940,6 @@ CASE(EnableInterruptsPseudoOpcode)
CASE(JSOP_NOP)
CASE(JSOP_NOP_DESTRUCTURING)
CASE(JSOP_UNUSED126)
CASE(JSOP_UNUSED210)
CASE(JSOP_UNUSED211)
CASE(JSOP_TRY_DESTRUCTURING_ITERCLOSE)
CASE(JSOP_UNUSED221)
@ -3596,6 +3595,17 @@ CASE(JSOP_TOASYNCGEN)
}
END_CASE(JSOP_TOASYNCGEN)
CASE(JSOP_TOASYNCITER)
{
ReservedRooted<JSObject*> iter(&rootObject1, &REGS.sp[-1].toObject());
JSObject* asyncIter = CreateAsyncFromSyncIterator(cx, iter);
if (!asyncIter)
goto error;
REGS.sp[-1].setObject(*asyncIter);
}
END_CASE(JSOP_TOASYNCITER)
CASE(JSOP_SETFUNNAME)
{
MOZ_ASSERT(REGS.stackDepth() >= 2);
@ -5139,6 +5149,10 @@ js::ThrowCheckIsObject(JSContext* cx, CheckIsObjectKind kind)
case CheckIsObjectKind::GetIterator:
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr, JSMSG_GET_ITER_RETURNED_PRIMITIVE);
break;
case CheckIsObjectKind::GetAsyncIterator:
JS_ReportErrorNumberASCII(cx, GetErrorMessage, nullptr,
JSMSG_GET_ASYNC_ITER_RETURNED_PRIMITIVE);
break;
default:
MOZ_CRASH("Unknown kind");
}