| 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 MathAbs; | 20 var MathAbs; |
| 21 var NaN = %GetRootNaN(); | 21 var NaN = %GetRootNaN(); |
| 22 var ObserveBeginPerformSplice; | 22 var ObserveBeginPerformSplice; |
| 23 var ObserveEndPerformSplice; | 23 var ObserveEndPerformSplice; |
| 24 var ObserveEnqueueSpliceRecord; | 24 var ObserveEnqueueSpliceRecord; |
| 25 var ProxyDelegateCallAndConstruct; | 25 var ProxyDelegateCallAndConstruct; |
| 26 var ProxyDerivedHasOwnTrap; | 26 var ProxyDerivedHasOwnTrap; |
| 27 var ProxyDerivedKeysTrap; | 27 var ProxyDerivedKeysTrap; |
| 28 var SameValue = utils.ImportNow("SameValue"); |
| 28 var StringIndexOf; | 29 var StringIndexOf; |
| 29 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 30 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); |
| 30 | 31 |
| 31 utils.Import(function(from) { | 32 utils.Import(function(from) { |
| 32 MathAbs = from.MathAbs; | 33 MathAbs = from.MathAbs; |
| 33 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; | 34 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; |
| 34 ObserveEndPerformSplice = from.ObserveEndPerformSplice; | 35 ObserveEndPerformSplice = from.ObserveEndPerformSplice; |
| 35 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; | 36 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; |
| 36 StringIndexOf = from.StringIndexOf; | 37 StringIndexOf = from.StringIndexOf; |
| 37 }); | 38 }); |
| (...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 646 } else { | 647 } else { |
| 647 return false; | 648 return false; |
| 648 } | 649 } |
| 649 } | 650 } |
| 650 | 651 |
| 651 if (!IS_UNDEFINED(current)) { | 652 if (!IS_UNDEFINED(current)) { |
| 652 // Step 5 and 6 | 653 // Step 5 and 6 |
| 653 if ((IsGenericDescriptor(desc) || | 654 if ((IsGenericDescriptor(desc) || |
| 654 IsDataDescriptor(desc) == IsDataDescriptor(current)) && | 655 IsDataDescriptor(desc) == IsDataDescriptor(current)) && |
| 655 (!desc.hasEnumerable() || | 656 (!desc.hasEnumerable() || |
| 656 $sameValue(desc.isEnumerable(), current.isEnumerable())) && | 657 SameValue(desc.isEnumerable(), current.isEnumerable())) && |
| 657 (!desc.hasConfigurable() || | 658 (!desc.hasConfigurable() || |
| 658 $sameValue(desc.isConfigurable(), current.isConfigurable())) && | 659 SameValue(desc.isConfigurable(), current.isConfigurable())) && |
| 659 (!desc.hasWritable() || | 660 (!desc.hasWritable() || |
| 660 $sameValue(desc.isWritable(), current.isWritable())) && | 661 SameValue(desc.isWritable(), current.isWritable())) && |
| 661 (!desc.hasValue() || | 662 (!desc.hasValue() || |
| 662 $sameValue(desc.getValue(), current.getValue())) && | 663 SameValue(desc.getValue(), current.getValue())) && |
| 663 (!desc.hasGetter() || | 664 (!desc.hasGetter() || |
| 664 $sameValue(desc.getGet(), current.getGet())) && | 665 SameValue(desc.getGet(), current.getGet())) && |
| 665 (!desc.hasSetter() || | 666 (!desc.hasSetter() || |
| 666 $sameValue(desc.getSet(), current.getSet()))) { | 667 SameValue(desc.getSet(), current.getSet()))) { |
| 667 return true; | 668 return true; |
| 668 } | 669 } |
| 669 if (!current.isConfigurable()) { | 670 if (!current.isConfigurable()) { |
| 670 // Step 7 | 671 // Step 7 |
| 671 if (desc.isConfigurable() || | 672 if (desc.isConfigurable() || |
| 672 (desc.hasEnumerable() && | 673 (desc.hasEnumerable() && |
| 673 desc.isEnumerable() != current.isEnumerable())) { | 674 desc.isEnumerable() != current.isEnumerable())) { |
| 674 if (should_throw) { | 675 if (should_throw) { |
| 675 throw MakeTypeError(kRedefineDisallowed, p); | 676 throw MakeTypeError(kRedefineDisallowed, p); |
| 676 } else { | 677 } else { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 695 if (should_throw) { | 696 if (should_throw) { |
| 696 throw currentIsWritable | 697 throw currentIsWritable |
| 697 ? MakeTypeError(kStrongRedefineDisallowed, obj, p) | 698 ? MakeTypeError(kStrongRedefineDisallowed, obj, p) |
| 698 : MakeTypeError(kRedefineDisallowed, p); | 699 : MakeTypeError(kRedefineDisallowed, p); |
| 699 } else { | 700 } else { |
| 700 return false; | 701 return false; |
| 701 } | 702 } |
| 702 } | 703 } |
| 703 } | 704 } |
| 704 if (!currentIsWritable && desc.hasValue() && | 705 if (!currentIsWritable && desc.hasValue() && |
| 705 !$sameValue(desc.getValue(), current.getValue())) { | 706 !SameValue(desc.getValue(), current.getValue())) { |
| 706 if (should_throw) { | 707 if (should_throw) { |
| 707 throw MakeTypeError(kRedefineDisallowed, p); | 708 throw MakeTypeError(kRedefineDisallowed, p); |
| 708 } else { | 709 } else { |
| 709 return false; | 710 return false; |
| 710 } | 711 } |
| 711 } | 712 } |
| 712 } | 713 } |
| 713 // Step 11 | 714 // Step 11 |
| 714 if (IsAccessorDescriptor(desc) && IsAccessorDescriptor(current)) { | 715 if (IsAccessorDescriptor(desc) && IsAccessorDescriptor(current)) { |
| 715 if (desc.hasSetter() && | 716 if (desc.hasSetter() && |
| 716 !$sameValue(desc.getSet(), current.getSet())) { | 717 !SameValue(desc.getSet(), current.getSet())) { |
| 717 if (should_throw) { | 718 if (should_throw) { |
| 718 throw MakeTypeError(kRedefineDisallowed, p); | 719 throw MakeTypeError(kRedefineDisallowed, p); |
| 719 } else { | 720 } else { |
| 720 return false; | 721 return false; |
| 721 } | 722 } |
| 722 } | 723 } |
| 723 if (desc.hasGetter() && !$sameValue(desc.getGet(),current.getGet())) { | 724 if (desc.hasGetter() && !SameValue(desc.getGet(),current.getGet())) { |
| 724 if (should_throw) { | 725 if (should_throw) { |
| 725 throw MakeTypeError(kRedefineDisallowed, p); | 726 throw MakeTypeError(kRedefineDisallowed, p); |
| 726 } else { | 727 } else { |
| 727 return false; | 728 return false; |
| 728 } | 729 } |
| 729 } | 730 } |
| 730 } | 731 } |
| 731 } | 732 } |
| 732 } | 733 } |
| 733 } | 734 } |
| (...skipping 518 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1252 // ES5 section 15.2.3.13 | 1253 // ES5 section 15.2.3.13 |
| 1253 function ObjectIsExtensible(obj) { | 1254 function ObjectIsExtensible(obj) { |
| 1254 if (!IS_SPEC_OBJECT(obj)) return false; | 1255 if (!IS_SPEC_OBJECT(obj)) return false; |
| 1255 if (%_IsJSProxy(obj)) { | 1256 if (%_IsJSProxy(obj)) { |
| 1256 return true; | 1257 return true; |
| 1257 } | 1258 } |
| 1258 return %IsExtensible(obj); | 1259 return %IsExtensible(obj); |
| 1259 } | 1260 } |
| 1260 | 1261 |
| 1261 | 1262 |
| 1262 // ECMA-262, Edition 6, section 19.1.2.10 | |
| 1263 function ObjectIs(obj1, obj2) { | |
| 1264 return $sameValue(obj1, obj2); | |
| 1265 } | |
| 1266 | |
| 1267 | |
| 1268 // ECMA-262, Edition 6, section 19.1.2.1 | 1263 // ECMA-262, Edition 6, section 19.1.2.1 |
| 1269 function ObjectAssign(target, sources) { | 1264 function ObjectAssign(target, sources) { |
| 1270 // TODO(bmeurer): Move this to toplevel. | 1265 // TODO(bmeurer): Move this to toplevel. |
| 1271 "use strict"; | 1266 "use strict"; |
| 1272 var to = TO_OBJECT(target); | 1267 var to = TO_OBJECT(target); |
| 1273 var argsLen = %_ArgumentsLength(); | 1268 var argsLen = %_ArgumentsLength(); |
| 1274 if (argsLen < 2) return to; | 1269 if (argsLen < 2) return to; |
| 1275 | 1270 |
| 1276 for (var i = 1; i < argsLen; ++i) { | 1271 for (var i = 1; i < argsLen; ++i) { |
| 1277 var nextSource = %_Arguments(i); | 1272 var nextSource = %_Arguments(i); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 "keys", ObjectKeys, | 1348 "keys", ObjectKeys, |
| 1354 "create", ObjectCreate, | 1349 "create", ObjectCreate, |
| 1355 "defineProperty", ObjectDefineProperty, | 1350 "defineProperty", ObjectDefineProperty, |
| 1356 "defineProperties", ObjectDefineProperties, | 1351 "defineProperties", ObjectDefineProperties, |
| 1357 "freeze", ObjectFreezeJS, | 1352 "freeze", ObjectFreezeJS, |
| 1358 "getPrototypeOf", ObjectGetPrototypeOf, | 1353 "getPrototypeOf", ObjectGetPrototypeOf, |
| 1359 "setPrototypeOf", ObjectSetPrototypeOf, | 1354 "setPrototypeOf", ObjectSetPrototypeOf, |
| 1360 "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor, | 1355 "getOwnPropertyDescriptor", ObjectGetOwnPropertyDescriptor, |
| 1361 "getOwnPropertyNames", ObjectGetOwnPropertyNames, | 1356 "getOwnPropertyNames", ObjectGetOwnPropertyNames, |
| 1362 // getOwnPropertySymbols is added in symbol.js. | 1357 // getOwnPropertySymbols is added in symbol.js. |
| 1363 "is", ObjectIs, | 1358 "is", SameValue, // ECMA-262, Edition 6, section 19.1.2.10 |
| 1364 "isExtensible", ObjectIsExtensible, | 1359 "isExtensible", ObjectIsExtensible, |
| 1365 "isFrozen", ObjectIsFrozen, | 1360 "isFrozen", ObjectIsFrozen, |
| 1366 "isSealed", ObjectIsSealed, | 1361 "isSealed", ObjectIsSealed, |
| 1367 "preventExtensions", ObjectPreventExtension, | 1362 "preventExtensions", ObjectPreventExtension, |
| 1368 "seal", ObjectSealJS | 1363 "seal", ObjectSealJS |
| 1369 // deliverChangeRecords, getNotifier, observe and unobserve are added | 1364 // deliverChangeRecords, getNotifier, observe and unobserve are added |
| 1370 // in object-observe.js. | 1365 // in object-observe.js. |
| 1371 ]); | 1366 ]); |
| 1372 | 1367 |
| 1373 | 1368 |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1848 %InstallToContext([ | 1843 %InstallToContext([ |
| 1849 "global_eval_fun", GlobalEval, | 1844 "global_eval_fun", GlobalEval, |
| 1850 "object_value_of", ObjectValueOf, | 1845 "object_value_of", ObjectValueOf, |
| 1851 "object_to_string", ObjectToString, | 1846 "object_to_string", ObjectToString, |
| 1852 "object_define_own_property", DefineOwnPropertyFromAPI, | 1847 "object_define_own_property", DefineOwnPropertyFromAPI, |
| 1853 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 1848 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, |
| 1854 "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 1849 "to_complete_property_descriptor", ToCompletePropertyDescriptor, |
| 1855 ]); | 1850 ]); |
| 1856 | 1851 |
| 1857 }) | 1852 }) |
| OLD | NEW |