diff options
author | Myles Borins <mylesborins@google.com> | 2017-08-01 11:36:44 -0500 |
---|---|---|
committer | Myles Borins <mylesborins@google.com> | 2017-08-01 15:23:15 -0500 |
commit | 0a66b223e149a841669bfad5598e4254589730cb (patch) | |
tree | 5ec050f7f78aafbf5b1e0e50d639fb843141e162 /deps/v8/src/builtins/builtins-object.cc | |
parent | 1782b3836ba58ef0da6b687f2bb970c0bd8199ad (diff) | |
download | node-new-0a66b223e149a841669bfad5598e4254589730cb.tar.gz |
deps: update V8 to 6.0.286.52
PR-URL: https://github.com/nodejs/node/pull/14004
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Diffstat (limited to 'deps/v8/src/builtins/builtins-object.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-object.cc | 53 |
1 files changed, 13 insertions, 40 deletions
diff --git a/deps/v8/src/builtins/builtins-object.cc b/deps/v8/src/builtins/builtins-object.cc index 8be615013c..95d2149f31 100644 --- a/deps/v8/src/builtins/builtins-object.cc +++ b/deps/v8/src/builtins/builtins-object.cc @@ -86,8 +86,11 @@ Object* ObjectDefineAccessor(Isolate* isolate, Handle<Object> object, Handle<Object> name, Handle<Object> accessor) { // 1. Let O be ? ToObject(this value). Handle<JSReceiver> receiver; - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, receiver, - Object::ConvertReceiver(isolate, object)); + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( + isolate, receiver, + FLAG_harmony_strict_legacy_accessor_builtins + ? Object::ToObject(isolate, object) + : Object::ConvertReceiver(isolate, object)); // 2. If IsCallable(getter) is false, throw a TypeError exception. if (!accessor->IsCallable()) { MessageTemplate::Template message = @@ -114,7 +117,9 @@ Object* ObjectDefineAccessor(Isolate* isolate, Handle<Object> object, // To preserve legacy behavior, we ignore errors silently rather than // throwing an exception. Maybe<bool> success = JSReceiver::DefineOwnProperty( - isolate, receiver, name, &desc, Object::DONT_THROW); + isolate, receiver, name, &desc, + FLAG_harmony_strict_legacy_accessor_builtins ? Object::THROW_ON_ERROR + : Object::DONT_THROW); MAYBE_RETURN(success, isolate->heap()->exception()); if (!success.FromJust()) { isolate->CountUsage(v8::Isolate::kDefineGetterOrSetterWouldThrow); @@ -125,8 +130,11 @@ Object* ObjectDefineAccessor(Isolate* isolate, Handle<Object> object, Object* ObjectLookupAccessor(Isolate* isolate, Handle<Object> object, Handle<Object> key, AccessorComponent component) { - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, object, - Object::ConvertReceiver(isolate, object)); + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( + isolate, object, + FLAG_harmony_strict_legacy_accessor_builtins + ? Object::ToObject(isolate, object) + : Object::ConvertReceiver(isolate, object)); ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, key, Object::ToPropertyKey(isolate, key)); bool success = false; @@ -429,41 +437,6 @@ BUILTIN(ObjectIsSealed) { return isolate->heap()->ToBoolean(result.FromJust()); } -// ES6 section 19.1.2.14 Object.keys ( O ) -BUILTIN(ObjectKeys) { - HandleScope scope(isolate); - Handle<Object> object = args.atOrUndefined(isolate, 1); - Handle<JSReceiver> receiver; - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, receiver, - Object::ToObject(isolate, object)); - - Handle<FixedArray> keys; - int enum_length = receiver->map()->EnumLength(); - if (enum_length != kInvalidEnumCacheSentinel && - JSObject::cast(*receiver)->elements() == - isolate->heap()->empty_fixed_array()) { - DCHECK(receiver->IsJSObject()); - DCHECK(!JSObject::cast(*receiver)->HasNamedInterceptor()); - DCHECK(!JSObject::cast(*receiver)->IsAccessCheckNeeded()); - DCHECK(!receiver->map()->has_hidden_prototype()); - DCHECK(JSObject::cast(*receiver)->HasFastProperties()); - if (enum_length == 0) { - keys = isolate->factory()->empty_fixed_array(); - } else { - Handle<FixedArray> cache( - receiver->map()->instance_descriptors()->GetEnumCache()); - keys = isolate->factory()->CopyFixedArrayUpTo(cache, enum_length); - } - } else { - ASSIGN_RETURN_FAILURE_ON_EXCEPTION( - isolate, keys, - KeyAccumulator::GetKeys(receiver, KeyCollectionMode::kOwnOnly, - ENUMERABLE_STRINGS, - GetKeysConversion::kConvertToString)); - } - return *isolate->factory()->NewJSArrayWithElements(keys, FAST_ELEMENTS); -} - BUILTIN(ObjectValues) { HandleScope scope(isolate); Handle<Object> object = args.atOrUndefined(isolate, 1); |