Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Unified Diff: src/parsing/parser.cc

Issue 2317383002: Async/await Promise dependency graph (Closed)
Patch Set: let to var Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/parsing/parser.cc
diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
index cd34d35423e66085ffa64ccd1cd826d4fdeeee63..f5f39556a7e6b979306e820f0f2f76be5652df92 100644
--- a/src/parsing/parser.cc
+++ b/src/parsing/parser.cc
@@ -4551,7 +4551,7 @@ Expression* Parser::RewriteAwaitExpression(Expression* value, int await_pos) {
// yield do {
// promise_tmp = .promise;
// tmp = <operand>;
- // %AsyncFunctionAwait(.generator_object, tmp);
+ // %AsyncFunctionAwait(.generator_object, tmp, promise_tmp);
// promise_tmp
// }
// The value of the expression is returned to the caller of the async
@@ -4596,11 +4596,13 @@ Expression* Parser::RewriteAwaitExpression(Expression* value, int await_pos) {
zone());
ZoneList<Expression*>* async_function_await_args =
- new (zone()) ZoneList<Expression*>(2, zone());
+ new (zone()) ZoneList<Expression*>(3, zone());
Expression* generator_object =
factory()->NewVariableProxy(generator_object_variable);
async_function_await_args->Add(generator_object, zone());
async_function_await_args->Add(factory()->NewVariableProxy(temp_var), zone());
+ async_function_await_args->Add(factory()->NewVariableProxy(promise_temp_var),
+ zone());
// The parser emits calls to AsyncFunctionAwaitCaught, but the
// AstNumberingVisitor will rewrite this to AsyncFunctionAwaitUncaught

Powered by Google App Engine
This is Rietveld 408576698