Index: src/parsing/preparser.h |
diff --git a/src/parsing/preparser.h b/src/parsing/preparser.h |
index 8c2fb66abf9324e0734e9ebe689aaf9bcbcc973c..7ea3921d3900676ecc56cd66ed68ee8c70a13d43 100644 |
--- a/src/parsing/preparser.h |
+++ b/src/parsing/preparser.h |
@@ -112,10 +112,12 @@ class PreParserIdentifier { |
kAsyncIdentifier |
}; |
- explicit PreParserIdentifier(Type type) : type_(type) {} |
+ explicit PreParserIdentifier(Type type) : type_(type), string_(nullptr) {} |
Type type_; |
- |
+ // Only non-nullptr when PreParser.track_unresolved_variables_ is true. |
+ const AstRawString* string_; |
friend class PreParserExpression; |
+ friend class PreParser; |
}; |
@@ -761,7 +763,8 @@ class PreParser : public ParserBase<PreParser> { |
ParserRecorder* log, uintptr_t stack_limit) |
: ParserBase<PreParser>(zone, scanner, stack_limit, NULL, |
ast_value_factory, log), |
- use_counts_(nullptr) {} |
+ use_counts_(nullptr), |
+ track_unresolved_variables_(false) {} |
// Pre-parse the program from the character stream; returns true on |
// success (even if parsing failed, the pre-parse data successfully |
@@ -807,10 +810,10 @@ class PreParser : public ParserBase<PreParser> { |
// keyword and parameters, and have consumed the initial '{'. |
// At return, unless an error occurred, the scanner is positioned before the |
// the final '}'. |
- PreParseResult PreParseLazyFunction(LanguageMode language_mode, |
- FunctionKind kind, |
- bool has_simple_parameters, |
+ PreParseResult PreParseLazyFunction(FunctionKind kind, |
+ DeclarationScope* function_scope, |
bool parsing_module, ParserRecorder* log, |
+ bool track_unresolved_variables, |
bool may_abort, int* use_counts); |
private: |
@@ -839,9 +842,9 @@ class PreParser : public ParserBase<PreParser> { |
const PreParserFormalParameters& parameters, FunctionKind kind, |
FunctionLiteral::FunctionType function_type, bool* ok); |
- V8_INLINE LazyParsingResult |
- SkipLazyFunctionBody(int* materialized_literal_count, |
- int* expected_property_count, bool may_abort, bool* ok) { |
+ V8_INLINE LazyParsingResult SkipLazyFunctionBody( |
+ int* materialized_literal_count, int* expected_property_count, |
+ bool track_unresolved_variables, bool may_abort, bool* ok) { |
UNREACHABLE(); |
return kLazyParsingComplete; |
} |
@@ -1254,11 +1257,9 @@ class PreParser : public ParserBase<PreParser> { |
return PreParserExpression::Default(); |
} |
- V8_INLINE PreParserExpression ExpressionFromIdentifier( |
+ PreParserExpression ExpressionFromIdentifier( |
PreParserIdentifier name, int start_position, int end_position, |
- InferName infer = InferName::kYes) { |
- return PreParserExpression::FromIdentifier(name); |
- } |
+ InferName infer = InferName::kYes); |
V8_INLINE PreParserExpression ExpressionFromString(int pos) { |
if (scanner()->UnescapedLiteralMatches("use strict", 10)) { |
@@ -1373,6 +1374,7 @@ class PreParser : public ParserBase<PreParser> { |
// Preparser's private field members. |
int* use_counts_; |
+ bool track_unresolved_variables_; |
}; |
PreParserExpression PreParser::SpreadCall(PreParserExpression function, |