// Copyright 2019 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. namespace boolean { transitioning macro ThisBooleanValue(implicit context: Context)( receiver: JSAny, method: constexpr string): Boolean { return UnsafeCast<Boolean>( ToThisValue(receiver, PrimitiveType::kBoolean, method)); } javascript builtin BooleanConstructor( js-implicit context: NativeContext, receiver: JSAny, newTarget: JSAny, target: JSFunction)(...arguments): JSAny { const value = SelectBooleanConstant(ToBoolean(arguments[0])); if (newTarget == Undefined) { return value; } const map = GetDerivedMap(target, UnsafeCast<JSReceiver>(newTarget)); const obj = UnsafeCast<JSPrimitiveWrapper>(AllocateFastOrSlowJSObjectFromMap(map)); obj.value = value; return obj; } // ES #sec-boolean.prototype.tostring transitioning javascript builtin BooleanPrototypeToString( js-implicit context: NativeContext, receiver: JSAny)(): JSAny { // 1. Let b be ? thisBooleanValue(this value). const b = ThisBooleanValue(receiver, 'Boolean.prototype.toString'); // 2. If b is true, return "true"; else return "false". return b.to_string; } // ES #sec-boolean.prototype.valueof transitioning javascript builtin BooleanPrototypeValueOf( js-implicit context: NativeContext, receiver: JSAny)(): JSAny { // 1. Return ? thisBooleanValue(this value). return ThisBooleanValue(receiver, 'Boolean.prototype.valueOf'); } }