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); |