| Index: src/parsing/parser-base.h
|
| diff --git a/src/parsing/parser-base.h b/src/parsing/parser-base.h
|
| index 42db4816de3ed060e3ec4dacfe07a8053dfd6fa6..93dea7c565ef876ad61463fbdebfd9d74949f7ea 100644
|
| --- a/src/parsing/parser-base.h
|
| +++ b/src/parsing/parser-base.h
|
| @@ -1424,7 +1424,7 @@ ParserBase<Impl>::ParseAndClassifyIdentifier(ExpressionClassifier* classifier,
|
| Token::Value next = Next();
|
| if (next == Token::IDENTIFIER || next == Token::ASYNC ||
|
| (next == Token::AWAIT && !parsing_module_ && !is_async_function())) {
|
| - IdentifierT name = this->GetSymbol(scanner());
|
| + IdentifierT name = impl()->GetSymbol();
|
| // When this function is used to read a formal parameter, we don't always
|
| // know whether the function is going to be strict or sloppy. Indeed for
|
| // arrow functions we don't always know that the identifier we are reading
|
| @@ -1467,7 +1467,7 @@ ParserBase<Impl>::ParseAndClassifyIdentifier(ExpressionClassifier* classifier,
|
| classifier->RecordLetPatternError(scanner()->location(),
|
| MessageTemplate::kLetInLexicalBinding);
|
| }
|
| - return this->GetSymbol(scanner());
|
| + return impl()->GetSymbol();
|
| } else {
|
| this->ReportUnexpectedToken(next);
|
| *ok = false;
|
| @@ -1494,7 +1494,7 @@ ParserBase<Impl>::ParseIdentifierOrStrictReservedWord(
|
| return impl()->EmptyIdentifier();
|
| }
|
|
|
| - return this->GetSymbol(scanner());
|
| + return impl()->GetSymbol();
|
| }
|
|
|
| template <typename Impl>
|
| @@ -1512,7 +1512,7 @@ typename ParserBase<Impl>::IdentifierT ParserBase<Impl>::ParseIdentifierName(
|
| return impl()->EmptyIdentifier();
|
| }
|
|
|
| - return this->GetSymbol(scanner());
|
| + return impl()->GetSymbol();
|
| }
|
|
|
| template <typename Impl>
|
| @@ -1528,7 +1528,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseRegExpLiteral(
|
|
|
| int literal_index = function_state_->NextMaterializedLiteralIndex();
|
|
|
| - IdentifierT js_pattern = this->GetNextSymbol(scanner());
|
| + IdentifierT js_pattern = impl()->GetNextSymbol();
|
| Maybe<RegExp::Flags> flags = scanner()->ScanRegExpFlags();
|
| if (flags.IsNothing()) {
|
| Next();
|
| @@ -1566,7 +1566,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression(
|
| case Token::THIS: {
|
| BindingPatternUnexpectedToken(classifier);
|
| Consume(Token::THIS);
|
| - return this->ThisExpression(beg_pos);
|
| + return impl()->ThisExpression(beg_pos);
|
| }
|
|
|
| case Token::NULL_LITERAL:
|
| @@ -1575,7 +1575,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression(
|
| case Token::SMI:
|
| case Token::NUMBER:
|
| BindingPatternUnexpectedToken(classifier);
|
| - return this->ExpressionFromLiteral(Next(), beg_pos, scanner(), factory());
|
| + return impl()->ExpressionFromLiteral(Next(), beg_pos);
|
|
|
| case Token::ASYNC:
|
| if (allow_harmony_async_await() &&
|
| @@ -1596,14 +1596,14 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePrimaryExpression(
|
| case Token::FUTURE_STRICT_RESERVED_WORD: {
|
| // Using eval or arguments in this context is OK even in strict mode.
|
| IdentifierT name = ParseAndClassifyIdentifier(classifier, CHECK_OK);
|
| - return this->ExpressionFromIdentifier(name, beg_pos,
|
| - scanner()->location().end_pos);
|
| + return impl()->ExpressionFromIdentifier(name, beg_pos,
|
| + scanner()->location().end_pos);
|
| }
|
|
|
| case Token::STRING: {
|
| BindingPatternUnexpectedToken(classifier);
|
| Consume(Token::STRING);
|
| - return this->ExpressionFromString(beg_pos, scanner(), factory());
|
| + return impl()->ExpressionFromString(beg_pos);
|
| }
|
|
|
| case Token::ASSIGN_DIV:
|
| @@ -1801,8 +1801,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseArrayLiteral(
|
| // '[' Expression? (',' Expression?)* ']'
|
|
|
| int pos = peek_position();
|
| - typename Traits::Type::ExpressionList values =
|
| - this->NewExpressionList(4, zone_);
|
| + typename Traits::Type::ExpressionList values = impl()->NewExpressionList(4);
|
| int first_spread_index = -1;
|
| Expect(Token::LBRACK, CHECK_OK);
|
| while (peek() != Token::RBRACK) {
|
| @@ -1889,17 +1888,17 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParsePropertyName(
|
| switch (token) {
|
| case Token::STRING:
|
| Consume(Token::STRING);
|
| - *name = this->GetSymbol(scanner());
|
| + *name = impl()->GetSymbol();
|
| break;
|
|
|
| case Token::SMI:
|
| Consume(Token::SMI);
|
| - *name = this->GetNumberAsSymbol(scanner());
|
| + *name = impl()->GetNumberAsSymbol();
|
| break;
|
|
|
| case Token::NUMBER:
|
| Consume(Token::NUMBER);
|
| - *name = this->GetNumberAsSymbol(scanner());
|
| + *name = impl()->GetNumberAsSymbol();
|
| break;
|
|
|
| case Token::LBRACK: {
|
| @@ -2013,7 +2012,7 @@ ParserBase<Impl>::ParsePropertyDefinition(
|
| MessageTemplate::kAwaitBindingIdentifier);
|
| }
|
| ExpressionT lhs =
|
| - this->ExpressionFromIdentifier(*name, next_beg_pos, next_end_pos);
|
| + impl()->ExpressionFromIdentifier(*name, next_beg_pos, next_end_pos);
|
| CheckDestructuringElement(lhs, classifier, next_beg_pos, next_end_pos);
|
|
|
| ExpressionT value;
|
| @@ -2152,8 +2151,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseObjectLiteral(
|
| // '{' (PropertyDefinition (',' PropertyDefinition)* ','? )? '}'
|
|
|
| int pos = peek_position();
|
| - typename Traits::Type::PropertyList properties =
|
| - this->NewPropertyList(4, zone_);
|
| + typename Traits::Type::PropertyList properties = impl()->NewPropertyList(4);
|
| int number_of_boilerplate_properties = 0;
|
| bool has_computed_names = false;
|
| ObjectLiteralChecker checker(this);
|
| @@ -2210,8 +2208,7 @@ ParserBase<Impl>::ParseArguments(Scanner::Location* first_spread_arg_loc,
|
| // '(' (AssignmentExpression)*[','] ')'
|
|
|
| Scanner::Location spread_arg = Scanner::Location::invalid();
|
| - typename Traits::Type::ExpressionList result =
|
| - this->NewExpressionList(4, zone_);
|
| + typename Traits::Type::ExpressionList result = impl()->NewExpressionList(4);
|
| Expect(Token::LPAREN, CHECK_OK_CUSTOM(NullExpressionList));
|
| bool done = (peek() == Token::RPAREN);
|
| bool was_unspread = false;
|
| @@ -2333,7 +2330,7 @@ ParserBase<Impl>::ParseAssignmentExpression(bool accept_IN,
|
| // async Identifier => AsyncConciseBody
|
| IdentifierT name =
|
| ParseAndClassifyIdentifier(&arrow_formals_classifier, CHECK_OK);
|
| - expression = this->ExpressionFromIdentifier(
|
| + expression = impl()->ExpressionFromIdentifier(
|
| name, position(), scanner()->location().end_pos, InferName::kNo);
|
| if (fni_) {
|
| // Remove `async` keyword from inferred name stack.
|
| @@ -2928,7 +2925,7 @@ ParserBase<Impl>::ParseLeftHandSideExpression(ExpressionClassifier* classifier,
|
| // Explicit calls to the super constructor using super() perform an
|
| // implicit binding assignment to the 'this' variable.
|
| if (is_super_call) {
|
| - ExpressionT this_expr = this->ThisExpression(pos);
|
| + ExpressionT this_expr = impl()->ThisExpression(pos);
|
| result =
|
| factory()->NewAssignment(Token::INIT, this_expr, result, pos);
|
| }
|
| @@ -3025,8 +3022,7 @@ ParserBase<Impl>::ParseMemberWithNewPrefixesExpression(
|
| return result;
|
| }
|
| // NewExpression without arguments.
|
| - return factory()->NewCallNew(result, this->NewExpressionList(0, zone_),
|
| - new_pos);
|
| + return factory()->NewCallNew(result, impl()->NewExpressionList(0), new_pos);
|
| }
|
| // No 'new' or 'super' keyword.
|
| return this->ParseMemberExpression(classifier, is_async, ok);
|
| @@ -3065,7 +3061,7 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseMemberExpression(
|
| return impl()->EmptyExpression();
|
| }
|
|
|
| - return this->FunctionSentExpression(factory(), pos);
|
| + return impl()->FunctionSentExpression(pos);
|
| }
|
|
|
| FunctionKind function_kind = Check(Token::MUL)
|
| @@ -3112,14 +3108,14 @@ typename ParserBase<Impl>::ExpressionT ParserBase<Impl>::ParseSuperExpression(
|
| IsClassConstructor(kind)) {
|
| if (peek() == Token::PERIOD || peek() == Token::LBRACK) {
|
| scope->RecordSuperPropertyUsage();
|
| - return this->NewSuperPropertyReference(factory(), pos);
|
| + return impl()->NewSuperPropertyReference(pos);
|
| }
|
| // new super() is never allowed.
|
| // super() is only allowed in derived constructor
|
| if (!is_new && peek() == Token::LPAREN && IsSubclassConstructor(kind)) {
|
| // TODO(rossberg): This might not be the correct FunctionState for the
|
| // method here.
|
| - return this->NewSuperCallReference(factory(), pos);
|
| + return impl()->NewSuperCallReference(pos);
|
| }
|
| }
|
|
|
| @@ -3156,7 +3152,7 @@ ParserBase<Impl>::ParseNewTargetExpression(bool* ok) {
|
| return impl()->EmptyExpression();
|
| }
|
|
|
| - return this->NewTargetExpression(pos);
|
| + return impl()->NewTargetExpression(pos);
|
| }
|
|
|
| template <typename Impl>
|
| @@ -3432,7 +3428,7 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| bool is_lazily_parsed = (mode() == PARSE_LAZILY &&
|
| formal_parameters.scope->AllowsLazyParsing());
|
| if (is_lazily_parsed) {
|
| - body = this->NewStatementList(0, zone());
|
| + body = impl()->NewStatementList(0);
|
| impl()->SkipLazyFunctionBody(&materialized_literal_count,
|
| &expected_property_count, CHECK_OK);
|
| if (formal_parameters.materialized_literals_count > 0) {
|
| @@ -3454,7 +3450,7 @@ ParserBase<Impl>::ParseArrowFunctionLiteral(
|
| function_state_->return_expr_context());
|
| ReturnExprScope allow_tail_calls(
|
| function_state_, ReturnExprContext::kInsideValidReturnStatement);
|
| - body = this->NewStatementList(1, zone());
|
| + body = impl()->NewStatementList(1);
|
| this->AddParameterInitializationBlock(formal_parameters, body, is_async,
|
| CHECK_OK);
|
| ExpressionClassifier classifier(this);
|
|
|