OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_PARSING_PREPARSER_H | 5 #ifndef V8_PARSING_PREPARSER_H |
6 #define V8_PARSING_PREPARSER_H | 6 #define V8_PARSING_PREPARSER_H |
7 | 7 |
8 #include "src/ast/scopes.h" | 8 #include "src/ast/scopes.h" |
9 #include "src/bailout-reason.h" | 9 #include "src/bailout-reason.h" |
10 #include "src/hashmap.h" | 10 #include "src/hashmap.h" |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
118 | 118 |
119 static PreParserExpression BinaryOperation(PreParserExpression left, | 119 static PreParserExpression BinaryOperation(PreParserExpression left, |
120 Token::Value op, | 120 Token::Value op, |
121 PreParserExpression right) { | 121 PreParserExpression right) { |
122 return PreParserExpression( | 122 return PreParserExpression( |
123 TypeField::encode(kBinaryOperationExpression) | | 123 TypeField::encode(kBinaryOperationExpression) | |
124 HasRestField::encode(op == Token::COMMA && | 124 HasRestField::encode(op == Token::COMMA && |
125 right->IsSpreadExpression())); | 125 right->IsSpreadExpression())); |
126 } | 126 } |
127 | 127 |
128 static PreParserExpression AssignmentPattern() { | 128 static PreParserExpression Assignment() { |
129 return PreParserExpression(TypeField::encode(kExpression) | | 129 return PreParserExpression(TypeField::encode(kExpression) | |
130 ExpressionTypeField::encode(kAssignmentPattern)); | 130 ExpressionTypeField::encode(kAssignment)); |
131 } | 131 } |
132 | 132 |
133 static PreParserExpression ObjectLiteral() { | 133 static PreParserExpression ObjectLiteral() { |
134 return PreParserExpression(TypeField::encode(kObjectLiteralExpression)); | 134 return PreParserExpression(TypeField::encode(kObjectLiteralExpression)); |
135 } | 135 } |
136 | 136 |
137 static PreParserExpression ArrayLiteral() { | 137 static PreParserExpression ArrayLiteral() { |
138 return PreParserExpression(TypeField::encode(kArrayLiteralExpression)); | 138 return PreParserExpression(TypeField::encode(kArrayLiteralExpression)); |
139 } | 139 } |
140 | 140 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 | 188 |
189 bool IsIdentifier() const { | 189 bool IsIdentifier() const { |
190 return TypeField::decode(code_) == kIdentifierExpression; | 190 return TypeField::decode(code_) == kIdentifierExpression; |
191 } | 191 } |
192 | 192 |
193 PreParserIdentifier AsIdentifier() const { | 193 PreParserIdentifier AsIdentifier() const { |
194 DCHECK(IsIdentifier()); | 194 DCHECK(IsIdentifier()); |
195 return PreParserIdentifier(IdentifierTypeField::decode(code_)); | 195 return PreParserIdentifier(IdentifierTypeField::decode(code_)); |
196 } | 196 } |
197 | 197 |
198 bool IsAssignmentPattern() const { | 198 bool IsAssignment() const { |
199 return TypeField::decode(code_) == kExpression && | 199 return TypeField::decode(code_) == kExpression && |
200 ExpressionTypeField::decode(code_) == kAssignmentPattern; | 200 ExpressionTypeField::decode(code_) == kAssignment; |
201 } | 201 } |
202 | 202 |
203 bool IsObjectLiteral() const { | 203 bool IsObjectLiteral() const { |
204 return TypeField::decode(code_) == kObjectLiteralExpression; | 204 return TypeField::decode(code_) == kObjectLiteralExpression; |
205 } | 205 } |
206 | 206 |
207 bool IsArrayLiteral() const { | 207 bool IsArrayLiteral() const { |
208 return TypeField::decode(code_) == kArrayLiteralExpression; | 208 return TypeField::decode(code_) == kArrayLiteralExpression; |
209 } | 209 } |
210 | 210 |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 kArrayLiteralExpression | 301 kArrayLiteralExpression |
302 }; | 302 }; |
303 | 303 |
304 enum ExpressionType { | 304 enum ExpressionType { |
305 kThisExpression, | 305 kThisExpression, |
306 kThisPropertyExpression, | 306 kThisPropertyExpression, |
307 kPropertyExpression, | 307 kPropertyExpression, |
308 kCallExpression, | 308 kCallExpression, |
309 kSuperCallReference, | 309 kSuperCallReference, |
310 kNoTemplateTagExpression, | 310 kNoTemplateTagExpression, |
311 kAssignmentPattern | 311 kAssignment |
312 }; | 312 }; |
313 | 313 |
314 explicit PreParserExpression(uint32_t expression_code) | 314 explicit PreParserExpression(uint32_t expression_code) |
315 : code_(expression_code) {} | 315 : code_(expression_code) {} |
316 | 316 |
317 // The first three bits are for the Type. | 317 // The first three bits are for the Type. |
318 typedef BitField<Type, 0, 3> TypeField; | 318 typedef BitField<Type, 0, 3> TypeField; |
319 | 319 |
320 // The rest of the bits are interpreted depending on the value | 320 // The rest of the bits are interpreted depending on the value |
321 // of the Type field, so they can share the storage. | 321 // of the Type field, so they can share the storage. |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 return PreParserExpression::Default(); | 491 return PreParserExpression::Default(); |
492 } | 492 } |
493 PreParserExpression NewRewritableAssignmentExpression( | 493 PreParserExpression NewRewritableAssignmentExpression( |
494 PreParserExpression expression) { | 494 PreParserExpression expression) { |
495 return expression; | 495 return expression; |
496 } | 496 } |
497 PreParserExpression NewAssignment(Token::Value op, | 497 PreParserExpression NewAssignment(Token::Value op, |
498 PreParserExpression left, | 498 PreParserExpression left, |
499 PreParserExpression right, | 499 PreParserExpression right, |
500 int pos) { | 500 int pos) { |
501 return PreParserExpression::Default(); | 501 return PreParserExpression::Assignment(); |
502 } | |
503 PreParserExpression NewAssignmentPattern(PreParserExpression pattern, | |
504 int pos) { | |
505 DCHECK(pattern->IsObjectLiteral() || pattern->IsArrayLiteral()); | |
506 return PreParserExpression::AssignmentPattern(); | |
507 } | 502 } |
508 PreParserExpression NewYield(PreParserExpression generator_object, | 503 PreParserExpression NewYield(PreParserExpression generator_object, |
509 PreParserExpression expression, | 504 PreParserExpression expression, |
510 Yield::Kind yield_kind, | 505 Yield::Kind yield_kind, |
511 int pos) { | 506 int pos) { |
512 return PreParserExpression::Default(); | 507 return PreParserExpression::Default(); |
513 } | 508 } |
514 PreParserExpression NewConditional(PreParserExpression condition, | 509 PreParserExpression NewConditional(PreParserExpression condition, |
515 PreParserExpression then_expression, | 510 PreParserExpression then_expression, |
516 PreParserExpression else_expression, | 511 PreParserExpression else_expression, |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1146 const PreParserFormalParameters& parameters, FunctionKind kind, | 1141 const PreParserFormalParameters& parameters, FunctionKind kind, |
1147 FunctionLiteral::FunctionType function_type, bool* ok) { | 1142 FunctionLiteral::FunctionType function_type, bool* ok) { |
1148 return pre_parser_->ParseEagerFunctionBody(function_name, pos, parameters, | 1143 return pre_parser_->ParseEagerFunctionBody(function_name, pos, parameters, |
1149 kind, function_type, ok); | 1144 kind, function_type, ok); |
1150 } | 1145 } |
1151 | 1146 |
1152 } // namespace internal | 1147 } // namespace internal |
1153 } // namespace v8 | 1148 } // namespace v8 |
1154 | 1149 |
1155 #endif // V8_PARSING_PREPARSER_H | 1150 #endif // V8_PARSING_PREPARSER_H |
OLD | NEW |