| Index: src/parsing/parser-base.h
|
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
|
| index ad336adcd6b2110e1fa7da79b927e15668c87ff4..07364b3d7ab4592328e17efc789a93b70a1a0ce8 100644
|
| --- a/src/parsing/parser-base.h
|
| +++ b/src/parsing/parser-base.h
|
| @@ -410,17 +410,6 @@ class ParserBase {
|
| return ScopeState::scope()->AsDeclarationScope();
|
| }
|
|
|
| - int NextMaterializedLiteralIndex() {
|
| - return next_materialized_literal_index_++;
|
| - }
|
| - int materialized_literal_count() {
|
| - return next_materialized_literal_index_;
|
| - }
|
| -
|
| - void SkipMaterializedLiterals(int count) {
|
| - next_materialized_literal_index_ += count;
|
| - }
|
| -
|
| void AddProperty() { expected_property_count_++; }
|
| int expected_property_count() { return expected_property_count_; }
|
|
|
| @@ -1717,8 +1706,6 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseRegExpLiteral(
|
| return impl()->EmptyExpression();
|
| }
|
|
|
| - function_state_->NextMaterializedLiteralIndex();
|
| -
|
| IdentifierT js_pattern = impl()->GetNextSymbol();
|
| Maybe<RegExp::Flags> flags = scanner()->ScanRegExpFlags();
|
| if (flags.IsNothing()) {
|
| @@ -2007,9 +1994,6 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseArrayLiteral(
|
| }
|
| Expect(Token::RBRACK, CHECK_OK);
|
|
|
| - // Update the scope information before the pre-parsing bailout.
|
| - function_state_->NextMaterializedLiteralIndex();
|
| -
|
| ExpressionT result =
|
| factory()->NewArrayLiteral(values, first_spread_index, pos);
|
| if (first_spread_index >= 0) {
|
| @@ -2357,7 +2341,6 @@ ParserBase<Impl>::ParseClassFieldForInitializer(bool has_initializer,
|
| body->Add(factory()->NewReturnStatement(value, kNoSourcePosition), zone());
|
| FunctionLiteralT function_literal = factory()->NewFunctionLiteral(
|
| impl()->EmptyIdentifierString(), initializer_scope, body,
|
| - initializer_state.materialized_literal_count(),
|
| initializer_state.expected_property_count(), 0, 0,
|
| FunctionLiteral::kNoDuplicateParameters,
|
| FunctionLiteral::kAnonymousExpression, default_eager_compile_hint_,
|
| @@ -2608,9 +2591,6 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseObjectLiteral(
|
| }
|
| Expect(Token::RBRACE, CHECK_OK);
|
|
|
| - // Computation of literal_index must happen before pre parse bailout.
|
| - function_state_->NextMaterializedLiteralIndex();
|
| -
|
| // In pattern rewriter, we rewrite rest property to call out to a
|
| // runtime function passing all the other properties as arguments to
|
| // this runtime function. Here, we make sure that the number of
|
| @@ -2636,7 +2616,6 @@ typename ParserBase<Impl>::ExpressionListT ParserBase<Impl>::ParseArguments(
|
| Expect(Token::LPAREN, CHECK_OK_CUSTOM(NullExpressionList));
|
| bool done = (peek() == Token::RPAREN);
|
| bool was_unspread = false;
|
| - int unspread_sequences_count = 0;
|
| int spread_count = 0;
|
| while (!done) {
|
| int start_pos = peek_position();
|
| @@ -2657,14 +2636,11 @@ typename ParserBase<Impl>::ExpressionListT ParserBase<Impl>::ParseArguments(
|
| }
|
| result->Add(argument, zone_);
|
|
|
| - // unspread_sequences_count is the number of sequences of parameters which
|
| - // are not prefixed with a spread '...' operator.
|
| if (is_spread) {
|
| was_unspread = false;
|
| spread_count++;
|
| } else if (!was_unspread) {
|
| was_unspread = true;
|
| - unspread_sequences_count++;
|
| }
|
|
|
| if (result->length() > Code::kMaxArguments) {
|
| @@ -2693,16 +2669,6 @@ typename ParserBase<Impl>::ExpressionListT ParserBase<Impl>::ParseArguments(
|
| if (maybe_arrow) {
|
| impl()->RewriteNonPattern(CHECK_OK_CUSTOM(NullExpressionList));
|
| }
|
| - if (spread_arg.IsValid()) {
|
| - // Unspread parameter sequences are translated into array literals in the
|
| - // parser. Ensure that the number of materialized literals matches between
|
| - // the parser and preparser
|
| - if (was_unspread || spread_count > 1) {
|
| - // There was more than one spread, or the spread was not the final
|
| - // argument, so the parser will materialize literals.
|
| - impl()->MaterializeUnspreadArgumentsLiterals(unspread_sequences_count);
|
| - }
|
| - }
|
| }
|
|
|
| return result;
|
| @@ -4160,7 +4126,6 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| }
|
|
|
| StatementListT body = impl()->NullStatementList();
|
| - int materialized_literal_count = -1;
|
| int expected_property_count = -1;
|
| int function_literal_id = GetNextFunctionLiteralId();
|
|
|
| @@ -4179,9 +4144,6 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| FunctionState function_state(&function_state_, &scope_state_,
|
| formal_parameters.scope);
|
|
|
| - function_state.SkipMaterializedLiterals(
|
| - formal_parameters.materialized_literals_count);
|
| -
|
| Expect(Token::ARROW, CHECK_OK);
|
|
|
| if (peek() == Token::LBRACE) {
|
| @@ -4202,16 +4164,10 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| LazyParsingResult result = impl()->SkipFunction(
|
| kind, formal_parameters.scope, &dummy_num_parameters,
|
| &dummy_function_length, &dummy_has_duplicate_parameters,
|
| - &materialized_literal_count, &expected_property_count, false, true,
|
| - CHECK_OK);
|
| + &expected_property_count, false, true, CHECK_OK);
|
| formal_parameters.scope->ResetAfterPreparsing(
|
| ast_value_factory_, result == kLazyParsingAborted);
|
|
|
| - if (formal_parameters.materialized_literals_count > 0) {
|
| - materialized_literal_count +=
|
| - formal_parameters.materialized_literals_count;
|
| - }
|
| -
|
| if (result == kLazyParsingAborted) {
|
| bookmark.Apply();
|
| // Trigger eager (re-)parsing, just below this block.
|
| @@ -4231,8 +4187,6 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| kNoSourcePosition, formal_parameters, kind,
|
| FunctionLiteral::kAnonymousExpression,
|
| CHECK_OK);
|
| - materialized_literal_count =
|
| - function_state.materialized_literal_count();
|
| expected_property_count = function_state.expected_property_count();
|
| }
|
| } else {
|
| @@ -4262,7 +4216,6 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| impl()->MarkTailPosition(expression);
|
| }
|
| }
|
| - materialized_literal_count = function_state.materialized_literal_count();
|
| expected_property_count = function_state.expected_property_count();
|
| impl()->MarkCollectedTailCallExpressions();
|
| }
|
| @@ -4295,8 +4248,8 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| }
|
| FunctionLiteralT function_literal = factory()->NewFunctionLiteral(
|
| impl()->EmptyIdentifierString(), formal_parameters.scope, body,
|
| - materialized_literal_count, expected_property_count,
|
| - formal_parameters.num_parameters(), formal_parameters.function_length,
|
| + expected_property_count, formal_parameters.num_parameters(),
|
| + formal_parameters.function_length,
|
| FunctionLiteral::kNoDuplicateParameters,
|
| FunctionLiteral::kAnonymousExpression, eager_compile_hint,
|
| formal_parameters.scope->start_position(), has_braces,
|
|
|