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

Unified Diff: src/preparser.h

Issue 1291343005: [parser] PreParserExpression cleanup (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/preparser.h
diff --git a/src/preparser.h b/src/preparser.h
index 18fc2330eedd7f646683035bba73e311d6f8d12a..15bef7c23529775f529ee789d09c3be1a984e027 100644
--- a/src/preparser.h
+++ b/src/preparser.h
@@ -921,19 +921,31 @@ class PreParserExpression {
}
static PreParserExpression StringLiteral() {
- return PreParserExpression(TypeField::encode(kStringLiteralExpression));
+ return PreParserExpression(TypeField::encode(kStringLiteral));
caitp (gmail) 2015/08/17 18:26:12 the `Expression` suffix wasn't really adding anyth
}
static PreParserExpression UseStrictStringLiteral() {
- return PreParserExpression(TypeField::encode(kStringLiteralExpression) |
+ return PreParserExpression(TypeField::encode(kStringLiteral) |
IsUseStrictField::encode(true));
}
static PreParserExpression UseStrongStringLiteral() {
- return PreParserExpression(TypeField::encode(kStringLiteralExpression) |
+ return PreParserExpression(TypeField::encode(kStringLiteral) |
IsUseStrongField::encode(true));
}
+ static PreParserExpression NumberLiteral() {
+ return PreParserExpression(TypeField::encode(kNumberLiteral));
caitp (gmail) 2015/08/17 18:26:12 Just here for consistency --- might be useful for
+ }
+
+ static PreParserExpression ArrayLiteral() {
+ return PreParserExpression(TypeField::encode(kArrayLiteral));
caitp (gmail) 2015/08/17 18:26:12 I have uses for this in destructuring assignment,
+ }
+
+ static PreParserExpression ObjectLiteral() {
+ return PreParserExpression(TypeField::encode(kObjectLiteral));
+ }
+
static PreParserExpression This() {
return PreParserExpression(TypeField::encode(kExpression) |
ExpressionTypeField::encode(kThisExpression));
@@ -978,19 +990,31 @@ class PreParserExpression {
}
bool IsStringLiteral() const {
- return TypeField::decode(code_) == kStringLiteralExpression;
+ return TypeField::decode(code_) == kStringLiteral;
}
bool IsUseStrictLiteral() const {
- return TypeField::decode(code_) == kStringLiteralExpression &&
+ return TypeField::decode(code_) == kStringLiteral &&
IsUseStrictField::decode(code_);
}
bool IsUseStrongLiteral() const {
- return TypeField::decode(code_) == kStringLiteralExpression &&
+ return TypeField::decode(code_) == kStringLiteral &&
IsUseStrongField::decode(code_);
}
+ bool IsNumberLiteral() const {
+ return TypeField::decode(code_) == kNumberLiteral;
+ }
+
+ bool IsArrayLiteral() const {
+ return TypeField::decode(code_) == kArrayLiteral;
+ }
+
+ bool IsObjectLiteral() const {
+ return TypeField::decode(code_) == kObjectLiteral;
+ }
+
bool IsThis() const {
return TypeField::decode(code_) == kExpression &&
ExpressionTypeField::decode(code_) == kThisExpression;
@@ -1055,7 +1079,10 @@ class PreParserExpression {
enum Type {
kExpression,
kIdentifierExpression,
- kStringLiteralExpression,
+ kStringLiteral,
+ kNumberLiteral,
+ kArrayLiteral,
+ kObjectLiteral,
kBinaryOperationExpression,
kSpreadExpression
};
@@ -1073,7 +1100,7 @@ class PreParserExpression {
: code_(expression_code) {}
// The first three bits are for the Type.
- typedef BitField<Type, 0, 3> TypeField;
+ typedef BitField<Type, 0, 4> TypeField;
caitp (gmail) 2015/08/17 18:26:11 I guess this doesn't really need the extra bit ---
// The rest of the bits are interpreted depending on the value
// of the Type field, so they can share the storage.
@@ -1177,11 +1204,11 @@ class PreParserFactory {
explicit PreParserFactory(void* unused_value_factory) {}
PreParserExpression NewStringLiteral(PreParserIdentifier identifier,
int pos) {
- return PreParserExpression::Default();
+ return PreParserExpression::StringLiteral();
}
PreParserExpression NewNumberLiteral(double number,
int pos) {
- return PreParserExpression::Default();
+ return PreParserExpression::NumberLiteral();
}
PreParserExpression NewRegExpLiteral(PreParserIdentifier js_pattern,
PreParserIdentifier js_flags,
@@ -1194,12 +1221,12 @@ class PreParserFactory {
int literal_index,
bool is_strong,
int pos) {
- return PreParserExpression::Default();
+ return PreParserExpression::ArrayLiteral();
}
PreParserExpression NewArrayLiteral(PreParserExpressionList values,
int first_spread_index, int literal_index,
bool is_strong, int pos) {
- return PreParserExpression::Default();
+ return PreParserExpression::ArrayLiteral();
}
PreParserExpression NewObjectLiteralProperty(PreParserExpression key,
PreParserExpression value,
@@ -1220,7 +1247,7 @@ class PreParserFactory {
bool has_function,
bool is_strong,
int pos) {
- return PreParserExpression::Default();
+ return PreParserExpression::ObjectLiteral();
}
PreParserExpression NewVariableProxy(void* variable) {
return PreParserExpression::Default();
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698