diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2016-01-25 11:39:07 +0100 |
---|---|---|
committer | Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> | 2016-01-25 15:20:42 +0000 |
commit | 6c91641271e536ffaa88a1dff5127e42ee99a91e (patch) | |
tree | 703d9dd49602377ddc90cbf886aad37913f2496b /chromium/v8/src/json-stringifier.h | |
parent | b145b7fafd36f0c260d6a768c81fc14e32578099 (diff) | |
download | qtwebengine-chromium-6c91641271e536ffaa88a1dff5127e42ee99a91e.tar.gz |
BASELINE: Update Chromium to 49.0.2623.23
Also adds missing printing sources.
Change-Id: I3726b8f0c7d6751c9fc846096c571fadca7108cd
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'chromium/v8/src/json-stringifier.h')
-rw-r--r-- | chromium/v8/src/json-stringifier.h | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/chromium/v8/src/json-stringifier.h b/chromium/v8/src/json-stringifier.h index fa4946dad7d..5c0459eb1b0 100644 --- a/chromium/v8/src/json-stringifier.h +++ b/chromium/v8/src/json-stringifier.h @@ -223,6 +223,7 @@ MaybeHandle<Object> BasicJsonStringifier::StringifyString( SerializeStringUnchecked_(object->GetFlatContent().ToOneByteVector(), &no_extend); no_extend.Append('\"'); + return no_extend.Finalize(); } else { result = isolate->factory() ->NewRawTwoByteString(worst_case_length) @@ -233,8 +234,8 @@ MaybeHandle<Object> BasicJsonStringifier::StringifyString( SerializeStringUnchecked_(object->GetFlatContent().ToUC16Vector(), &no_extend); no_extend.Append('\"'); + return no_extend.Finalize(); } - return result; } @@ -336,14 +337,13 @@ BasicJsonStringifier::Result BasicJsonStringifier::Serialize_( case JS_VALUE_TYPE: if (deferred_string_key) SerializeDeferredKey(comma, key); return SerializeJSValue(Handle<JSValue>::cast(object)); - case JS_FUNCTION_TYPE: - return UNCHANGED; default: if (object->IsString()) { if (deferred_string_key) SerializeDeferredKey(comma, key); SerializeString(Handle<String>::cast(object)); return SUCCESS; } else if (object->IsJSObject()) { + if (object->IsCallable()) return UNCHANGED; // Go to slow path for global proxy and objects requiring access checks. if (object->IsAccessCheckNeeded() || object->IsJSGlobalProxy()) break; if (deferred_string_key) SerializeDeferredKey(comma, key); @@ -396,9 +396,10 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSValue( DCHECK(value->IsBoolean()); builder_.AppendCString(value->IsTrue() ? "true" : "false"); } else { - // Fail gracefully for special value wrappers. - isolate_->ThrowIllegalOperation(); - return EXCEPTION; + // ES6 24.3.2.1 step 10.c, serialize as an ordinary JSObject. + CHECK(!object->IsAccessCheckNeeded()); + CHECK(!object->IsJSGlobalProxy()); + return SerializeJSObject(object); } return SUCCESS; } @@ -524,7 +525,7 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSObject( HandleScope handle_scope(isolate_); Result stack_push = StackPush(object); if (stack_push != SUCCESS) return stack_push; - DCHECK(!object->IsJSGlobalProxy() && !object->IsGlobalObject()); + DCHECK(!object->IsJSGlobalProxy() && !object->IsJSGlobalObject()); builder_.AppendCharacter('{'); bool comma = false; @@ -566,7 +567,7 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSObject( Handle<FixedArray> contents; ASSIGN_RETURN_ON_EXCEPTION_VALUE( isolate_, contents, - JSReceiver::GetKeys(object, JSReceiver::OWN_ONLY), + JSReceiver::GetKeys(object, JSReceiver::OWN_ONLY, ENUMERABLE_STRINGS), EXCEPTION); for (int i = 0; i < contents->length(); i++) { @@ -681,6 +682,7 @@ void BasicJsonStringifier::SerializeString(Handle<String> object) { } } -} } // namespace v8::internal +} // namespace internal +} // namespace v8 #endif // V8_JSON_STRINGIFIER_H_ |