Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(244)

Side by Side Diff: src/symbol.js

Issue 1318043002: Native context: do not put public symbols and flags on the js builtins object. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix and rebase Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/string-iterator.js ('k') | src/typedarray.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Expects following symbols to be set in the bootstrapper during genesis:
6 // - symbolHasInstance
7 // - symbolIsConcatSpreadable
8 // - symbolIsRegExp
9 // - symbolIterator
10 // - symbolToPrimitive
11 // - symbolToStringTag
12 // - symbolUnscopables
13
14 var $symbolToString;
15
16 (function(global, utils) { 5 (function(global, utils) {
17 6
18 "use strict"; 7 "use strict";
19 8
20 %CheckIsBootstrapping(); 9 %CheckIsBootstrapping();
21 10
22 // ------------------------------------------------------------------- 11 // -------------------------------------------------------------------
23 // Imports 12 // Imports
24 13
25 var GlobalObject = global.Object; 14 var GlobalObject = global.Object;
26 var GlobalSymbol = global.Symbol; 15 var GlobalSymbol = global.Symbol;
16 var hasInstanceSymbol = utils.ImportNow("has_instance_symbol");
17 var isConcatSpreadableSymbol =
18 utils.ImportNow("is_concat_spreadable_symbol");
19 var isRegExpSymbol = utils.ImportNow("is_regexp_symbol");
20 var iteratorSymbol = utils.ImportNow("iterator_symbol");
27 var ObjectGetOwnPropertyKeys; 21 var ObjectGetOwnPropertyKeys;
22 var toPrimitiveSymbol = utils.ImportNow("to_primitive_symbol");
28 var ToString; 23 var ToString;
24 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol");
25 var unscopablesSymbol = utils.ImportNow("unscopables_symbol");
29 26
30 utils.Import(function(from) { 27 utils.Import(function(from) {
31 ObjectGetOwnPropertyKeys = from.ObjectGetOwnPropertyKeys; 28 ObjectGetOwnPropertyKeys = from.ObjectGetOwnPropertyKeys;
32 ToString = from.ToString; 29 ToString = from.ToString;
33 }); 30 });
34 31
35 // ------------------------------------------------------------------- 32 // -------------------------------------------------------------------
36 33
37 function SymbolConstructor(x) { 34 function SymbolConstructor(x) {
38 if (%_IsConstructCall()) throw MakeTypeError(kNotConstructor, "Symbol"); 35 if (%_IsConstructCall()) throw MakeTypeError(kNotConstructor, "Symbol");
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 87
91 // ES6 19.1.2.8 88 // ES6 19.1.2.8
92 function ObjectGetOwnPropertySymbols(obj) { 89 function ObjectGetOwnPropertySymbols(obj) {
93 obj = TO_OBJECT(obj); 90 obj = TO_OBJECT(obj);
94 91
95 // TODO(arv): Proxies use a shared trap for String and Symbol keys. 92 // TODO(arv): Proxies use a shared trap for String and Symbol keys.
96 93
97 return ObjectGetOwnPropertyKeys(obj, PROPERTY_ATTRIBUTES_STRING); 94 return ObjectGetOwnPropertyKeys(obj, PROPERTY_ATTRIBUTES_STRING);
98 } 95 }
99 96
100 //------------------------------------------------------------------- 97 // -------------------------------------------------------------------
101 98
102 %SetCode(GlobalSymbol, SymbolConstructor); 99 %SetCode(GlobalSymbol, SymbolConstructor);
103 %FunctionSetPrototype(GlobalSymbol, new GlobalObject()); 100 %FunctionSetPrototype(GlobalSymbol, new GlobalObject());
104 101
105 utils.InstallConstants(GlobalSymbol, [ 102 utils.InstallConstants(GlobalSymbol, [
106 // TODO(rossberg): expose when implemented. 103 // TODO(rossberg): expose when implemented.
107 // "hasInstance", symbolHasInstance, 104 // "hasInstance", hasInstanceSymbol,
108 // "isConcatSpreadable", symbolIsConcatSpreadable, 105 // "isConcatSpreadable", isConcatSpreadableSymbol,
109 // "isRegExp", symbolIsRegExp, 106 // "isRegExp", isRegExpSymbol,
110 "iterator", symbolIterator, 107 "iterator", iteratorSymbol,
111 "toPrimitive", symbolToPrimitive, 108 "toPrimitive", toPrimitiveSymbol,
112 // TODO(dslomov, caitp): Currently defined in harmony-tostring.js --- 109 // TODO(dslomov, caitp): Currently defined in harmony-tostring.js ---
113 // Move here when shipping 110 // Move here when shipping
114 // "toStringTag", symbolToStringTag, 111 // "toStringTag", toStringTagSymbol,
115 "unscopables", symbolUnscopables 112 "unscopables", unscopablesSymbol,
116 ]); 113 ]);
117 114
118 utils.InstallFunctions(GlobalSymbol, DONT_ENUM, [ 115 utils.InstallFunctions(GlobalSymbol, DONT_ENUM, [
119 "for", SymbolFor, 116 "for", SymbolFor,
120 "keyFor", SymbolKeyFor 117 "keyFor", SymbolKeyFor
121 ]); 118 ]);
122 119
123 %AddNamedProperty( 120 %AddNamedProperty(
124 GlobalSymbol.prototype, "constructor", GlobalSymbol, DONT_ENUM); 121 GlobalSymbol.prototype, "constructor", GlobalSymbol, DONT_ENUM);
125 utils.SetFunctionName(SymbolToPrimitive, symbolToPrimitive); 122 utils.SetFunctionName(SymbolToPrimitive, toPrimitiveSymbol);
126 %AddNamedProperty( 123 %AddNamedProperty(
127 GlobalSymbol.prototype, symbolToPrimitive, SymbolToPrimitive, 124 GlobalSymbol.prototype, toPrimitiveSymbol, SymbolToPrimitive,
128 DONT_ENUM | READ_ONLY); 125 DONT_ENUM | READ_ONLY);
129 %AddNamedProperty( 126 %AddNamedProperty(
130 GlobalSymbol.prototype, symbolToStringTag, "Symbol", DONT_ENUM | READ_ONLY); 127 GlobalSymbol.prototype, toStringTagSymbol, "Symbol", DONT_ENUM | READ_ONLY);
131 128
132 utils.InstallFunctions(GlobalSymbol.prototype, DONT_ENUM, [ 129 utils.InstallFunctions(GlobalSymbol.prototype, DONT_ENUM, [
133 "toString", SymbolToString, 130 "toString", SymbolToString,
134 "valueOf", SymbolValueOf 131 "valueOf", SymbolValueOf
135 ]); 132 ]);
136 133
137 utils.InstallFunctions(GlobalObject, DONT_ENUM, [ 134 utils.InstallFunctions(GlobalObject, DONT_ENUM, [
138 "getOwnPropertySymbols", ObjectGetOwnPropertySymbols 135 "getOwnPropertySymbols", ObjectGetOwnPropertySymbols
139 ]); 136 ]);
140 137
141 $symbolToString = SymbolToString; 138 // -------------------------------------------------------------------
139 // Exports
140
141 utils.Export(function(to) {
142 to.SymbolToString = SymbolToString;
143 })
142 144
143 }) 145 })
OLDNEW
« no previous file with comments | « src/string-iterator.js ('k') | src/typedarray.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698