summaryrefslogtreecommitdiff
path: root/chromium/v8/src/json-stringifier.cc
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-12 14:07:37 +0200
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2017-07-17 10:29:26 +0000
commitec02ee4181c49b61fce1c8fb99292dbb8139cc90 (patch)
tree25cde714b2b71eb639d1cd53f5a22e9ba76e14ef /chromium/v8/src/json-stringifier.cc
parentbb09965444b5bb20b096a291445170876225268d (diff)
downloadqtwebengine-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.cc21
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);