Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(140)

Unified Diff: src/parsing/parser.cc

Issue 2268413002: [parser] Clean up (pre)parser traits, part 3 (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@nickie-2273693002-ref-traits
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/parsing/parser.cc
diff --git a/src/parsing/parser.cc b/src/parsing/parser.cc
index 8ab5bd8418fe8788d399a955b4328d15440fbb1f..839e973f3c612406e9b9ddd22d658b59924986c2 100644
--- a/src/parsing/parser.cc
+++ b/src/parsing/parser.cc
@@ -367,15 +367,15 @@ bool Parser::ShortcutNumericLiteralBinaryExpression(Expression** x,
return false;
}
-Expression* ParserBaseTraits<Parser>::BuildUnaryExpression(
- Expression* expression, Token::Value op, int pos, AstNodeFactory* factory) {
+Expression* Parser::BuildUnaryExpression(Expression* expression,
+ Token::Value op, int pos) {
DCHECK(expression != NULL);
if (expression->IsLiteral()) {
const AstValue* literal = expression->AsLiteral()->raw_value();
if (op == Token::NOT) {
// Convert the literal to a boolean condition and negate it.
bool condition = literal->BooleanValue();
- return factory->NewBooleanLiteral(!condition, pos);
+ return factory()->NewBooleanLiteral(!condition, pos);
} else if (literal->IsNumber()) {
// Compute some expressions involving only number literals.
double value = literal->AsNumber();
@@ -384,9 +384,10 @@ Expression* ParserBaseTraits<Parser>::BuildUnaryExpression(
case Token::ADD:
return expression;
case Token::SUB:
- return factory->NewNumberLiteral(-value, pos, has_dot);
+ return factory()->NewNumberLiteral(-value, pos, has_dot);
case Token::BIT_NOT:
- return factory->NewNumberLiteral(~DoubleToInt32(value), pos, has_dot);
+ return factory()->NewNumberLiteral(~DoubleToInt32(value), pos,
+ has_dot);
default:
break;
}
@@ -394,53 +395,33 @@ Expression* ParserBaseTraits<Parser>::BuildUnaryExpression(
}
// Desugar '+foo' => 'foo*1'
if (op == Token::ADD) {
- return factory->NewBinaryOperation(
- Token::MUL, expression, factory->NewNumberLiteral(1, pos, true), pos);
+ return factory()->NewBinaryOperation(
+ Token::MUL, expression, factory()->NewNumberLiteral(1, pos, true), pos);
}
// The same idea for '-foo' => 'foo*(-1)'.
if (op == Token::SUB) {
- return factory->NewBinaryOperation(
- Token::MUL, expression, factory->NewNumberLiteral(-1, pos), pos);
+ return factory()->NewBinaryOperation(
+ Token::MUL, expression, factory()->NewNumberLiteral(-1, pos), pos);
}
// ...and one more time for '~foo' => 'foo^(~0)'.
if (op == Token::BIT_NOT) {
- return factory->NewBinaryOperation(
- Token::BIT_XOR, expression, factory->NewNumberLiteral(~0, pos), pos);
+ return factory()->NewBinaryOperation(
+ Token::BIT_XOR, expression, factory()->NewNumberLiteral(~0, pos), pos);
}
- return factory->NewUnaryOperation(op, expression, pos);
+ return factory()->NewUnaryOperation(op, expression, pos);
}
-Expression* ParserBaseTraits<Parser>::BuildIteratorResult(Expression* value,
- bool done) {
+Expression* Parser::BuildIteratorResult(Expression* value, bool done) {
int pos = kNoSourcePosition;
- AstNodeFactory* factory = delegate()->factory();
- Zone* zone = delegate()->zone();
-
- if (value == nullptr) value = factory->NewUndefinedLiteral(pos);
- auto args = new (zone) ZoneList<Expression*>(2, zone);
- args->Add(value, zone);
- args->Add(factory->NewBooleanLiteral(done, pos), zone);
+ if (value == nullptr) value = factory()->NewUndefinedLiteral(pos);
- return factory->NewCallRuntime(Runtime::kInlineCreateIterResultObject, args,
- pos);
-}
-
-Expression* ParserBaseTraits<Parser>::NewThrowReferenceError(
- MessageTemplate::Template message, int pos) {
- return delegate()->NewThrowError(
- Runtime::kNewReferenceError, message,
- delegate()->ast_value_factory()->empty_string(), pos);
-}
-
-Expression* ParserBaseTraits<Parser>::NewThrowSyntaxError(
- MessageTemplate::Template message, const AstRawString* arg, int pos) {
- return delegate()->NewThrowError(Runtime::kNewSyntaxError, message, arg, pos);
-}
+ auto args = new (zone()) ZoneList<Expression*>(2, zone());
+ args->Add(value, zone());
+ args->Add(factory()->NewBooleanLiteral(done, pos), zone());
-Expression* ParserBaseTraits<Parser>::NewThrowTypeError(
- MessageTemplate::Template message, const AstRawString* arg, int pos) {
- return delegate()->NewThrowError(Runtime::kNewTypeError, message, arg, pos);
+ return factory()->NewCallRuntime(Runtime::kInlineCreateIterResultObject, args,
+ pos);
}
Expression* Parser::NewThrowError(Runtime::FunctionId id,
@@ -453,34 +434,6 @@ Expression* Parser::NewThrowError(Runtime::FunctionId id,
return factory()->NewThrow(call_constructor, pos);
}
-void ParserBaseTraits<Parser>::ReportMessageAt(
- Scanner::Location source_location, MessageTemplate::Template message,
- const char* arg, ParseErrorType error_type) {
- if (delegate()->stack_overflow()) {
- // Suppress the error message (syntax error or such) in the presence of a
- // stack overflow. The isolate allows only one pending exception at at time
- // and we want to report the stack overflow later.
- return;
- }
- delegate()->pending_error_handler_.ReportMessageAt(source_location.beg_pos,
- source_location.end_pos,
- message, arg, error_type);
-}
-
-void ParserBaseTraits<Parser>::ReportMessageAt(
- Scanner::Location source_location, MessageTemplate::Template message,
- const AstRawString* arg, ParseErrorType error_type) {
- if (delegate()->stack_overflow()) {
- // Suppress the error message (syntax error or such) in the presence of a
- // stack overflow. The isolate allows only one pending exception at at time
- // and we want to report the stack overflow later.
- return;
- }
- delegate()->pending_error_handler_.ReportMessageAt(source_location.beg_pos,
- source_location.end_pos,
- message, arg, error_type);
-}
-
const AstRawString* ParserBaseTraits<Parser>::GetSymbol(
Scanner* scanner) const {
const AstRawString* result =
@@ -606,11 +559,6 @@ Expression* ParserBaseTraits<Parser>::GetIterator(Expression* iterable,
return factory->NewCall(prop, args, pos);
}
-Literal* ParserBaseTraits<Parser>::GetLiteralTheHole(
- int position, AstNodeFactory* factory) const {
- return factory->NewTheHoleLiteral(kNoSourcePosition);
-}
-
void Parser::MarkTailPosition(Expression* expression) {
expression->MarkTail();
}
@@ -3967,7 +3915,8 @@ void ParserBaseTraits<Parser>::ParseArrowFunctionFormalParameterList(
scope_snapshot.Reparent(parameters->scope);
if (parameters->Arity() > Code::kMaxArguments) {
- ReportMessageAt(params_loc, MessageTemplate::kMalformedArrowFunParamList);
+ delegate()->ReportMessageAt(params_loc,
+ MessageTemplate::kMalformedArrowFunParamList);
*ok = false;
return;
}
« src/parsing/parser.h ('K') | « src/parsing/parser.h ('k') | src/parsing/parser-base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698