Index: src/parsing/preparser.h |
diff --git a/src/parsing/preparser.h b/src/parsing/preparser.h |
index 3115858c59288a60214fea30552d723db1c4b40e..df3c392d136846991dbabbf055b5f0f7488b337f 100644 |
--- a/src/parsing/preparser.h |
+++ b/src/parsing/preparser.h |
@@ -296,6 +296,7 @@ class PreParserExpression { |
// More dummy implementations of things PreParser doesn't need to track: |
void set_index(int index) {} // For YieldExpressions |
void set_should_eager_compile() {} |
+ void set_should_be_used_once_hint() {} |
int position() const { return kNoSourcePosition; } |
void set_function_token_position(int position) {} |
@@ -642,6 +643,7 @@ class PreParser : public ParserBase<PreParser> { |
enum PreParseResult { |
kPreParseStackOverflow, |
+ kPreParseAbort, |
kPreParseSuccess |
}; |
@@ -698,11 +700,7 @@ class PreParser : public ParserBase<PreParser> { |
FunctionKind kind, |
bool has_simple_parameters, |
bool parsing_module, ParserRecorder* log, |
- Scanner::BookmarkScope* bookmark, |
- int* use_counts); |
- |
- // A dummy function, just useful as an argument to CHECK_OK_CUSTOM. |
- static void Void() {} |
+ bool may_abort, int* use_counts); |
private: |
static const int kLazyParseTrialLimit = 200; |
@@ -717,8 +715,12 @@ class PreParser : public ParserBase<PreParser> { |
// By making the 'exception handling' explicit, we are forced to check |
// for failure at the call sites. |
Statement ParseStatementListItem(bool* ok); |
- void ParseStatementList(int end_token, bool* ok, |
- Scanner::BookmarkScope* bookmark = nullptr); |
+ V8_INLINE void ParseStatementList(int end_token, bool* ok) { |
+ LazyParsingResult result = ParseStatementList(end_token, false, ok); |
+ USE(result); // The result is just used in debug modes. |
+ DCHECK_EQ(result, kLazyParsingComplete); |
+ } |
+ LazyParsingResult ParseStatementList(int end_token, bool may_abort, bool* ok); |
Statement ParseStatement(AllowLabelledFunctionStatement allow_function, |
bool* ok); |
Statement ParseSubStatement(AllowLabelledFunctionStatement allow_function, |
@@ -764,18 +766,18 @@ 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) { |
+ V8_INLINE LazyParsingResult |
+ SkipLazyFunctionBody(int* materialized_literal_count, |
+ int* expected_property_count, bool may_abort, bool* ok) { |
UNREACHABLE(); |
+ return kLazyParsingComplete; |
} |
Expression ParseFunctionLiteral( |
Identifier name, Scanner::Location function_name_location, |
FunctionNameValidity function_name_validity, FunctionKind kind, |
int function_token_pos, FunctionLiteral::FunctionType function_type, |
LanguageMode language_mode, bool* ok); |
- void ParseLazyFunctionLiteralBody(bool* ok, |
- Scanner::BookmarkScope* bookmark = nullptr); |
+ LazyParsingResult ParseLazyFunctionLiteralBody(bool may_abort, bool* ok); |
PreParserExpression ParseClassLiteral(PreParserIdentifier name, |
Scanner::Location class_name_location, |
@@ -1009,6 +1011,9 @@ class PreParser : public ParserBase<PreParser> { |
V8_INLINE static PreParserExpressionList NullExpressionList() { |
return PreParserExpressionList(); |
} |
+ V8_INLINE static PreParserStatementList NullStatementList() { |
+ return PreParserStatementList(); |
+ } |
V8_INLINE PreParserIdentifier EmptyIdentifierString() const { |
return PreParserIdentifier::Default(); |
} |