aboutsummaryrefslogtreecommitdiff
path: root/deps/v8/src/json-parser.cc
diff options
context:
space:
mode:
authorMichaël Zasso <targos@protonmail.com>2017-06-06 10:28:14 +0200
committerMichaël Zasso <targos@protonmail.com>2017-06-07 10:33:31 +0200
commit3dc8c3bed4cf3a77607edbb0b015e33f8b60fc09 (patch)
tree9dee56e142638b34f1eccbd0ad88c3bce5377c29 /deps/v8/src/json-parser.cc
parent91a1bbe3055a660194ca4d403795aa0c03e9d056 (diff)
downloadandroid-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.cc16
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_;