diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-12 14:07:37 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2017-07-17 10:29:26 +0000 |
commit | ec02ee4181c49b61fce1c8fb99292dbb8139cc90 (patch) | |
tree | 25cde714b2b71eb639d1cd53f5a22e9ba76e14ef /chromium/v8/src/json-stringifier.cc | |
parent | bb09965444b5bb20b096a291445170876225268d (diff) | |
download | qtwebengine-chromium-ec02ee4181c49b61fce1c8fb99292dbb8139cc90.tar.gz |
BASELINE: Update Chromium to 59.0.3071.134
Change-Id: Id02ef6fb2204c5fd21668a1c3e6911c83b17585a
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/v8/src/json-stringifier.cc')
-rw-r--r-- | chromium/v8/src/json-stringifier.cc | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/chromium/v8/src/json-stringifier.cc b/chromium/v8/src/json-stringifier.cc index a187fb54bd9..f31aedd9a94 100644 --- a/chromium/v8/src/json-stringifier.cc +++ b/chromium/v8/src/json-stringifier.cc @@ -101,15 +101,6 @@ MaybeHandle<Object> JsonStringifier::Stringify(Handle<Object> object, return MaybeHandle<Object>(); } -bool IsInList(Handle<String> key, List<Handle<String> >* list) { - // TODO(yangguo): This is O(n^2) for n properties in the list. Deal with this - // if this becomes an issue. - for (const Handle<String>& existing : *list) { - if (String::Equals(existing, key)) return true; - } - return false; -} - bool JsonStringifier::InitializeReplacer(Handle<Object> replacer) { DCHECK(property_list_.is_null()); DCHECK(replacer_function_.is_null()); @@ -117,7 +108,7 @@ bool JsonStringifier::InitializeReplacer(Handle<Object> replacer) { if (is_array.IsNothing()) return false; if (is_array.FromJust()) { HandleScope handle_scope(isolate_); - List<Handle<String> > list; + Handle<OrderedHashSet> set = factory()->NewOrderedHashSet(); Handle<Object> length_obj; ASSIGN_RETURN_ON_EXCEPTION_VALUE( isolate_, length_obj, @@ -140,12 +131,12 @@ bool JsonStringifier::InitializeReplacer(Handle<Object> replacer) { } } if (key.is_null()) continue; - if (!IsInList(key, &list)) list.Add(key); - } - property_list_ = factory()->NewUninitializedFixedArray(list.length()); - for (int i = 0; i < list.length(); i++) { - property_list_->set(i, *list[i]); + // Object keys are internalized, so do it here. + key = factory()->InternalizeString(key); + set = OrderedHashSet::Add(set, key); } + property_list_ = OrderedHashSet::ConvertToKeysArray( + set, GetKeysConversion::kKeepNumbers); property_list_ = handle_scope.CloseAndEscape(property_list_); } else if (replacer->IsCallable()) { replacer_function_ = Handle<JSReceiver>::cast(replacer); |