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, |