From e77d0abd4aca48ce9703ce560823dc80aa7e0c08 Mon Sep 17 00:00:00 2001 From: verwaest Date: Wed, 11 Mar 2015 04:33:18 -0700 Subject: [PATCH] [scanner] Extend fast-smi parsing to the entire range minus Smi::kMinValue BUG= Review URL: https://codereview.chromium.org/998893002 Cr-Commit-Position: refs/heads/master@{#27129} --- src/scanner.cc | 13 ++++--------- src/scanner.h | 1 - 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/scanner.cc b/src/scanner.cc index 9e90868131..f727a6fed2 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(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); diff --git a/src/scanner.h b/src/scanner.h index 2e96a99d87..416b5a11ac 100644 --- a/src/scanner.h +++ b/src/scanner.h @@ -427,7 +427,6 @@ class Scanner { } } - int FindNumber(DuplicateFinder* finder, int value); int FindSymbol(DuplicateFinder* finder, int value); UnicodeCache* unicode_cache() { return unicode_cache_; }