diff options
Diffstat (limited to 'deps/v8/src/builtins/builtins-boolean.cc')
-rw-r--r-- | deps/v8/src/builtins/builtins-boolean.cc | 37 |
1 files changed, 18 insertions, 19 deletions
diff --git a/deps/v8/src/builtins/builtins-boolean.cc b/deps/v8/src/builtins/builtins-boolean.cc index dabd803dc1..5dc42d506f 100644 --- a/deps/v8/src/builtins/builtins-boolean.cc +++ b/deps/v8/src/builtins/builtins-boolean.cc @@ -11,28 +11,27 @@ namespace v8 { namespace internal { // ----------------------------------------------------------------------------- -// ES6 section 19.3 Boolean Objects +// ES #sec-boolean-objects -// ES6 section 19.3.1.1 Boolean ( value ) for the [[Call]] case. +// ES #sec-boolean-constructor BUILTIN(BooleanConstructor) { HandleScope scope(isolate); - Handle<Object> value = args.atOrUndefined(isolate, 1); - return isolate->heap()->ToBoolean(value->BooleanValue()); -} - -// ES6 section 19.3.1.1 Boolean ( value ) for the [[Construct]] case. -BUILTIN(BooleanConstructor_ConstructStub) { - HandleScope scope(isolate); - Handle<Object> value = args.atOrUndefined(isolate, 1); - Handle<JSFunction> target = args.target(); - Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target()); - DCHECK(*target == target->native_context()->boolean_function()); - Handle<JSObject> result; - ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, - JSObject::New(target, new_target)); - Handle<JSValue>::cast(result)->set_value( - isolate->heap()->ToBoolean(value->BooleanValue())); - return *result; + if (args.new_target()->IsUndefined(isolate)) { // [[Call]] + Handle<Object> value = args.atOrUndefined(isolate, 1); + return isolate->heap()->ToBoolean(value->BooleanValue()); + } else { // [[Construct]] + HandleScope scope(isolate); + Handle<Object> value = args.atOrUndefined(isolate, 1); + Handle<JSFunction> target = args.target(); + Handle<JSReceiver> new_target = Handle<JSReceiver>::cast(args.new_target()); + DCHECK(*target == target->native_context()->boolean_function()); + Handle<JSObject> result; + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, + JSObject::New(target, new_target)); + Handle<JSValue>::cast(result)->set_value( + isolate->heap()->ToBoolean(value->BooleanValue())); + return *result; + } } } // namespace internal |