| Index: src/parsing/parser-base.h
|
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
|
| index 4774e04b2481ce6925585ab53251852fe2398849..d7d6b5b16268fc40e39bb6569529fec871bf5e83 100644
|
| --- a/src/parsing/parser-base.h
|
| +++ b/src/parsing/parser-base.h
|
| @@ -206,6 +206,7 @@ class ParserBase : public Traits {
|
| extension_(extension),
|
| fni_(nullptr),
|
| ast_value_factory_(ast_value_factory),
|
| + ast_node_factory_(ast_value_factory),
|
| log_(log),
|
| mode_(PARSE_EAGERLY), // Lazy mode must be set explicitly.
|
| parsing_module_(false),
|
| @@ -372,8 +373,7 @@ class ParserBase : public Traits {
|
| class FunctionState final : public ScopeState {
|
| public:
|
| FunctionState(FunctionState** function_state_stack,
|
| - ScopeState** scope_stack, Scope* scope, FunctionKind kind,
|
| - typename Traits::Type::Factory* factory);
|
| + ScopeState** scope_stack, Scope* scope, FunctionKind kind);
|
| ~FunctionState();
|
|
|
| int NextMaterializedLiteralIndex() {
|
| @@ -421,8 +421,6 @@ class ParserBase : public Traits {
|
| return generator_object_variable_;
|
| }
|
|
|
| - typename Traits::Type::Factory* factory() { return factory_; }
|
| -
|
| const ZoneList<DestructuringAssignment>&
|
| destructuring_assignments_to_rewrite() const {
|
| return destructuring_assignments_to_rewrite_;
|
| @@ -514,8 +512,6 @@ class ParserBase : public Traits {
|
|
|
| ZoneList<typename ExpressionClassifier::Error> reported_errors_;
|
|
|
| - typename Traits::Type::Factory* factory_;
|
| -
|
| // If true, the next (and immediately following) function literal is
|
| // preceded by a parenthesis.
|
| bool next_function_is_parenthesized_;
|
| @@ -839,9 +835,7 @@ class ParserBase : public Traits {
|
| return Token::Precedence(token);
|
| }
|
|
|
| - typename Traits::Type::Factory* factory() {
|
| - return function_state_->factory();
|
| - }
|
| + typename Traits::Type::Factory* factory() { return &ast_node_factory_; }
|
|
|
| LanguageMode language_mode() { return scope()->language_mode(); }
|
| bool is_generator() const { return function_state_->is_generator(); }
|
| @@ -1227,6 +1221,7 @@ class ParserBase : public Traits {
|
| v8::Extension* extension_;
|
| FuncNameInferrer* fni_;
|
| AstValueFactory* ast_value_factory_; // Not owned.
|
| + typename Traits::Type::Factory ast_node_factory_;
|
| ParserRecorder* log_;
|
| Mode mode_;
|
| bool parsing_module_;
|
| @@ -1253,7 +1248,7 @@ class ParserBase : public Traits {
|
| template <class Traits>
|
| ParserBase<Traits>::FunctionState::FunctionState(
|
| FunctionState** function_state_stack, ScopeState** scope_stack,
|
| - Scope* scope, FunctionKind kind, typename Traits::Type::Factory* factory)
|
| + Scope* scope, FunctionKind kind)
|
| : ScopeState(scope_stack, scope),
|
| next_materialized_literal_index_(0),
|
| expected_property_count_(0),
|
| @@ -1269,7 +1264,6 @@ ParserBase<Traits>::FunctionState::FunctionState(
|
| return_expr_context_(ReturnExprContext::kInsideValidBlock),
|
| non_patterns_to_rewrite_(0, scope->zone()),
|
| reported_errors_(16, scope->zone()),
|
| - factory_(factory),
|
| next_function_is_parenthesized_(false),
|
| this_function_is_parenthesized_(false) {
|
| *function_state_stack = this;
|
| @@ -3385,10 +3379,8 @@ ParserBase<Traits>::ParseArrowFunctionLiteral(
|
|
|
| FunctionKind arrow_kind = is_async ? kAsyncArrowFunction : kArrowFunction;
|
| {
|
| - typename Traits::Type::Factory function_factory(ast_value_factory());
|
| FunctionState function_state(&function_state_, &scope_state_,
|
| - formal_parameters.scope, arrow_kind,
|
| - &function_factory);
|
| + formal_parameters.scope, arrow_kind);
|
|
|
| function_state.SkipMaterializedLiterals(
|
| formal_parameters.materialized_literals_count);
|
|
|