Index: src/scanner.cc |
diff --git a/src/scanner.cc b/src/scanner.cc |
index 9e90868131cc7469b6d88d79e2d409e561915dce..f727a6fed2f5a842cf1b0b4b077187f4bf6d0fda 100644 |
--- a/src/scanner.cc |
+++ b/src/scanner.cc |
@@ -1000,7 +1000,7 @@ Token::Value Scanner::ScanNumber(bool seen_period) { |
// Parse decimal digits and allow trailing fractional part. |
if (kind == DECIMAL) { |
if (at_start) { |
- int value = 0; |
+ uint64_t value = 0; |
while (IsDecimalDigit(c0_)) { |
value = 10 * value + (c0_ - '0'); |
@@ -1009,9 +1009,9 @@ Token::Value Scanner::ScanNumber(bool seen_period) { |
AddLiteralChar(first_char); |
} |
- if (next_.literal_chars->one_byte_literal().length() < 10 && |
- c0_ != '.' && c0_ != 'e' && c0_ != 'E') { |
- smi_value_ = value; |
+ if (next_.literal_chars->one_byte_literal().length() <= 10 && |
+ value <= Smi::kMaxValue && c0_ != '.' && c0_ != 'e' && c0_ != 'E') { |
+ smi_value_ = static_cast<int>(value); |
literal.Complete(); |
HandleLeadSurrogate(); |
@@ -1428,11 +1428,6 @@ double Scanner::DoubleValue() { |
} |
-int Scanner::FindNumber(DuplicateFinder* finder, int value) { |
- return finder->AddNumber(literal_one_byte_string(), value); |
-} |
- |
- |
int Scanner::FindSymbol(DuplicateFinder* finder, int value) { |
if (is_literal_one_byte()) { |
return finder->AddOneByteSymbol(literal_one_byte_string(), value); |