| Index: src/parsing/scanner.cc
|
| diff --git a/src/parsing/scanner.cc b/src/parsing/scanner.cc
|
| index 524740885b7450cd2c799398f2955fc4554a1a80..e41384c9bed4becac99ca663ebd5212e880fb5e4 100644
|
| --- a/src/parsing/scanner.cc
|
| +++ b/src/parsing/scanner.cc
|
| @@ -100,135 +100,51 @@ STATIC_ASSERT(Token::NUM_TOKENS <= 0x100);
|
|
|
| // Table of one-character tokens, by character (0x00..0x7f only).
|
| static const byte one_char_tokens[] = {
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::LPAREN, // 0x28
|
| - Token::RPAREN, // 0x29
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::COMMA, // 0x2c
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::COLON, // 0x3a
|
| - Token::SEMICOLON, // 0x3b
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::CONDITIONAL, // 0x3f
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::LBRACK, // 0x5b
|
| - Token::ILLEGAL,
|
| - Token::RBRACK, // 0x5d
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::ILLEGAL,
|
| - Token::LBRACE, // 0x7b
|
| - Token::ILLEGAL,
|
| - Token::RBRACE, // 0x7d
|
| - Token::BIT_NOT, // 0x7e
|
| - Token::ILLEGAL
|
| -};
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::LPAREN, // 0x28
|
| + Token::RPAREN, // 0x29
|
| + Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::COMMA, // 0x2c
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::COLON, // 0x3a
|
| + Token::SEMICOLON, // 0x3b
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::CONDITIONAL, // 0x3f
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::LBRACK, // 0x5b
|
| + Token::ILLEGAL,
|
| + Token::RBRACK, // 0x5d
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL, Token::ILLEGAL,
|
| + Token::ILLEGAL,
|
| + Token::LBRACE, // 0x7b
|
| + Token::ILLEGAL,
|
| + Token::RBRACE, // 0x7d
|
| + Token::BIT_NOT, // 0x7e
|
| + Token::ILLEGAL};
|
|
|
|
|
| Token::Value Scanner::Next() {
|
| @@ -376,8 +292,7 @@ void Scanner::TryToParseSourceURLComment() {
|
| } else {
|
| return;
|
| }
|
| - if (c0_ != '=')
|
| - return;
|
| + if (c0_ != '=') return;
|
| Advance();
|
| value->Reset();
|
| while (c0_ >= 0 && unicode_cache_->IsWhiteSpace(c0_)) {
|
| @@ -468,7 +383,8 @@ void Scanner::Scan() {
|
| token = Token::WHITESPACE;
|
| break;
|
|
|
| - case '"': case '\'':
|
| + case '"':
|
| + case '\'':
|
| token = ScanString();
|
| break;
|
|
|
| @@ -747,14 +663,25 @@ bool Scanner::ScanEscape() {
|
|
|
| switch (c) {
|
| case '\'': // fall through
|
| - case '"' : // fall through
|
| - case '\\': break;
|
| - case 'b' : c = '\b'; break;
|
| - case 'f' : c = '\f'; break;
|
| - case 'n' : c = '\n'; break;
|
| - case 'r' : c = '\r'; break;
|
| - case 't' : c = '\t'; break;
|
| - case 'u' : {
|
| + case '"': // fall through
|
| + case '\\':
|
| + break;
|
| + case 'b':
|
| + c = '\b';
|
| + break;
|
| + case 'f':
|
| + c = '\f';
|
| + break;
|
| + case 'n':
|
| + c = '\n';
|
| + break;
|
| + case 'r':
|
| + c = '\r';
|
| + break;
|
| + case 't':
|
| + c = '\t';
|
| + break;
|
| + case 'u': {
|
| c = ScanUnicodeEscape<capture_raw>();
|
| if (c < 0) return false;
|
| break;
|
| @@ -838,8 +765,7 @@ Token::Value Scanner::ScanString() {
|
| AddLiteralChar(c);
|
| }
|
|
|
| - while (c0_ != quote && c0_ >= 0
|
| - && !unicode_cache_->IsLineTerminator(c0_)) {
|
| + while (c0_ != quote && c0_ >= 0 && !unicode_cache_->IsLineTerminator(c0_)) {
|
| uc32 c = c0_;
|
| Advance();
|
| if (c == '\\') {
|
| @@ -947,8 +873,7 @@ Token::Value Scanner::ScanTemplateContinuation() {
|
|
|
|
|
| void Scanner::ScanDecimalDigits() {
|
| - while (IsDecimalDigit(c0_))
|
| - AddLiteralCharAdvance();
|
| + while (IsDecimalDigit(c0_)) AddLiteralCharAdvance();
|
| }
|
|
|
|
|
| @@ -1012,7 +937,7 @@ Token::Value Scanner::ScanNumber(bool seen_period) {
|
| kind = DECIMAL;
|
| break;
|
| }
|
| - if (c0_ < '0' || '7' < c0_) {
|
| + if (c0_ < '0' || '7' < c0_) {
|
| // Octal literal finished.
|
| octal_pos_ = Location(start_pos, source_pos());
|
| break;
|
| @@ -1059,8 +984,7 @@ Token::Value Scanner::ScanNumber(bool seen_period) {
|
| if (kind != DECIMAL) return Token::ILLEGAL;
|
| // scan exponent
|
| AddLiteralCharAdvance();
|
| - if (c0_ == '+' || c0_ == '-')
|
| - AddLiteralCharAdvance();
|
| + if (c0_ == '+' || c0_ == '-') AddLiteralCharAdvance();
|
| if (!IsDecimalDigit(c0_)) {
|
| // we must have at least one decimal digit after 'e'/'E'
|
| return Token::ILLEGAL;
|
| @@ -1186,9 +1110,9 @@ static Token::Value KeywordOrIdentifierToken(const uint8_t* input,
|
| }
|
| switch (input[0]) {
|
| default:
|
| -#define KEYWORD_GROUP_CASE(ch) \
|
| - break; \
|
| - case ch:
|
| +#define KEYWORD_GROUP_CASE(ch) \
|
| + break; \
|
| + case ch:
|
| #define KEYWORD(keyword, token) \
|
| { \
|
| /* 'keyword' is a char array, so sizeof(keyword) is */ \
|
| @@ -1213,7 +1137,7 @@ static Token::Value KeywordOrIdentifierToken(const uint8_t* input,
|
| return token; \
|
| } \
|
| }
|
| - KEYWORDS(KEYWORD_GROUP_CASE, KEYWORD)
|
| + KEYWORDS(KEYWORD_GROUP_CASE, KEYWORD)
|
| }
|
| return Token::IDENTIFIER;
|
| }
|
| @@ -1282,8 +1206,7 @@ Token::Value Scanner::ScanIdentifierOrKeyword() {
|
| // Scan identifier start character.
|
| uc32 c = ScanIdentifierUnicodeEscape();
|
| // Only allow legal identifier start characters.
|
| - if (c < 0 ||
|
| - c == '\\' || // No recursive escapes.
|
| + if (c < 0 || c == '\\' || // No recursive escapes.
|
| !unicode_cache_->IsIdentifierStart(c)) {
|
| return Token::ILLEGAL;
|
| }
|
| @@ -1325,9 +1248,7 @@ Token::Value Scanner::ScanIdentifierSuffix(LiteralScope* literal,
|
| uc32 c = ScanIdentifierUnicodeEscape();
|
| escaped = true;
|
| // Only allow legal identifier part characters.
|
| - if (c < 0 ||
|
| - c == '\\' ||
|
| - !unicode_cache_->IsIdentifierPart(c)) {
|
| + if (c < 0 || c == '\\' || !unicode_cache_->IsIdentifierPart(c)) {
|
| return Token::ILLEGAL;
|
| }
|
| AddLiteralChar(c);
|
| @@ -1459,8 +1380,7 @@ const AstRawString* Scanner::CurrentRawSymbol(
|
| double Scanner::DoubleValue() {
|
| DCHECK(is_literal_one_byte());
|
| return StringToDouble(
|
| - unicode_cache_,
|
| - literal_one_byte_string(),
|
| + unicode_cache_, literal_one_byte_string(),
|
| ALLOW_HEX | ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL | ALLOW_BINARY);
|
| }
|
|
|
| @@ -1540,15 +1460,14 @@ int DuplicateFinder::AddTwoByteSymbol(Vector<const uint16_t> key, int value) {
|
| }
|
|
|
|
|
| -int DuplicateFinder::AddSymbol(Vector<const uint8_t> key,
|
| - bool is_one_byte,
|
| +int DuplicateFinder::AddSymbol(Vector<const uint8_t> key, bool is_one_byte,
|
| int value) {
|
| uint32_t hash = Hash(key, is_one_byte);
|
| byte* encoding = BackupKey(key, is_one_byte);
|
| HashMap::Entry* entry = map_.LookupOrInsert(encoding, hash);
|
| int old_value = static_cast<int>(reinterpret_cast<intptr_t>(entry->value));
|
| entry->value =
|
| - reinterpret_cast<void*>(static_cast<intptr_t>(value | old_value));
|
| + reinterpret_cast<void*>(static_cast<intptr_t>(value | old_value));
|
| return old_value;
|
| }
|
|
|
| @@ -1561,8 +1480,7 @@ int DuplicateFinder::AddNumber(Vector<const uint8_t> key, int value) {
|
| }
|
|
|
| int flags = ALLOW_HEX | ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL | ALLOW_BINARY;
|
| - double double_value = StringToDouble(
|
| - unicode_constants_, key, flags, 0.0);
|
| + double double_value = StringToDouble(unicode_constants_, key, flags, 0.0);
|
| int length;
|
| const char* string;
|
| if (!std::isfinite(double_value)) {
|
| @@ -1573,8 +1491,9 @@ int DuplicateFinder::AddNumber(Vector<const uint8_t> key, int value) {
|
| Vector<char>(number_buffer_, kBufferSize));
|
| length = StrLength(string);
|
| }
|
| - return AddSymbol(Vector<const byte>(reinterpret_cast<const byte*>(string),
|
| - length), true, value);
|
| + return AddSymbol(
|
| + Vector<const byte>(reinterpret_cast<const byte*>(string), length), true,
|
| + value);
|
| }
|
|
|
|
|
| @@ -1590,7 +1509,8 @@ bool DuplicateFinder::IsNumberCanonical(Vector<const uint8_t> number) {
|
| pos++;
|
| } else {
|
| while (pos < length &&
|
| - static_cast<unsigned>(number[pos] - '0') <= ('9' - '0')) pos++;
|
| + static_cast<unsigned>(number[pos] - '0') <= ('9' - '0'))
|
| + pos++;
|
| }
|
| if (length == pos) return true;
|
| if (number[pos] != '.') return false;
|
| @@ -1658,8 +1578,7 @@ byte* DuplicateFinder::BackupKey(Vector<const uint8_t> bytes,
|
| backing_store_.Add(
|
| static_cast<uint8_t>((one_byte_length >> 21) | 0x80u));
|
| }
|
| - backing_store_.Add(
|
| - static_cast<uint8_t>((one_byte_length >> 14) | 0x80u));
|
| + backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 14) | 0x80u));
|
| }
|
| backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u));
|
| }
|
|
|