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

Side by Side Diff: src/array-iterator.js

Issue 1293493004: Unify symbols sharing across native scripts and runtime. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 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 | « no previous file | src/bootstrapper.h » ('j') | src/heap/heap.h » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 the V8 project authors. All rights reserved. 1 // Copyright 2013 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 var $arrayValues; 5 var $arrayValues;
6 6
7 (function(global, utils) { 7 (function(global, utils) {
8 8
9 "use strict"; 9 "use strict";
10 10
11 %CheckIsBootstrapping(); 11 %CheckIsBootstrapping();
12 12
13 // -----------------------------------------------------------------------
14 // Imports
15
16 var ArrayIterationKindSymbol =
rossberg 2015/08/20 12:50:12 I don't feel too strongly, but don't we typically
17 utils.GetPrivateSymbol("array_iteration_kind_symbol");
18 var ArrayIteratorNextIndexSymbol =
19 utils.GetPrivateSymbol("array_iterator_next_symbol");
20 var ArrayIteratorObjectSymbol =
21 utils.GetPrivateSymbol("array_iterator_object_symbol");
13 var GlobalArray = global.Array; 22 var GlobalArray = global.Array;
14 23
15 macro TYPED_ARRAYS(FUNCTION) 24 macro TYPED_ARRAYS(FUNCTION)
16 FUNCTION(Uint8Array) 25 FUNCTION(Uint8Array)
17 FUNCTION(Int8Array) 26 FUNCTION(Int8Array)
18 FUNCTION(Uint16Array) 27 FUNCTION(Uint16Array)
19 FUNCTION(Int16Array) 28 FUNCTION(Int16Array)
20 FUNCTION(Uint32Array) 29 FUNCTION(Uint32Array)
21 FUNCTION(Int32Array) 30 FUNCTION(Int32Array)
22 FUNCTION(Float32Array) 31 FUNCTION(Float32Array)
23 FUNCTION(Float64Array) 32 FUNCTION(Float64Array)
24 FUNCTION(Uint8ClampedArray) 33 FUNCTION(Uint8ClampedArray)
25 endmacro 34 endmacro
26 35
27 macro COPY_FROM_GLOBAL(NAME) 36 macro COPY_FROM_GLOBAL(NAME)
28 var GlobalNAME = global.NAME; 37 var GlobalNAME = global.NAME;
29 endmacro 38 endmacro
30 39
31 TYPED_ARRAYS(COPY_FROM_GLOBAL) 40 TYPED_ARRAYS(COPY_FROM_GLOBAL)
32 41
33 var arrayIteratorObjectSymbol = GLOBAL_PRIVATE("ArrayIterator#object"); 42 // -----------------------------------------------------------------------
34 var arrayIteratorNextIndexSymbol = GLOBAL_PRIVATE("ArrayIterator#next");
35 var arrayIterationKindSymbol = GLOBAL_PRIVATE("ArrayIterator#kind");
36
37 43
38 function ArrayIterator() {} 44 function ArrayIterator() {}
39 45
40 46
41 // TODO(wingo): Update section numbers when ES6 has stabilized. The 47 // TODO(wingo): Update section numbers when ES6 has stabilized. The
42 // section numbers below are already out of date as of the May 2014 48 // section numbers below are already out of date as of the May 2014
43 // draft. 49 // draft.
44 50
45 51
46 // 15.4.5.1 CreateArrayIterator Abstract Operation 52 // 15.4.5.1 CreateArrayIterator Abstract Operation
47 function CreateArrayIterator(array, kind) { 53 function CreateArrayIterator(array, kind) {
48 var object = TO_OBJECT(array); 54 var object = TO_OBJECT(array);
49 var iterator = new ArrayIterator; 55 var iterator = new ArrayIterator;
50 SET_PRIVATE(iterator, arrayIteratorObjectSymbol, object); 56 SET_PRIVATE(iterator, ArrayIteratorObjectSymbol, object);
51 SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, 0); 57 SET_PRIVATE(iterator, ArrayIteratorNextIndexSymbol, 0);
52 SET_PRIVATE(iterator, arrayIterationKindSymbol, kind); 58 SET_PRIVATE(iterator, ArrayIterationKindSymbol, kind);
53 return iterator; 59 return iterator;
54 } 60 }
55 61
56 62
57 // 15.19.4.3.4 CreateItrResultObject 63 // 15.19.4.3.4 CreateItrResultObject
58 function CreateIteratorResultObject(value, done) { 64 function CreateIteratorResultObject(value, done) {
59 return {value: value, done: done}; 65 return {value: value, done: done};
60 } 66 }
61 67
62 68
63 // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator] 69 // 22.1.5.2.2 %ArrayIteratorPrototype%[@@iterator]
64 function ArrayIteratorIterator() { 70 function ArrayIteratorIterator() {
65 return this; 71 return this;
66 } 72 }
67 73
68 74
69 // 15.4.5.2.2 ArrayIterator.prototype.next( ) 75 // 15.4.5.2.2 ArrayIterator.prototype.next( )
70 function ArrayIteratorNext() { 76 function ArrayIteratorNext() {
71 var iterator = TO_OBJECT(this); 77 var iterator = TO_OBJECT(this);
72 78
73 if (!HAS_DEFINED_PRIVATE(iterator, arrayIteratorNextIndexSymbol)) { 79 if (!HAS_DEFINED_PRIVATE(iterator, ArrayIteratorNextIndexSymbol)) {
74 throw MakeTypeError(kIncompatibleMethodReceiver, 80 throw MakeTypeError(kIncompatibleMethodReceiver,
75 'Array Iterator.prototype.next', this); 81 'Array Iterator.prototype.next', this);
76 } 82 }
77 83
78 var array = GET_PRIVATE(iterator, arrayIteratorObjectSymbol); 84 var array = GET_PRIVATE(iterator, ArrayIteratorObjectSymbol);
79 if (IS_UNDEFINED(array)) { 85 if (IS_UNDEFINED(array)) {
80 return CreateIteratorResultObject(UNDEFINED, true); 86 return CreateIteratorResultObject(UNDEFINED, true);
81 } 87 }
82 88
83 var index = GET_PRIVATE(iterator, arrayIteratorNextIndexSymbol); 89 var index = GET_PRIVATE(iterator, ArrayIteratorNextIndexSymbol);
84 var itemKind = GET_PRIVATE(iterator, arrayIterationKindSymbol); 90 var itemKind = GET_PRIVATE(iterator, ArrayIterationKindSymbol);
85 var length = TO_UINT32(array.length); 91 var length = TO_UINT32(array.length);
86 92
87 // "sparse" is never used. 93 // "sparse" is never used.
88 94
89 if (index >= length) { 95 if (index >= length) {
90 SET_PRIVATE(iterator, arrayIteratorObjectSymbol, UNDEFINED); 96 SET_PRIVATE(iterator, ArrayIteratorObjectSymbol, UNDEFINED);
91 return CreateIteratorResultObject(UNDEFINED, true); 97 return CreateIteratorResultObject(UNDEFINED, true);
92 } 98 }
93 99
94 SET_PRIVATE(iterator, arrayIteratorNextIndexSymbol, index + 1); 100 SET_PRIVATE(iterator, ArrayIteratorNextIndexSymbol, index + 1);
95 101
96 if (itemKind == ITERATOR_KIND_VALUES) { 102 if (itemKind == ITERATOR_KIND_VALUES) {
97 return CreateIteratorResultObject(array[index], false); 103 return CreateIteratorResultObject(array[index], false);
98 } 104 }
99 105
100 if (itemKind == ITERATOR_KIND_ENTRIES) { 106 if (itemKind == ITERATOR_KIND_ENTRIES) {
101 return CreateIteratorResultObject([index, array[index]], false); 107 return CreateIteratorResultObject([index, array[index]], false);
102 } 108 }
103 109
104 return CreateIteratorResultObject(index, false); 110 return CreateIteratorResultObject(index, false);
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
162 to.ArrayIteratorCreateResultObject = CreateIteratorResultObject; 168 to.ArrayIteratorCreateResultObject = CreateIteratorResultObject;
163 }); 169 });
164 170
165 $arrayValues = ArrayValues; 171 $arrayValues = ArrayValues;
166 172
167 utils.ExportToRuntime(function(to) { 173 utils.ExportToRuntime(function(to) {
168 to.ArrayValues = ArrayValues; 174 to.ArrayValues = ArrayValues;
169 }); 175 });
170 176
171 }) 177 })
OLDNEW
« no previous file with comments | « no previous file | src/bootstrapper.h » ('j') | src/heap/heap.h » ('J')

Powered by Google App Engine
This is Rietveld 408576698