| 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 982 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 break; | 993 break; |
| 994 } | 994 } |
| 995 AddLiteralCharAdvance(); | 995 AddLiteralCharAdvance(); |
| 996 } | 996 } |
| 997 } | 997 } |
| 998 } | 998 } |
| 999 | 999 |
| 1000 // Parse decimal digits and allow trailing fractional part. | 1000 // Parse decimal digits and allow trailing fractional part. |
| 1001 if (kind == DECIMAL) { | 1001 if (kind == DECIMAL) { |
| 1002 if (at_start) { | 1002 if (at_start) { |
| 1003 int value = 0; | 1003 uint64_t value = 0; |
| 1004 while (IsDecimalDigit(c0_)) { | 1004 while (IsDecimalDigit(c0_)) { |
| 1005 value = 10 * value + (c0_ - '0'); | 1005 value = 10 * value + (c0_ - '0'); |
| 1006 | 1006 |
| 1007 uc32 first_char = c0_; | 1007 uc32 first_char = c0_; |
| 1008 Advance<false, false>(); | 1008 Advance<false, false>(); |
| 1009 AddLiteralChar(first_char); | 1009 AddLiteralChar(first_char); |
| 1010 } | 1010 } |
| 1011 | 1011 |
| 1012 if (next_.literal_chars->one_byte_literal().length() < 10 && | 1012 if (next_.literal_chars->one_byte_literal().length() <= 10 && |
| 1013 c0_ != '.' && c0_ != 'e' && c0_ != 'E') { | 1013 value <= Smi::kMaxValue && c0_ != '.' && c0_ != 'e' && c0_ != 'E') { |
| 1014 smi_value_ = value; | 1014 smi_value_ = static_cast<int>(value); |
| 1015 literal.Complete(); | 1015 literal.Complete(); |
| 1016 HandleLeadSurrogate(); | 1016 HandleLeadSurrogate(); |
| 1017 | 1017 |
| 1018 return Token::SMI; | 1018 return Token::SMI; |
| 1019 } | 1019 } |
| 1020 HandleLeadSurrogate(); | 1020 HandleLeadSurrogate(); |
| 1021 } | 1021 } |
| 1022 | 1022 |
| 1023 ScanDecimalDigits(); // optional | 1023 ScanDecimalDigits(); // optional |
| 1024 if (c0_ == '.') { | 1024 if (c0_ == '.') { |
| (...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1421 | 1421 |
| 1422 double Scanner::DoubleValue() { | 1422 double Scanner::DoubleValue() { |
| 1423 DCHECK(is_literal_one_byte()); | 1423 DCHECK(is_literal_one_byte()); |
| 1424 return StringToDouble( | 1424 return StringToDouble( |
| 1425 unicode_cache_, | 1425 unicode_cache_, |
| 1426 literal_one_byte_string(), | 1426 literal_one_byte_string(), |
| 1427 ALLOW_HEX | ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL | ALLOW_BINARY); | 1427 ALLOW_HEX | ALLOW_OCTAL | ALLOW_IMPLICIT_OCTAL | ALLOW_BINARY); |
| 1428 } | 1428 } |
| 1429 | 1429 |
| 1430 | 1430 |
| 1431 int Scanner::FindNumber(DuplicateFinder* finder, int value) { | |
| 1432 return finder->AddNumber(literal_one_byte_string(), value); | |
| 1433 } | |
| 1434 | |
| 1435 | |
| 1436 int Scanner::FindSymbol(DuplicateFinder* finder, int value) { | 1431 int Scanner::FindSymbol(DuplicateFinder* finder, int value) { |
| 1437 if (is_literal_one_byte()) { | 1432 if (is_literal_one_byte()) { |
| 1438 return finder->AddOneByteSymbol(literal_one_byte_string(), value); | 1433 return finder->AddOneByteSymbol(literal_one_byte_string(), value); |
| 1439 } | 1434 } |
| 1440 return finder->AddTwoByteSymbol(literal_two_byte_string(), value); | 1435 return finder->AddTwoByteSymbol(literal_two_byte_string(), value); |
| 1441 } | 1436 } |
| 1442 | 1437 |
| 1443 | 1438 |
| 1444 int DuplicateFinder::AddOneByteSymbol(Vector<const uint8_t> key, int value) { | 1439 int DuplicateFinder::AddOneByteSymbol(Vector<const uint8_t> key, int value) { |
| 1445 return AddSymbol(key, true, value); | 1440 return AddSymbol(key, true, value); |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1574 } | 1569 } |
| 1575 backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u)); | 1570 backing_store_.Add(static_cast<uint8_t>((one_byte_length >> 7) | 0x80u)); |
| 1576 } | 1571 } |
| 1577 backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f)); | 1572 backing_store_.Add(static_cast<uint8_t>(one_byte_length & 0x7f)); |
| 1578 | 1573 |
| 1579 backing_store_.AddBlock(bytes); | 1574 backing_store_.AddBlock(bytes); |
| 1580 return backing_store_.EndSequence().start(); | 1575 return backing_store_.EndSequence().start(); |
| 1581 } | 1576 } |
| 1582 | 1577 |
| 1583 } } // namespace v8::internal | 1578 } } // namespace v8::internal |
| OLD | NEW |