diff options
author | Michaël Zasso <targos@protonmail.com> | 2017-06-06 10:28:14 +0200 |
---|---|---|
committer | Michaël Zasso <targos@protonmail.com> | 2017-06-07 10:33:31 +0200 |
commit | 3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch) | |
tree | 9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/src/json-parser.cc | |
parent | 91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff) | |
download | android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.gz android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.tar.bz2 android-node-v8-3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09.zip |
deps: update V8 to 5.9.211.32
PR-URL: https://github.com/nodejs/node/pull/13263
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: Myles Borins <myles.borins@gmail.com>
Diffstat (limited to 'deps/v8/src/json-parser.cc')
-rw-r--r-- | deps/v8/src/json-parser.cc | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/deps/v8/src/json-parser.cc b/deps/v8/src/json-parser.cc index 2ec79caefc..de404e4c62 100644 --- a/deps/v8/src/json-parser.cc +++ b/deps/v8/src/json-parser.cc @@ -720,6 +720,10 @@ Handle<String> JsonParser<seq_one_byte>::ScanJsonString() { // Fast path for existing internalized strings. If the the string being // parsed is not a known internalized string, contains backslashes or // unexpectedly reaches the end of string, return with an empty handle. + + // We intentionally use local variables instead of fields, compute hash + // while we are iterating a string and manually inline StringTable lookup + // here. uint32_t running_hash = isolate()->heap()->HashSeed(); int position = position_; uc32 c0 = c0_; @@ -731,11 +735,19 @@ Handle<String> JsonParser<seq_one_byte>::ScanJsonString() { return SlowScanJsonString<SeqOneByteString, uint8_t>(source_, beg_pos, position_); } - if (c0 < 0x20) return Handle<String>::null(); + if (c0 < 0x20) { + c0_ = c0; + position_ = position; + return Handle<String>::null(); + } running_hash = StringHasher::AddCharacterCore(running_hash, static_cast<uint16_t>(c0)); position++; - if (position >= source_length_) return Handle<String>::null(); + if (position >= source_length_) { + c0_ = kEndOfString; + position_ = position; + return Handle<String>::null(); + } c0 = seq_source_->SeqOneByteStringGet(position); } while (c0 != '"'); int length = position - position_; |