OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 (function(global, utils) { | 5 (function(global, utils) { |
6 | 6 |
7 %CheckIsBootstrapping(); | 7 %CheckIsBootstrapping(); |
8 | 8 |
9 // ---------------------------------------------------------------------------- | 9 // ---------------------------------------------------------------------------- |
10 // Imports | 10 // Imports |
11 | 11 |
| 12 var FLAG_harmony_tostring; |
12 var GlobalArray = global.Array; | 13 var GlobalArray = global.Array; |
13 var GlobalBoolean = global.Boolean; | 14 var GlobalBoolean = global.Boolean; |
14 var GlobalFunction = global.Function; | 15 var GlobalFunction = global.Function; |
15 var GlobalNumber = global.Number; | 16 var GlobalNumber = global.Number; |
16 var GlobalObject = global.Object; | 17 var GlobalObject = global.Object; |
17 var InternalArray = utils.InternalArray; | 18 var InternalArray = utils.InternalArray; |
| 19 var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
18 var MathAbs; | 20 var MathAbs; |
19 var ProxyDelegateCallAndConstruct; | 21 var ProxyDelegateCallAndConstruct; |
20 var ProxyDerivedHasOwnTrap; | 22 var ProxyDerivedHasOwnTrap; |
21 var ProxyDerivedKeysTrap; | 23 var ProxyDerivedKeysTrap; |
22 var StringIndexOf; | 24 var StringIndexOf; |
23 var ToBoolean; | 25 var ToBoolean = utils.ImportNow("ToBoolean"); |
24 var ToNumber; | 26 var ToNumber = utils.ImportNow("ToNumber"); |
25 var ToString; | 27 var ToString; |
| 28 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
26 | 29 |
27 utils.Import(function(from) { | 30 utils.Import(function(from) { |
28 MathAbs = from.MathAbs; | 31 MathAbs = from.MathAbs; |
29 StringIndexOf = from.StringIndexOf; | 32 StringIndexOf = from.StringIndexOf; |
30 ToString = from.ToString; | 33 ToString = from.ToString; |
31 }); | 34 }); |
32 | 35 |
33 utils.ImportNow(function(from) { | |
34 ToBoolean = from.ToBoolean; | |
35 ToNumber = from.ToNumber; | |
36 }); | |
37 | |
38 utils.ImportFromExperimental(function(from) { | 36 utils.ImportFromExperimental(function(from) { |
| 37 FLAG_harmony_tostring = from.FLAG_harmony_tostring; |
39 ProxyDelegateCallAndConstruct = from.ProxyDelegateCallAndConstruct; | 38 ProxyDelegateCallAndConstruct = from.ProxyDelegateCallAndConstruct; |
40 ProxyDerivedHasOwnTrap = from.ProxyDerivedHasOwnTrap; | 39 ProxyDerivedHasOwnTrap = from.ProxyDerivedHasOwnTrap; |
41 ProxyDerivedKeysTrap = from.ProxyDerivedKeysTrap; | 40 ProxyDerivedKeysTrap = from.ProxyDerivedKeysTrap; |
42 }); | 41 }); |
43 | 42 |
44 // ---------------------------------------------------------------------------- | 43 // ---------------------------------------------------------------------------- |
45 | 44 |
46 | 45 |
47 // ECMA 262 - 15.1.4 | 46 // ECMA 262 - 15.1.4 |
48 function GlobalIsNaN(number) { | 47 function GlobalIsNaN(number) { |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
141 | 140 |
142 // ECMA-262 - 15.2.4.2 | 141 // ECMA-262 - 15.2.4.2 |
143 function ObjectToString() { | 142 function ObjectToString() { |
144 if (IS_UNDEFINED(this)) return "[object Undefined]"; | 143 if (IS_UNDEFINED(this)) return "[object Undefined]"; |
145 if (IS_NULL(this)) return "[object Null]"; | 144 if (IS_NULL(this)) return "[object Null]"; |
146 var O = TO_OBJECT(this); | 145 var O = TO_OBJECT(this); |
147 var builtinTag = %_ClassOf(O); | 146 var builtinTag = %_ClassOf(O); |
148 var tag; | 147 var tag; |
149 | 148 |
150 // TODO(caitp): cannot wait to get rid of this flag :> | 149 // TODO(caitp): cannot wait to get rid of this flag :> |
151 if (harmony_tostring) { | 150 if (FLAG_harmony_tostring) { |
152 tag = O[symbolToStringTag]; | 151 tag = O[toStringTagSymbol]; |
153 if (!IS_STRING(tag)) { | 152 if (!IS_STRING(tag)) { |
154 tag = builtinTag; | 153 tag = builtinTag; |
155 } | 154 } |
156 } else { | 155 } else { |
157 tag = builtinTag; | 156 tag = builtinTag; |
158 } | 157 } |
159 | 158 |
160 return `[object ${tag}]`; | 159 return `[object ${tag}]`; |
161 } | 160 } |
162 | 161 |
(...skipping 1603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1766 "toString", FunctionToString | 1765 "toString", FunctionToString |
1767 ]); | 1766 ]); |
1768 | 1767 |
1769 // ---------------------------------------------------------------------------- | 1768 // ---------------------------------------------------------------------------- |
1770 // Iterator related spec functions. | 1769 // Iterator related spec functions. |
1771 | 1770 |
1772 // ES6 rev 33, 2015-02-12 | 1771 // ES6 rev 33, 2015-02-12 |
1773 // 7.4.1 GetIterator ( obj, method ) | 1772 // 7.4.1 GetIterator ( obj, method ) |
1774 function GetIterator(obj, method) { | 1773 function GetIterator(obj, method) { |
1775 if (IS_UNDEFINED(method)) { | 1774 if (IS_UNDEFINED(method)) { |
1776 method = obj[symbolIterator]; | 1775 method = obj[iteratorSymbol]; |
1777 } | 1776 } |
1778 if (!IS_SPEC_FUNCTION(method)) { | 1777 if (!IS_SPEC_FUNCTION(method)) { |
1779 throw MakeTypeError(kNotIterable, obj); | 1778 throw MakeTypeError(kNotIterable, obj); |
1780 } | 1779 } |
1781 var iterator = %_CallFunction(obj, method); | 1780 var iterator = %_CallFunction(obj, method); |
1782 if (!IS_SPEC_OBJECT(iterator)) { | 1781 if (!IS_SPEC_OBJECT(iterator)) { |
1783 throw MakeTypeError(kNotAnIterator, iterator); | 1782 throw MakeTypeError(kNotAnIterator, iterator); |
1784 } | 1783 } |
1785 return iterator; | 1784 return iterator; |
1786 } | 1785 } |
(...skipping 23 matching lines...) Expand all Loading... |
1810 }); | 1809 }); |
1811 | 1810 |
1812 %InstallToContext([ | 1811 %InstallToContext([ |
1813 "global_eval_fun", GlobalEval, | 1812 "global_eval_fun", GlobalEval, |
1814 "object_define_own_property", DefineOwnPropertyFromAPI, | 1813 "object_define_own_property", DefineOwnPropertyFromAPI, |
1815 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 1814 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, |
1816 "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 1815 "to_complete_property_descriptor", ToCompletePropertyDescriptor, |
1817 ]); | 1816 ]); |
1818 | 1817 |
1819 }) | 1818 }) |
OLD | NEW |