Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(20)

Side by Side Diff: src/js/v8natives.js

Issue 1396323011: Native context: use import/export for Object observe related functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/js/prologue.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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 })
OLDNEW
« no previous file with comments | « src/js/prologue.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698