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 |