| 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 ObserveBeginPerformSplice; |
| 22 var ObserveEndPerformSplice; |
| 23 var ObserveEnqueueSpliceRecord; |
| 21 var ProxyDelegateCallAndConstruct; | 24 var ProxyDelegateCallAndConstruct; |
| 22 var ProxyDerivedHasOwnTrap; | 25 var ProxyDerivedHasOwnTrap; |
| 23 var ProxyDerivedKeysTrap; | 26 var ProxyDerivedKeysTrap; |
| 24 var StringIndexOf; | 27 var StringIndexOf; |
| 25 var toStringTagSymbol = utils.ImportNow("to_string_tag_symbol"); | 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; |
| 32 ObserveBeginPerformSplice = from.ObserveBeginPerformSplice; |
| 33 ObserveEndPerformSplice = from.ObserveEndPerformSplice; |
| 34 ObserveEnqueueSpliceRecord = from.ObserveEnqueueSpliceRecord; |
| 29 StringIndexOf = from.StringIndexOf; | 35 StringIndexOf = from.StringIndexOf; |
| 30 }); | 36 }); |
| 31 | 37 |
| 32 utils.ImportFromExperimental(function(from) { | 38 utils.ImportFromExperimental(function(from) { |
| 33 FLAG_harmony_tostring = from.FLAG_harmony_tostring; | 39 FLAG_harmony_tostring = from.FLAG_harmony_tostring; |
| 34 ProxyDelegateCallAndConstruct = from.ProxyDelegateCallAndConstruct; | 40 ProxyDelegateCallAndConstruct = from.ProxyDelegateCallAndConstruct; |
| 35 ProxyDerivedHasOwnTrap = from.ProxyDerivedHasOwnTrap; | 41 ProxyDerivedHasOwnTrap = from.ProxyDerivedHasOwnTrap; |
| 36 ProxyDerivedKeysTrap = from.ProxyDerivedKeysTrap; | 42 ProxyDerivedKeysTrap = from.ProxyDerivedKeysTrap; |
| 37 }); | 43 }); |
| 38 | 44 |
| (...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 799 // ES5 section 15.4.5.1. | 805 // ES5 section 15.4.5.1. |
| 800 function DefineArrayProperty(obj, p, desc, should_throw) { | 806 function DefineArrayProperty(obj, p, desc, should_throw) { |
| 801 // Step 3 - Special handling for array index. | 807 // Step 3 - Special handling for array index. |
| 802 if (!IS_SYMBOL(p)) { | 808 if (!IS_SYMBOL(p)) { |
| 803 var index = TO_UINT32(p); | 809 var index = TO_UINT32(p); |
| 804 var emit_splice = false; | 810 var emit_splice = false; |
| 805 if (TO_STRING(index) == p && index != 4294967295) { | 811 if (TO_STRING(index) == p && index != 4294967295) { |
| 806 var length = obj.length; | 812 var length = obj.length; |
| 807 if (index >= length && %IsObserved(obj)) { | 813 if (index >= length && %IsObserved(obj)) { |
| 808 emit_splice = true; | 814 emit_splice = true; |
| 809 $observeBeginPerformSplice(obj); | 815 ObserveBeginPerformSplice(obj); |
| 810 } | 816 } |
| 811 | 817 |
| 812 var length_desc = GetOwnPropertyJS(obj, "length"); | 818 var length_desc = GetOwnPropertyJS(obj, "length"); |
| 813 if ((index >= length && !length_desc.isWritable()) || | 819 if ((index >= length && !length_desc.isWritable()) || |
| 814 !DefineObjectProperty(obj, p, desc, true)) { | 820 !DefineObjectProperty(obj, p, desc, true)) { |
| 815 if (emit_splice) | 821 if (emit_splice) |
| 816 $observeEndPerformSplice(obj); | 822 ObserveEndPerformSplice(obj); |
| 817 if (should_throw) { | 823 if (should_throw) { |
| 818 throw MakeTypeError(kDefineDisallowed, p); | 824 throw MakeTypeError(kDefineDisallowed, p); |
| 819 } else { | 825 } else { |
| 820 return false; | 826 return false; |
| 821 } | 827 } |
| 822 } | 828 } |
| 823 if (index >= length) { | 829 if (index >= length) { |
| 824 obj.length = index + 1; | 830 obj.length = index + 1; |
| 825 } | 831 } |
| 826 if (emit_splice) { | 832 if (emit_splice) { |
| 827 $observeEndPerformSplice(obj); | 833 ObserveEndPerformSplice(obj); |
| 828 $observeEnqueueSpliceRecord(obj, length, [], index + 1 - length); | 834 ObserveEnqueueSpliceRecord(obj, length, [], index + 1 - length); |
| 829 } | 835 } |
| 830 return true; | 836 return true; |
| 831 } | 837 } |
| 832 } | 838 } |
| 833 | 839 |
| 834 // Step 5 - Fallback to default implementation. | 840 // Step 5 - Fallback to default implementation. |
| 835 return DefineObjectProperty(obj, p, desc, should_throw); | 841 return DefineObjectProperty(obj, p, desc, should_throw); |
| 836 } | 842 } |
| 837 | 843 |
| 838 | 844 |
| (...skipping 1002 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1841 %InstallToContext([ | 1847 %InstallToContext([ |
| 1842 "global_eval_fun", GlobalEval, | 1848 "global_eval_fun", GlobalEval, |
| 1843 "object_value_of", ObjectValueOf, | 1849 "object_value_of", ObjectValueOf, |
| 1844 "object_to_string", ObjectToString, | 1850 "object_to_string", ObjectToString, |
| 1845 "object_define_own_property", DefineOwnPropertyFromAPI, | 1851 "object_define_own_property", DefineOwnPropertyFromAPI, |
| 1846 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, | 1852 "object_get_own_property_descriptor", ObjectGetOwnPropertyDescriptor, |
| 1847 "to_complete_property_descriptor", ToCompletePropertyDescriptor, | 1853 "to_complete_property_descriptor", ToCompletePropertyDescriptor, |
| 1848 ]); | 1854 ]); |
| 1849 | 1855 |
| 1850 }) | 1856 }) |
| OLD | NEW |