Index: src/parsing/parser-base.h |
diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h |
index 518ef91db8cab89a8de7bf20db8b959664d397d7..2b07045aebbfdf5b6cb12c4fb5d8a951012a4fca 100644 |
--- a/src/parsing/parser-base.h |
+++ b/src/parsing/parser-base.h |
@@ -125,7 +125,7 @@ struct FormalParametersBase { |
// typedef Impl; |
// // TODO(nikolaos): this one will probably go away, as it is |
// // not related to pure parsing. |
-// typedef GeneratorVariable; |
+// typedef Variable; |
// // Return types for traversing functions. |
// typedef Identifier; |
// typedef Expression; |
@@ -405,16 +405,24 @@ class ParserBase { |
FunctionKind kind() const { return kind_; } |
FunctionState* outer() const { return outer_function_state_; } |
- void set_generator_object_variable( |
- typename Types::GeneratorVariable* variable) { |
+ void set_generator_object_variable(typename Types::Variable* variable) { |
DCHECK(variable != NULL); |
DCHECK(is_resumable()); |
generator_object_variable_ = variable; |
} |
- typename Types::GeneratorVariable* generator_object_variable() const { |
+ typename Types::Variable* generator_object_variable() const { |
return generator_object_variable_; |
} |
+ void set_promise_variable(typename Types::Variable* variable) { |
+ DCHECK(variable != NULL); |
+ DCHECK(is_async_function()); |
+ promise_variable_ = variable; |
+ } |
+ typename Types::Variable* promise_variable() const { |
+ return promise_variable_; |
+ } |
+ |
const ZoneList<DestructuringAssignment>& |
destructuring_assignments_to_rewrite() const { |
return destructuring_assignments_to_rewrite_; |
@@ -490,6 +498,9 @@ class ParserBase { |
// is used by yield expressions and return statements. It is not necessary |
// for generator functions to have this variable set. |
Variable* generator_object_variable_; |
+ // For async functions, this variable holds a temporary for the Promise |
+ // being created as output of the async function. |
+ Variable* promise_variable_; |
FunctionState** function_state_stack_; |
FunctionState* outer_function_state_; |
@@ -1429,7 +1440,8 @@ ParserBase<Impl>::FunctionState::FunctionState( |
next_materialized_literal_index_(0), |
expected_property_count_(0), |
kind_(kind), |
- generator_object_variable_(NULL), |
+ generator_object_variable_(nullptr), |
+ promise_variable_(nullptr), |
function_state_stack_(function_state_stack), |
outer_function_state_(*function_state_stack), |
destructuring_assignments_to_rewrite_(16, scope->zone()), |