Line data Source code
1 : // Copyright 2017 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : #include "src/builtins/builtins-utils-gen.h"
6 : #include "src/builtins/builtins.h"
7 : #include "src/code-stub-assembler.h"
8 :
9 : namespace v8 {
10 : namespace internal {
11 :
12 : // -----------------------------------------------------------------------------
13 : // ES6 #sec-symbol-objects
14 :
15 : // ES6 #sec-symbol.prototype-@@toprimitive
16 129 : TF_BUILTIN(SymbolPrototypeToPrimitive, CodeStubAssembler) {
17 : Node* context = Parameter(Descriptor::kContext);
18 : Node* receiver = Parameter(Descriptor::kReceiver);
19 :
20 : Node* result = ToThisValue(context, receiver, PrimitiveType::kSymbol,
21 43 : "Symbol.prototype [ @@toPrimitive ]");
22 43 : Return(result);
23 43 : }
24 :
25 : // ES6 #sec-symbol.prototype.tostring
26 129 : TF_BUILTIN(SymbolPrototypeToString, CodeStubAssembler) {
27 : Node* context = Parameter(Descriptor::kContext);
28 : Node* receiver = Parameter(Descriptor::kReceiver);
29 :
30 : Node* value = ToThisValue(context, receiver, PrimitiveType::kSymbol,
31 43 : "Symbol.prototype.toString");
32 43 : Node* result = CallRuntime(Runtime::kSymbolDescriptiveString, context, value);
33 43 : Return(result);
34 43 : }
35 :
36 : // ES6 #sec-symbol.prototype.valueof
37 129 : TF_BUILTIN(SymbolPrototypeValueOf, CodeStubAssembler) {
38 : Node* context = Parameter(Descriptor::kContext);
39 : Node* receiver = Parameter(Descriptor::kReceiver);
40 :
41 : Node* result = ToThisValue(context, receiver, PrimitiveType::kSymbol,
42 43 : "Symbol.prototype.valueOf");
43 43 : Return(result);
44 43 : }
45 :
46 : } // namespace internal
47 : } // namespace v8
|