Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(40)

Unified Diff: src/preparser.h

Issue 898983002: Add strong mode. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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
};

Powered by Google App Engine
This is Rietveld 408576698