| 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 #ifndef V8_PARSING_JSON_PARSER_H_ | 5 #ifndef V8_PARSING_JSON_PARSER_H_ |
| 6 #define V8_PARSING_JSON_PARSER_H_ | 6 #define V8_PARSING_JSON_PARSER_H_ |
| 7 | 7 |
| 8 #include "src/char-predicates.h" | 8 #include "src/char-predicates.h" |
| 9 #include "src/conversions.h" | 9 #include "src/conversions.h" |
| 10 #include "src/debug/debug.h" | 10 #include "src/debug/debug.h" |
| (...skipping 743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 754 do { | 754 do { |
| 755 if (c0 == '\\') { | 755 if (c0 == '\\') { |
| 756 c0_ = c0; | 756 c0_ = c0; |
| 757 int beg_pos = position_; | 757 int beg_pos = position_; |
| 758 position_ = position; | 758 position_ = position; |
| 759 return SlowScanJsonString<SeqOneByteString, uint8_t>(source_, | 759 return SlowScanJsonString<SeqOneByteString, uint8_t>(source_, |
| 760 beg_pos, | 760 beg_pos, |
| 761 position_); | 761 position_); |
| 762 } | 762 } |
| 763 if (c0 < 0x20) return Handle<String>::null(); | 763 if (c0 < 0x20) return Handle<String>::null(); |
| 764 if (static_cast<uint32_t>(c0) > | 764 running_hash = StringHasher::AddCharacterCore(running_hash, |
| 765 unibrow::Utf16::kMaxNonSurrogateCharCode) { | 765 static_cast<uint16_t>(c0)); |
| 766 running_hash = | |
| 767 StringHasher::AddCharacterCore(running_hash, | |
| 768 unibrow::Utf16::LeadSurrogate(c0)); | |
| 769 running_hash = | |
| 770 StringHasher::AddCharacterCore(running_hash, | |
| 771 unibrow::Utf16::TrailSurrogate(c0)); | |
| 772 } else { | |
| 773 running_hash = StringHasher::AddCharacterCore(running_hash, c0); | |
| 774 } | |
| 775 position++; | 766 position++; |
| 776 if (position >= source_length_) return Handle<String>::null(); | 767 if (position >= source_length_) return Handle<String>::null(); |
| 777 c0 = seq_source_->SeqOneByteStringGet(position); | 768 c0 = seq_source_->SeqOneByteStringGet(position); |
| 778 } while (c0 != '"'); | 769 } while (c0 != '"'); |
| 779 int length = position - position_; | 770 int length = position - position_; |
| 780 uint32_t hash = (length <= String::kMaxHashCalcLength) | 771 uint32_t hash = (length <= String::kMaxHashCalcLength) |
| 781 ? StringHasher::GetHashCore(running_hash) | 772 ? StringHasher::GetHashCore(running_hash) |
| 782 : static_cast<uint32_t>(length); | 773 : static_cast<uint32_t>(length); |
| 783 Vector<const uint8_t> string_vector( | 774 Vector<const uint8_t> string_vector( |
| 784 seq_source_->GetChars() + position_, length); | 775 seq_source_->GetChars() + position_, length); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 842 DCHECK_EQ('"', c0_); | 833 DCHECK_EQ('"', c0_); |
| 843 // Advance past the last '"'. | 834 // Advance past the last '"'. |
| 844 AdvanceSkipWhitespace(); | 835 AdvanceSkipWhitespace(); |
| 845 return result; | 836 return result; |
| 846 } | 837 } |
| 847 | 838 |
| 848 } // namespace internal | 839 } // namespace internal |
| 849 } // namespace v8 | 840 } // namespace v8 |
| 850 | 841 |
| 851 #endif // V8_PARSING_JSON_PARSER_H_ | 842 #endif // V8_PARSING_JSON_PARSER_H_ |
| OLD | NEW |