summaryrefslogtreecommitdiff
path: root/deps/v8/src/builtins/builtins-object.cc
diff options
context:
space:
mode:
authorMyles Borins <mylesborins@google.com>2017-08-01 11:36:44 -0500
committerMyles Borins <mylesborins@google.com>2017-08-01 15:23:15 -0500
commit0a66b223e149a841669bfad5598e4254589730cb (patch)
tree5ec050f7f78aafbf5b1e0e50d639fb843141e162 /deps/v8/src/builtins/builtins-object.cc
parent1782b3836ba58ef0da6b687f2bb970c0bd8199ad (diff)
downloadnode-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.cc53
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);