Index: src/preparser.h |
diff --git a/src/preparser.h b/src/preparser.h |
index be27be75f75a66ad6b21590808467e91b081d210..99b3fe5fc96f7f8a37cc92c1de33cdd9c2a4d198 100644 |
--- a/src/preparser.h |
+++ b/src/preparser.h |
@@ -754,8 +754,7 @@ class PreParserExpression { |
} |
static PreParserExpression StringLiteral() { |
- return PreParserExpression(TypeField::encode(kStringLiteralExpression) | |
- IsUseStrictField::encode(false)); |
+ return PreParserExpression(TypeField::encode(kStringLiteralExpression)); |
} |
static PreParserExpression UseStrictStringLiteral() { |
@@ -763,6 +762,11 @@ class PreParserExpression { |
IsUseStrictField::encode(true)); |
} |
+ static PreParserExpression UseSanityStringLiteral() { |
+ return PreParserExpression(TypeField::encode(kStringLiteralExpression) | |
+ IsUseSanityField::encode(true)); |
+ } |
+ |
static PreParserExpression This() { |
return PreParserExpression(TypeField::encode(kExpression) | |
ExpressionTypeField::encode(kThisExpression)); |
@@ -814,6 +818,11 @@ class PreParserExpression { |
IsUseStrictField::decode(code_); |
} |
+ bool IsUseSanityLiteral() const { |
+ return TypeField::decode(code_) == kStringLiteralExpression && |
+ IsUseSanityField::decode(code_); |
+ } |
+ |
bool IsThis() const { |
return TypeField::decode(code_) == kExpression && |
ExpressionTypeField::decode(code_) == kThisExpression; |
@@ -922,6 +931,7 @@ class PreParserExpression { |
typedef BitField<ExpressionType, ParenthesizationField::kNext, 3> |
ExpressionTypeField; |
typedef BitField<bool, ParenthesizationField::kNext, 1> IsUseStrictField; |
+ typedef BitField<bool, IsUseStrictField::kNext, 1> IsUseSanityField; |
typedef BitField<bool, ParenthesizationField::kNext, 1> |
IsValidArrowParamListField; |
typedef BitField<PreParserIdentifier::Type, ParenthesizationField::kNext, 10> |
@@ -963,6 +973,9 @@ class PreParserStatement { |
if (expression.IsUseStrictLiteral()) { |
return PreParserStatement(kUseStrictExpressionStatement); |
} |
+ if (expression.IsUseSanityLiteral()) { |
+ return PreParserStatement(kUseSanityExpressionStatement); |
+ } |
if (expression.IsStringLiteral()) { |
return PreParserStatement(kStringLiteralExpressionStatement); |
} |
@@ -977,6 +990,8 @@ class PreParserStatement { |
return code_ == kUseStrictExpressionStatement; |
} |
+ bool IsUseSanityLiteral() { return code_ == kUseSanityExpressionStatement; } |
+ |
bool IsFunctionDeclaration() { |
return code_ == kFunctionDeclaration; |
} |
@@ -986,6 +1001,7 @@ class PreParserStatement { |
kUnknownStatement, |
kStringLiteralExpressionStatement, |
kUseStrictExpressionStatement, |
+ kUseSanityExpressionStatement, |
kFunctionDeclaration |
}; |