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 : // ES ##sec-symbol.prototype.description
15 168 : TF_BUILTIN(SymbolPrototypeDescriptionGetter, CodeStubAssembler) {
16 : Node* context = Parameter(Descriptor::kContext);
17 : Node* receiver = Parameter(Descriptor::kReceiver);
18 :
19 : Node* value = ToThisValue(context, receiver, PrimitiveType::kSymbol,
20 56 : "Symbol.prototype.description");
21 : Node* result = LoadObjectField(value, Symbol::kNameOffset);
22 56 : Return(result);
23 56 : }
24 :
25 : // ES6 #sec-symbol.prototype-@@toprimitive
26 168 : TF_BUILTIN(SymbolPrototypeToPrimitive, CodeStubAssembler) {
27 : Node* context = Parameter(Descriptor::kContext);
28 : Node* receiver = Parameter(Descriptor::kReceiver);
29 :
30 : Node* result = ToThisValue(context, receiver, PrimitiveType::kSymbol,
31 56 : "Symbol.prototype [ @@toPrimitive ]");
32 56 : Return(result);
33 56 : }
34 :
35 : // ES6 #sec-symbol.prototype.tostring
36 168 : TF_BUILTIN(SymbolPrototypeToString, CodeStubAssembler) {
37 : Node* context = Parameter(Descriptor::kContext);
38 : Node* receiver = Parameter(Descriptor::kReceiver);
39 :
40 : Node* value = ToThisValue(context, receiver, PrimitiveType::kSymbol,
41 56 : "Symbol.prototype.toString");
42 : Node* result = CallRuntime(Runtime::kSymbolDescriptiveString, context, value);
43 56 : Return(result);
44 56 : }
45 :
46 : // ES6 #sec-symbol.prototype.valueof
47 168 : TF_BUILTIN(SymbolPrototypeValueOf, CodeStubAssembler) {
48 : Node* context = Parameter(Descriptor::kContext);
49 : Node* receiver = Parameter(Descriptor::kReceiver);
50 :
51 : Node* result = ToThisValue(context, receiver, PrimitiveType::kSymbol,
52 56 : "Symbol.prototype.valueOf");
53 56 : Return(result);
54 56 : }
55 :
56 : } // namespace internal
57 94089 : } // namespace v8
|