Index: src/parsing/preparser.h |
diff --git a/src/parsing/preparser.h b/src/parsing/preparser.h |
index 0f064fea81d37ebda98eee3b8f5d6ca6e35118ce..3f268ee14ad00ce1029df3b425da5864f21f1773 100644 |
--- a/src/parsing/preparser.h |
+++ b/src/parsing/preparser.h |
@@ -862,11 +862,6 @@ class ParserBaseTraits<PreParser> { |
const PreParserFormalParameters& parameters, PreParserStatementList body, |
bool is_async, bool* ok) {} |
- void ParseAsyncArrowSingleExpressionBody( |
- PreParserStatementList body, bool accept_IN, |
- Type::ExpressionClassifier* classifier, int pos, bool* ok); |
- |
- |
void AddFormalParameter(PreParserFormalParameters* parameters, |
PreParserExpression pattern, |
PreParserExpression initializer, |
@@ -887,52 +882,8 @@ class ParserBaseTraits<PreParser> { |
const Scanner::Location& params_loc, Scanner::Location* duplicate_loc, |
const Scope::Snapshot& scope_snapshot, bool* ok); |
- V8_INLINE PreParserExpression ParseAsyncFunctionExpression(bool* ok); |
- |
- V8_INLINE PreParserExpression ParseDoExpression(bool* ok); |
- |
void ReindexLiterals(const PreParserFormalParameters& parameters) {} |
- // Temporary glue; these functions will move to ParserBase. |
- PreParserExpression ParseV8Intrinsic(bool* ok); |
- PreParserExpression ParseFunctionLiteral( |
- PreParserIdentifier name, Scanner::Location function_name_location, |
- FunctionNameValidity function_name_validity, FunctionKind kind, |
- int function_token_position, FunctionLiteral::FunctionType type, |
- LanguageMode language_mode, bool* ok); |
- |
- V8_INLINE void SkipLazyFunctionBody( |
- int* materialized_literal_count, int* expected_property_count, bool* ok, |
- Scanner::BookmarkScope* bookmark = nullptr) { |
- UNREACHABLE(); |
- } |
- |
- V8_INLINE PreParserStatementList ParseEagerFunctionBody( |
- PreParserIdentifier name, int pos, |
- const PreParserFormalParameters& parameters, FunctionKind kind, |
- FunctionLiteral::FunctionType function_type, bool* ok); |
- |
- PreParserExpression ParseClassLiteral(Type::ExpressionClassifier* classifier, |
- PreParserIdentifier name, |
- Scanner::Location class_name_location, |
- bool name_is_strict_reserved, int pos, |
- bool* ok); |
- |
- V8_INLINE void MarkCollectedTailCallExpressions() {} |
- V8_INLINE void MarkTailPosition(PreParserExpression expression) {} |
- |
- void CheckConflictingVarDeclarations(Scope* scope, bool* ok) {} |
- |
- struct TemplateLiteralState {}; |
- |
- V8_INLINE TemplateLiteralState OpenTemplateLiteral(int pos) { |
- return TemplateLiteralState(); |
- } |
- V8_INLINE void AddTemplateSpan(TemplateLiteralState* state, bool tail) {} |
- V8_INLINE void AddTemplateExpression(TemplateLiteralState* state, |
- PreParserExpression expression) {} |
- V8_INLINE PreParserExpression CloseTemplateLiteral( |
- TemplateLiteralState* state, int start, PreParserExpression tag); |
V8_INLINE PreParserExpression NoTemplateTag() { |
return PreParserExpression::NoTemplateTag(); |
} |
@@ -940,59 +891,22 @@ class ParserBaseTraits<PreParser> { |
return !tag.IsNoTemplateTag(); |
} |
- V8_INLINE PreParserExpressionList |
- PrepareSpreadArguments(PreParserExpressionList list) { |
- return list; |
- } |
- |
inline void MaterializeUnspreadArgumentsLiterals(int count); |
- inline PreParserExpression SpreadCall(PreParserExpression function, |
- PreParserExpressionList args, int pos); |
- |
- inline PreParserExpression SpreadCallNew(PreParserExpression function, |
- PreParserExpressionList args, |
- int pos); |
- |
inline PreParserExpression ExpressionListToExpression( |
PreParserExpressionList args) { |
return PreParserExpression::Default(); |
} |
- inline void RewriteDestructuringAssignments() {} |
- |
- inline PreParserExpression RewriteExponentiation(PreParserExpression left, |
- PreParserExpression right, |
- int pos) { |
- return left; |
- } |
- inline PreParserExpression RewriteAssignExponentiation( |
- PreParserExpression left, PreParserExpression right, int pos) { |
- return left; |
- } |
- inline PreParserExpression RewriteAwaitExpression(PreParserExpression value, |
- int pos); |
- |
- inline void QueueDestructuringAssignmentForRewriting( |
- PreParserExpression assignment) {} |
- inline void QueueNonPatternForRewriting(PreParserExpression expr, bool* ok) {} |
- |
void SetFunctionNameFromPropertyName(PreParserExpression property, |
PreParserIdentifier name) {} |
void SetFunctionNameFromIdentifierRef(PreParserExpression value, |
PreParserExpression identifier) {} |
- inline void RewriteNonPattern(Type::ExpressionClassifier* classifier, |
- bool* ok); |
- |
V8_INLINE ZoneList<typename Type::ExpressionClassifier::Error>* |
GetReportedErrorList() const; |
V8_INLINE Zone* zone() const; |
V8_INLINE ZoneList<PreParserExpression>* GetNonPatternList() const; |
- |
- inline PreParserExpression RewriteYieldStar(PreParserExpression generator, |
- PreParserExpression expression, |
- int pos); |
}; |
@@ -1009,6 +923,7 @@ class ParserBaseTraits<PreParser> { |
// That means that contextual checks (like a label being declared where |
// it is used) are generally omitted. |
class PreParser : public ParserBase<PreParser> { |
+ friend class ParserBase<PreParser>; |
// TODO(nikolaos): This should not be necessary. It will be removed |
// when the traits object stops delegating to the implementation object. |
friend class ParserBaseTraits<PreParser>; |
@@ -1139,6 +1054,11 @@ class PreParser : public ParserBase<PreParser> { |
const PreParserFormalParameters& parameters, FunctionKind kind, |
FunctionLiteral::FunctionType function_type, bool* ok); |
+ V8_INLINE void SkipLazyFunctionBody( |
+ int* materialized_literal_count, int* expected_property_count, bool* ok, |
+ Scanner::BookmarkScope* bookmark = nullptr) { |
+ UNREACHABLE(); |
+ } |
Expression ParseFunctionLiteral( |
Identifier name, Scanner::Location function_name_location, |
FunctionNameValidity function_name_validity, FunctionKind kind, |
@@ -1153,6 +1073,69 @@ class PreParser : public ParserBase<PreParser> { |
bool name_is_strict_reserved, int pos, |
bool* ok); |
+ struct TemplateLiteralState {}; |
+ |
+ V8_INLINE TemplateLiteralState OpenTemplateLiteral(int pos) { |
+ return TemplateLiteralState(); |
+ } |
+ V8_INLINE void AddTemplateExpression(TemplateLiteralState* state, |
+ PreParserExpression expression) {} |
+ V8_INLINE void AddTemplateSpan(TemplateLiteralState* state, bool tail) {} |
+ V8_INLINE PreParserExpression CloseTemplateLiteral( |
+ TemplateLiteralState* state, int start, PreParserExpression tag); |
+ V8_INLINE void CheckConflictingVarDeclarations(Scope* scope, bool* ok) {} |
+ |
+ V8_INLINE void MarkCollectedTailCallExpressions() {} |
+ V8_INLINE void MarkTailPosition(PreParserExpression expression) {} |
+ |
+ void ParseAsyncArrowSingleExpressionBody(PreParserStatementList body, |
+ bool accept_IN, |
+ ExpressionClassifier* classifier, |
+ int pos, bool* ok); |
+ |
+ V8_INLINE PreParserExpressionList |
+ PrepareSpreadArguments(PreParserExpressionList list) { |
+ return list; |
+ } |
+ |
+ V8_INLINE PreParserExpression SpreadCall(PreParserExpression function, |
+ PreParserExpressionList args, |
+ int pos); |
+ V8_INLINE PreParserExpression SpreadCallNew(PreParserExpression function, |
+ PreParserExpressionList args, |
+ int pos); |
+ |
+ V8_INLINE void RewriteDestructuringAssignments() {} |
+ |
+ V8_INLINE PreParserExpression RewriteExponentiation(PreParserExpression left, |
+ PreParserExpression right, |
+ int pos) { |
+ return left; |
+ } |
+ V8_INLINE PreParserExpression RewriteAssignExponentiation( |
+ PreParserExpression left, PreParserExpression right, int pos) { |
+ return left; |
+ } |
+ |
+ V8_INLINE PreParserExpression |
+ RewriteAwaitExpression(PreParserExpression value, int pos) { |
+ return value; |
+ } |
+ V8_INLINE PreParserExpression RewriteYieldStar(PreParserExpression generator, |
+ PreParserExpression expression, |
+ int pos) { |
+ return PreParserExpression::Default(); |
+ } |
+ V8_INLINE void RewriteNonPattern(Type::ExpressionClassifier* classifier, |
+ bool* ok) { |
+ ValidateExpression(classifier, ok); |
+ } |
+ |
+ V8_INLINE void QueueDestructuringAssignmentForRewriting( |
+ PreParserExpression assignment) {} |
+ V8_INLINE void QueueNonPatternForRewriting(PreParserExpression expr, |
+ bool* ok) {} |
+ |
int* use_counts_; |
}; |
@@ -1163,14 +1146,16 @@ void ParserBaseTraits<PreParser>::MaterializeUnspreadArgumentsLiterals( |
} |
} |
-PreParserExpression ParserBaseTraits<PreParser>::SpreadCall( |
- PreParserExpression function, PreParserExpressionList args, int pos) { |
- return delegate()->factory()->NewCall(function, args, pos); |
+PreParserExpression PreParser::SpreadCall(PreParserExpression function, |
+ PreParserExpressionList args, |
+ int pos) { |
+ return factory()->NewCall(function, args, pos); |
} |
-PreParserExpression ParserBaseTraits<PreParser>::SpreadCallNew( |
- PreParserExpression function, PreParserExpressionList args, int pos) { |
- return delegate()->factory()->NewCallNew(function, args, pos); |
+PreParserExpression PreParser::SpreadCallNew(PreParserExpression function, |
+ PreParserExpressionList args, |
+ int pos) { |
+ return factory()->NewCallNew(function, args, pos); |
} |
void ParserBaseTraits<PreParser>::ParseArrowFunctionFormalParameterList( |
@@ -1181,25 +1166,6 @@ void ParserBaseTraits<PreParser>::ParseArrowFunctionFormalParameterList( |
// lists that are too long. |
} |
-PreParserExpression ParserBaseTraits<PreParser>::ParseAsyncFunctionExpression( |
- bool* ok) { |
- return delegate()->ParseAsyncFunctionExpression(ok); |
-} |
- |
-PreParserExpression ParserBaseTraits<PreParser>::ParseDoExpression(bool* ok) { |
- return delegate()->ParseDoExpression(ok); |
-} |
- |
-void ParserBaseTraits<PreParser>::RewriteNonPattern( |
- Type::ExpressionClassifier* classifier, bool* ok) { |
- delegate()->ValidateExpression(classifier, ok); |
-} |
- |
-PreParserExpression ParserBaseTraits<PreParser>::RewriteAwaitExpression( |
- PreParserExpression value, int pos) { |
- return value; |
-} |
- |
ZoneList<PreParserExpression>* ParserBaseTraits<PreParser>::GetNonPatternList() |
const { |
return delegate()->function_state_->non_patterns_to_rewrite(); |
@@ -1215,11 +1181,6 @@ Zone* ParserBaseTraits<PreParser>::zone() const { |
return delegate()->function_state_->scope()->zone(); |
} |
-PreParserExpression ParserBaseTraits<PreParser>::RewriteYieldStar( |
- PreParserExpression generator, PreParserExpression expression, int pos) { |
- return PreParserExpression::Default(); |
-} |
- |
PreParserStatementList PreParser::ParseEagerFunctionBody( |
PreParserIdentifier function_name, int pos, |
const PreParserFormalParameters& parameters, FunctionKind kind, |
@@ -1239,21 +1200,14 @@ PreParserStatementList PreParser::ParseEagerFunctionBody( |
return PreParserStatementList(); |
} |
-PreParserStatementList ParserBaseTraits<PreParser>::ParseEagerFunctionBody( |
- PreParserIdentifier function_name, int pos, |
- const PreParserFormalParameters& parameters, FunctionKind kind, |
- FunctionLiteral::FunctionType function_type, bool* ok) { |
- return delegate()->ParseEagerFunctionBody(function_name, pos, parameters, |
- kind, function_type, ok); |
-} |
- |
-PreParserExpression ParserBaseTraits<PreParser>::CloseTemplateLiteral( |
- TemplateLiteralState* state, int start, PreParserExpression tag) { |
+PreParserExpression PreParser::CloseTemplateLiteral(TemplateLiteralState* state, |
+ int start, |
+ PreParserExpression tag) { |
if (IsTaggedTemplate(tag)) { |
// Emulate generation of array literals for tag callsite |
// 1st is array of cooked strings, second is array of raw strings |
- delegate()->function_state_->NextMaterializedLiteralIndex(); |
- delegate()->function_state_->NextMaterializedLiteralIndex(); |
+ function_state_->NextMaterializedLiteralIndex(); |
+ function_state_->NextMaterializedLiteralIndex(); |
} |
return EmptyExpression(); |
} |