Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(742)

Unified Diff: src/parsing/scanner.cc

Issue 1439693002: [runtime] Support Proxy setPrototypeOf trap (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@2015-11-09_new_Proxy_1417063011
Patch Set: merging with master Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/parsing/scanner.h ('k') | src/parsing/scanner-character-streams.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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));
}
« no previous file with comments | « src/parsing/scanner.h ('k') | src/parsing/scanner-character-streams.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698