|  | // Copyright 2016 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. | 
|  |  | 
|  | #include "src/builtins/builtins-utils-gen.h" | 
|  | #include "src/builtins/builtins.h" | 
|  | #include "src/codegen/code-factory.h" | 
|  | #include "src/codegen/code-stub-assembler.h" | 
|  | #include "src/objects/objects-inl.h" | 
|  | #include "src/objects/oddball.h" | 
|  |  | 
|  | namespace v8 { | 
|  | namespace internal { | 
|  |  | 
|  | // ES6 section 7.1.3 ToNumber ( argument ) | 
|  | TF_BUILTIN(ToNumber, CodeStubAssembler) { | 
|  | auto context = Parameter<Context>(Descriptor::kContext); | 
|  | auto input = Parameter<Object>(Descriptor::kArgument); | 
|  |  | 
|  | Return(ToNumber(context, input)); | 
|  | } | 
|  |  | 
|  | TF_BUILTIN(PlainPrimitiveToNumber, CodeStubAssembler) { | 
|  | auto input = Parameter<Object>(Descriptor::kArgument); | 
|  |  | 
|  | Return(PlainPrimitiveToNumber(input)); | 
|  | } | 
|  |  | 
|  | // Like ToNumber, but also converts BigInts. | 
|  | TF_BUILTIN(ToNumberConvertBigInt, CodeStubAssembler) { | 
|  | auto context = Parameter<Context>(Descriptor::kContext); | 
|  | auto input = Parameter<Object>(Descriptor::kArgument); | 
|  |  | 
|  | Return(ToNumber(context, input, BigIntHandling::kConvertToNumber)); | 
|  | } | 
|  |  | 
|  | // ES6 section 7.1.2 ToBoolean ( argument ) | 
|  | // Requires parameter on stack so that it can be used as a continuation from a | 
|  | // LAZY deopt. | 
|  | TF_BUILTIN(ToBooleanLazyDeoptContinuation, CodeStubAssembler) { | 
|  | auto value = Parameter<Object>(Descriptor::kArgument); | 
|  |  | 
|  | Label return_true(this), return_false(this); | 
|  | BranchIfToBooleanIsTrue(value, &return_true, &return_false); | 
|  |  | 
|  | BIND(&return_true); | 
|  | Return(TrueConstant()); | 
|  |  | 
|  | BIND(&return_false); | 
|  | Return(FalseConstant()); | 
|  | } | 
|  |  | 
|  | // ES6 section 12.5.5 typeof operator | 
|  | TF_BUILTIN(Typeof, CodeStubAssembler) { | 
|  | auto object = Parameter<Object>(Descriptor::kObject); | 
|  |  | 
|  | Return(Typeof(object)); | 
|  | } | 
|  |  | 
|  | }  // namespace internal | 
|  | }  // namespace v8 |