| 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 FLAG_harmony_tostring; |
| 13 var GlobalArray = global.Array; | 13 var GlobalArray = global.Array; |
| 14 var GlobalBoolean = global.Boolean; | 14 var GlobalBoolean = global.Boolean; |
| 15 var GlobalFunction = global.Function; | 15 var GlobalFunction = global.Function; |
| 16 var GlobalNumber = global.Number; | 16 var GlobalNumber = global.Number; |
| 17 var GlobalObject = global.Object; | 17 var GlobalObject = global.Object; |
| 18 var InternalArray = utils.InternalArray; | 18 var InternalArray = utils.InternalArray; |
| 19 var iteratorSymbol = utils.ImportNow("iterator_symbol"); | 19 var iteratorSymbol = utils.ImportNow("iterator_symbol"); |
| 20 var MakeRangeError; | 20 var MakeRangeError; |
| 21 var MakeSyntaxError; | 21 var MakeSyntaxError; |
| 22 var MakeTypeError; | 22 var MakeTypeError; |
| 23 var MathAbs; | 23 var MathAbs; |
| 24 var NaN = %GetRootNaN(); | 24 var NaN = %GetRootNaN(); |
| 25 var ObserveBeginPerformSplice; | 25 var ObserveBeginPerformSplice; |
| 26 var ObserveEndPerformSplice; | 26 var ObserveEndPerformSplice; |
| 27 var ObserveEnqueueSpliceRecord; | 27 var ObserveEnqueueSpliceRecord; |
| 28 var ProxyDelegateCallAndConstruct; | 28 var ProxyDelegateCallAndConstruct; |
| 29 var ProxyDerivedHasOwnTrap; | 29 var ProxyDerivedHasOwnTrap; |
| 30 var ProxyDerivedKeysTrap; | |
| 31 var SameValue = utils.ImportNow("SameValue"); | 30 var SameValue = utils.ImportNow("SameValue"); |
| 32 var StringIndexOf; | 31 var StringIndexOf; |
| 33 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 32 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
| 34 | 33 |
| 35 utils.Import(function(from) { | 34 utils.Import(function(from) { |
| 36 MakeRangeError = from.MakeRangeError; | 35 MakeRangeError = from.MakeRangeError; |
| 37 MakeSyntaxError = from.MakeSyntaxError; | 36 MakeSyntaxError = from.MakeSyntaxError; |
| 38 MakeTypeError = from.MakeTypeError; | 37 MakeTypeError = from.MakeTypeError; |
| 39 MathAbs = from.MathAbs; | 38 MathAbs = from.MathAbs; |
| 40 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; | 39 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; |
| 41 ObserveEndPerformSplice = from.ObserveEndPerformSplice; | 40 ObserveEndPerformSplice = from.ObserveEndPerformSplice; |
| 42 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; | 41 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; |
| 43 StringIndexOf = from.StringIndexOf; | 42 StringIndexOf = from.StringIndexOf; |
| 44 }); | 43 }); |
| 45 | 44 |
| 46 utils.ImportFromExperimental(function(from) { | 45 utils.ImportFromExperimental(function(from) { |
| 47 FLAG_harmony_tostring = from.FLAG_harmony_tostring; | 46 FLAG_harmony_tostring = from.FLAG_harmony_tostring; |
| 48 ProxyDelegateCallAndConstruct = from.ProxyDelegateCallAndConstruct; | 47 ProxyDelegateCallAndConstruct = from.ProxyDelegateCallAndConstruct; |
| 49 ProxyDerivedHasOwnTrap = from.ProxyDerivedHasOwnTrap; | 48 ProxyDerivedHasOwnTrap = from.ProxyDerivedHasOwnTrap; |
| 50 ProxyDerivedKeysTrap = from.ProxyDerivedKeysTrap; | |
| 51 }); | 49 }); |
| 52 | 50 |
| 53 // ---------------------------------------------------------------------------- | 51 // ---------------------------------------------------------------------------- |
| 54 | 52 |
| 55 | 53 |
| 56 // ECMA 262 - 15.1.4 | 54 // ECMA 262 - 15.1.4 |
| 57 function GlobalIsNaN(number) { | 55 function GlobalIsNaN(number) { |
| 58 number = TO_NUMBER(number); | 56 number = TO_NUMBER(number); |
| 59 return NUMBER_IS_NAN(number); | 57 return NUMBER_IS_NAN(number); |
| 60 } | 58 } |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 var receiver = this; | 265 var receiver = this; |
| 268 if (IS_NULL(receiver) || IS_UNDEFINED(receiver)) { | 266 if (IS_NULL(receiver) || IS_UNDEFINED(receiver)) { |
| 269 receiver = %GlobalProxy(ObjectLookupSetter); | 267 receiver = %GlobalProxy(ObjectLookupSetter); |
| 270 } | 268 } |
| 271 return %LookupAccessor(TO_OBJECT(receiver), TO_NAME(name), SETTER); | 269 return %LookupAccessor(TO_OBJECT(receiver), TO_NAME(name), SETTER); |
| 272 } | 270 } |
| 273 | 271 |
| 274 | 272 |
| 275 function ObjectKeys(obj) { | 273 function ObjectKeys(obj) { |
| 276 obj = TO_OBJECT(obj); | 274 obj = TO_OBJECT(obj); |
| 277 if (%_IsJSProxy(obj)) { | |
| 278 var handler = %GetHandler(obj); | |
| 279 var names = CallTrap0(handler, "keys", ProxyDerivedKeysTrap); | |
| 280 return ToNameArray(names, "keys", false); | |
| 281 } | |
| 282 return %OwnKeys(obj); | 275 return %OwnKeys(obj); |
| 283 } | 276 } |
| 284 | 277 |
| 285 | 278 |
| 286 // ES5 8.10.1. | 279 // ES5 8.10.1. |
| 287 function IsAccessorDescriptor(desc) { | 280 function IsAccessorDescriptor(desc) { |
| 288 if (IS_UNDEFINED(desc)) return false; | 281 if (IS_UNDEFINED(desc)) return false; |
| 289 return desc.hasGetter() || desc.hasSetter(); | 282 return desc.hasGetter() || desc.hasSetter(); |
| 290 } | 283 } |
| 291 | 284 |
| (...skipping 1470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1762 | 1755 |
| 1763 %InstallToContext([ | 1756 %InstallToContext([ |
| 1764 "global_eval_fun", GlobalEval, | 1757 "global_eval_fun", GlobalEval, |
| 1765 "object_value_of", ObjectValueOf, | 1758 "object_value_of", ObjectValueOf, |
| 1766 "object_to_string", ObjectToString, | 1759 "object_to_string", ObjectToString, |
| 1767 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 1760 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, |
| 1768 "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 1761 "to_complete_property_descriptor", ToCompletePropertyDescriptor, |
| 1769 ]); | 1762 ]); |
| 1770 | 1763 |
| 1771 }) | 1764 }) |
| OLD | NEW |