| 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
|
| };
|
|
|
|
|