Chromium Code Reviews| 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(); |