| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 // Features shared by parsing and pre-parsing scanners. | 5 // Features shared by parsing and pre-parsing scanners. |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 | 8 |
| 9 #include <cmath> | 9 #include <cmath> |
| 10 | 10 |
| (...skipping 1000 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1011 } | 1011 } |
| 1012 KEYWORDS(KEYWORD_GROUP_CASE, KEYWORD) | 1012 KEYWORDS(KEYWORD_GROUP_CASE, KEYWORD) |
| 1013 } | 1013 } |
| 1014 return Token::IDENTIFIER; | 1014 return Token::IDENTIFIER; |
| 1015 } | 1015 } |
| 1016 | 1016 |
| 1017 | 1017 |
| 1018 bool Scanner::IdentifierIsFutureStrictReserved( | 1018 bool Scanner::IdentifierIsFutureStrictReserved( |
| 1019 const AstRawString* string) const { | 1019 const AstRawString* string) const { |
| 1020 // Keywords are always 1-byte strings. | 1020 // Keywords are always 1-byte strings. |
| 1021 return string->is_one_byte() && | 1021 if (!string->is_one_byte()) return false; |
| 1022 Token::FUTURE_STRICT_RESERVED_WORD == | 1022 if (string->IsOneByteEqualTo("let") || string->IsOneByteEqualTo("static") || |
| 1023 KeywordOrIdentifierToken(string->raw_data(), string->length(), | 1023 string->IsOneByteEqualTo("yield")) { |
| 1024 harmony_scoping_, harmony_modules_, | 1024 return true; |
| 1025 harmony_classes_); | 1025 } |
| 1026 return Token::FUTURE_STRICT_RESERVED_WORD == |
| 1027 KeywordOrIdentifierToken(string->raw_data(), string->length(), |
| 1028 harmony_scoping_, harmony_modules_, |
| 1029 harmony_classes_); |
| 1026 } | 1030 } |
| 1027 | 1031 |
| 1028 | 1032 |
| 1029 Token::Value Scanner::ScanIdentifierOrKeyword() { | 1033 Token::Value Scanner::ScanIdentifierOrKeyword() { |
| 1030 DCHECK(unicode_cache_->IsIdentifierStart(c0_)); | 1034 DCHECK(unicode_cache_->IsIdentifierStart(c0_)); |
| 1031 LiteralScope literal(this); | 1035 LiteralScope literal(this); |
| 1032 // Scan identifier start character. | 1036 // Scan identifier start character. |
| 1033 if (c0_ == '\\') { | 1037 if (c0_ == '\\') { |
| 1034 uc32 c = ScanIdentifierUnicodeEscape(); | 1038 uc32 c = ScanIdentifierUnicodeEscape(); |
| 1035 // Only allow legal identifier start characters. | 1039 // Only allow legal identifier start characters. |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1364 } | 1368 } |
| 1365 backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u)); | 1369 backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u)); |
| 1366 } | 1370 } |
| 1367 backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f)); | 1371 backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f)); |
| 1368 | 1372 |
| 1369 backing_store_.AddBlock(bytes); | 1373 backing_store_.AddBlock(bytes); |
| 1370 return backing_store_.EndSequence().start(); | 1374 return backing_store_.EndSequence().start(); |
| 1371 } | 1375 } |
| 1372 | 1376 |
| 1373 } } // namespace v8::internal | 1377 } } // namespace v8::internal |
| OLD | NEW |