| 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/parsing/parser-base.h" | 9 #include "src/parsing/parser-base.h" |
| 10 | 10 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 } | 60 } |
| 61 static PreParserIdentifier Enum() { | 61 static PreParserIdentifier Enum() { |
| 62 return PreParserIdentifier(kEnumIdentifier); | 62 return PreParserIdentifier(kEnumIdentifier); |
| 63 } | 63 } |
| 64 static PreParserIdentifier Await() { | 64 static PreParserIdentifier Await() { |
| 65 return PreParserIdentifier(kAwaitIdentifier); | 65 return PreParserIdentifier(kAwaitIdentifier); |
| 66 } | 66 } |
| 67 static PreParserIdentifier Async() { | 67 static PreParserIdentifier Async() { |
| 68 return PreParserIdentifier(kAsyncIdentifier); | 68 return PreParserIdentifier(kAsyncIdentifier); |
| 69 } | 69 } |
| 70 static PreParserIdentifier Name() { |
| 71 return PreParserIdentifier(kNameIdentifier); |
| 72 } |
| 70 bool IsEmpty() const { return type_ == kEmptyIdentifier; } | 73 bool IsEmpty() const { return type_ == kEmptyIdentifier; } |
| 71 bool IsEval() const { return type_ == kEvalIdentifier; } | 74 bool IsEval() const { return type_ == kEvalIdentifier; } |
| 72 bool IsArguments() const { return type_ == kArgumentsIdentifier; } | 75 bool IsArguments() const { return type_ == kArgumentsIdentifier; } |
| 73 bool IsEvalOrArguments() const { return IsEval() || IsArguments(); } | 76 bool IsEvalOrArguments() const { return IsEval() || IsArguments(); } |
| 74 bool IsUndefined() const { return type_ == kUndefinedIdentifier; } | 77 bool IsUndefined() const { return type_ == kUndefinedIdentifier; } |
| 75 bool IsLet() const { return type_ == kLetIdentifier; } | 78 bool IsLet() const { return type_ == kLetIdentifier; } |
| 76 bool IsStatic() const { return type_ == kStaticIdentifier; } | 79 bool IsStatic() const { return type_ == kStaticIdentifier; } |
| 77 bool IsYield() const { return type_ == kYieldIdentifier; } | 80 bool IsYield() const { return type_ == kYieldIdentifier; } |
| 78 bool IsPrototype() const { return type_ == kPrototypeIdentifier; } | 81 bool IsPrototype() const { return type_ == kPrototypeIdentifier; } |
| 79 bool IsConstructor() const { return type_ == kConstructorIdentifier; } | 82 bool IsConstructor() const { return type_ == kConstructorIdentifier; } |
| 80 bool IsEnum() const { return type_ == kEnumIdentifier; } | 83 bool IsEnum() const { return type_ == kEnumIdentifier; } |
| 81 bool IsAwait() const { return type_ == kAwaitIdentifier; } | 84 bool IsAwait() const { return type_ == kAwaitIdentifier; } |
| 85 bool IsName() const { return type_ == kNameIdentifier; } |
| 82 bool IsFutureStrictReserved() const { | 86 bool IsFutureStrictReserved() const { |
| 83 return type_ == kFutureStrictReservedIdentifier || | 87 return type_ == kFutureStrictReservedIdentifier || |
| 84 type_ == kLetIdentifier || type_ == kStaticIdentifier || | 88 type_ == kLetIdentifier || type_ == kStaticIdentifier || |
| 85 type_ == kYieldIdentifier; | 89 type_ == kYieldIdentifier; |
| 86 } | 90 } |
| 87 | 91 |
| 88 // Allow identifier->name()[->length()] to work. The preparser | 92 // Allow identifier->name()[->length()] to work. The preparser |
| 89 // does not need the actual positions/lengths of the identifiers. | 93 // does not need the actual positions/lengths of the identifiers. |
| 90 const PreParserIdentifier* operator->() const { return this; } | 94 const PreParserIdentifier* operator->() const { return this; } |
| 91 const PreParserIdentifier raw_name() const { return *this; } | 95 const PreParserIdentifier raw_name() const { return *this; } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 102 kLetIdentifier, | 106 kLetIdentifier, |
| 103 kStaticIdentifier, | 107 kStaticIdentifier, |
| 104 kYieldIdentifier, | 108 kYieldIdentifier, |
| 105 kEvalIdentifier, | 109 kEvalIdentifier, |
| 106 kArgumentsIdentifier, | 110 kArgumentsIdentifier, |
| 107 kUndefinedIdentifier, | 111 kUndefinedIdentifier, |
| 108 kPrototypeIdentifier, | 112 kPrototypeIdentifier, |
| 109 kConstructorIdentifier, | 113 kConstructorIdentifier, |
| 110 kEnumIdentifier, | 114 kEnumIdentifier, |
| 111 kAwaitIdentifier, | 115 kAwaitIdentifier, |
| 112 kAsyncIdentifier | 116 kAsyncIdentifier, |
| 117 kNameIdentifier |
| 113 }; | 118 }; |
| 114 | 119 |
| 115 explicit PreParserIdentifier(Type type) : type_(type), string_(nullptr) {} | 120 explicit PreParserIdentifier(Type type) : type_(type), string_(nullptr) {} |
| 116 Type type_; | 121 Type type_; |
| 117 // Only non-nullptr when PreParser.track_unresolved_variables_ is true. | 122 // Only non-nullptr when PreParser.track_unresolved_variables_ is true. |
| 118 const AstRawString* string_; | 123 const AstRawString* string_; |
| 119 friend class PreParserExpression; | 124 friend class PreParserExpression; |
| 120 friend class PreParser; | 125 friend class PreParser; |
| 121 friend class PreParserFactory; | 126 friend class PreParserFactory; |
| 122 }; | 127 }; |
| (...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1124 } | 1129 } |
| 1125 | 1130 |
| 1126 V8_INLINE bool IsPrototype(PreParserIdentifier identifier) const { | 1131 V8_INLINE bool IsPrototype(PreParserIdentifier identifier) const { |
| 1127 return identifier.IsPrototype(); | 1132 return identifier.IsPrototype(); |
| 1128 } | 1133 } |
| 1129 | 1134 |
| 1130 V8_INLINE bool IsConstructor(PreParserIdentifier identifier) const { | 1135 V8_INLINE bool IsConstructor(PreParserIdentifier identifier) const { |
| 1131 return identifier.IsConstructor(); | 1136 return identifier.IsConstructor(); |
| 1132 } | 1137 } |
| 1133 | 1138 |
| 1139 V8_INLINE bool IsName(PreParserIdentifier identifier) const { |
| 1140 return identifier.IsName(); |
| 1141 } |
| 1142 |
| 1134 V8_INLINE bool IsDirectEvalCall(PreParserExpression expression) const { | 1143 V8_INLINE bool IsDirectEvalCall(PreParserExpression expression) const { |
| 1135 return expression.IsDirectEvalCall(); | 1144 return expression.IsDirectEvalCall(); |
| 1136 } | 1145 } |
| 1137 | 1146 |
| 1138 V8_INLINE static bool IsBoilerplateProperty(PreParserExpression property) { | 1147 V8_INLINE static bool IsBoilerplateProperty(PreParserExpression property) { |
| 1139 // PreParser doesn't count boilerplate properties. | 1148 // PreParser doesn't count boilerplate properties. |
| 1140 return false; | 1149 return false; |
| 1141 } | 1150 } |
| 1142 | 1151 |
| 1143 V8_INLINE bool IsNative(PreParserExpression expr) const { | 1152 V8_INLINE bool IsNative(PreParserExpression expr) const { |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1540 function_state_->NextMaterializedLiteralIndex(); | 1549 function_state_->NextMaterializedLiteralIndex(); |
| 1541 function_state_->NextMaterializedLiteralIndex(); | 1550 function_state_->NextMaterializedLiteralIndex(); |
| 1542 } | 1551 } |
| 1543 return EmptyExpression(); | 1552 return EmptyExpression(); |
| 1544 } | 1553 } |
| 1545 | 1554 |
| 1546 } // namespace internal | 1555 } // namespace internal |
| 1547 } // namespace v8 | 1556 } // namespace v8 |
| 1548 | 1557 |
| 1549 #endif // V8_PARSING_PREPARSER_H | 1558 #endif // V8_PARSING_PREPARSER_H |
| OLD | NEW |