Chromium Code Reviews| Index: src/builtins.cc |
| diff --git a/src/builtins.cc b/src/builtins.cc |
| index b672185792c417a75f311c7ea6b35d880f91f6a4..8302469e16ea7edea384ee39e25d82e1699d7287 100644 |
| --- a/src/builtins.cc |
| +++ b/src/builtins.cc |
| @@ -1517,10 +1517,10 @@ BUILTIN(ReflectHas) { |
| ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, name, |
| Object::ToName(isolate, key)); |
| - Maybe<bool> maybe = |
| - JSReceiver::HasProperty(Handle<JSReceiver>::cast(target), name); |
| - if (!maybe.IsJust()) return isolate->heap()->exception(); |
| - return *isolate->factory()->ToBoolean(maybe.FromJust()); |
| + ASSIGN_OR_RETURN_EXCEPTION( |
| + isolate, bool, result, |
| + JSReceiver::HasProperty(Handle<JSReceiver>::cast(target), name)); |
| + return *isolate->factory()->ToBoolean(result); |
| } |
| @@ -1554,6 +1554,26 @@ BUILTIN(ReflectIsExtensible) { |
| } |
| +// ES6 section 26.1.12 Reflect.preventExtensions |
| +BUILTIN(ReflectPreventExtensions) { |
| + HandleScope scope(isolate); |
| + DCHECK_EQ(2, args.length()); |
| + Handle<Object> target = args.at<Object>(1); |
| + |
| + if (!target->IsJSReceiver()) { |
| + THROW_NEW_ERROR_RETURN_FAILURE( |
| + isolate, NewTypeError(MessageTemplate::kCalledOnNonObject, |
| + isolate->factory()->NewStringFromAsciiChecked( |
| + "Reflect.preventExtensions"))); |
| + } |
| + |
| + ASSIGN_OR_RETURN_EXCEPTION( |
| + isolate, bool, result, |
| + JSObject::PreventExtensions(Handle<JSObject>::cast(target), DONT_THROW)); |
|
rossberg
2015/10/19 14:33:08
JSReceiver:: ?
neis
2015/10/20 07:58:35
Done.
|
| + return *isolate->factory()->ToBoolean(result); |
| +} |
| + |
| + |
| // ES6 section 20.3.4.45 Date.prototype [ @@toPrimitive ] ( hint ) |
| BUILTIN(DateToPrimitive) { |
| HandleScope scope(isolate); |