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

Side by Side Diff: runtime/lib/array.dart

Issue 2767533002: Revert "Fix observatory tests broken by running dartfmt." (Closed)
Patch Set: Created 3 years, 9 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 | « runtime/bin/vmservice/vmservice_io.dart ('k') | runtime/lib/array_patch.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5
5 // TODO(srdjan): Use shared array implementation. 6 // TODO(srdjan): Use shared array implementation.
6 class _List<E> extends FixedLengthListBase<E> { 7 class _List<E> extends FixedLengthListBase<E> {
8
7 factory _List(length) native "List_allocate"; 9 factory _List(length) native "List_allocate";
8 10
9 E operator [](int index) native "List_getIndexed"; 11 E operator [](int index) native "List_getIndexed";
10 12
11 void operator []=(int index, E value) native "List_setIndexed"; 13 void operator []=(int index, E value) native "List_setIndexed";
12 14
13 int get length native "List_getLength"; 15 int get length native "List_getLength";
14 16
15 List _slice(int start, int count, bool needsTypeArgument) { 17 List _slice(int start, int count, bool needsTypeArgument) {
16 if (count <= 64) { 18 if (count <= 64) {
17 final result = needsTypeArgument ? new _List<E>(count) : new _List(count); 19 final result = needsTypeArgument ? new _List<E>(count)
20 : new _List(count);
18 for (int i = 0; i < result.length; i++) { 21 for (int i = 0; i < result.length; i++) {
19 result[i] = this[start + i]; 22 result[i] = this[start + i];
20 } 23 }
21 return result; 24 return result;
22 } else { 25 } else {
23 return _sliceInternal(start, count, needsTypeArgument); 26 return _sliceInternal(start, count, needsTypeArgument);
24 } 27 }
25 } 28 }
26 29
27 List _sliceInternal(int start, int count, bool needsTypeArgument) 30 List _sliceInternal(int start, int count, bool needsTypeArgument)
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 if (length > 0) return this[length - 1]; 90 if (length > 0) return this[length - 1];
88 throw IterableElementError.noElement(); 91 throw IterableElementError.noElement();
89 } 92 }
90 93
91 E get single { 94 E get single {
92 if (length == 1) return this[0]; 95 if (length == 1) return this[0];
93 if (length == 0) throw IterableElementError.noElement(); 96 if (length == 0) throw IterableElementError.noElement();
94 throw IterableElementError.tooMany(); 97 throw IterableElementError.tooMany();
95 } 98 }
96 99
97 List<E> toList({bool growable: true}) { 100 List<E> toList({ bool growable: true }) {
98 var length = this.length; 101 var length = this.length;
99 if (length > 0) { 102 if (length > 0) {
100 var result = _slice(0, length, !growable); 103 var result = _slice(0, length, !growable);
101 if (growable) { 104 if (growable) {
102 result = new _GrowableList<E>.withData(result); 105 result = new _GrowableList<E>.withData(result);
103 result._setLength(length); 106 result._setLength(length);
104 } 107 }
105 return result; 108 return result;
106 } 109 }
107 // _GrowableList.withData must not be called with empty list. 110 // _GrowableList.withData must not be called with empty list.
108 return growable ? <E>[] : new List<E>(0); 111 return growable ? <E>[] : new List<E>(0);
109 } 112 }
110 } 113 }
111 114
115
112 // This is essentially the same class as _List, but it does not 116 // This is essentially the same class as _List, but it does not
113 // permit any modification of array elements from Dart code. We use 117 // permit any modification of array elements from Dart code. We use
114 // this class for arrays constructed from Dart array literals. 118 // this class for arrays constructed from Dart array literals.
115 // TODO(hausner): We should consider the trade-offs between two 119 // TODO(hausner): We should consider the trade-offs between two
116 // classes (and inline cache misses) versus a field in the native 120 // classes (and inline cache misses) versus a field in the native
117 // implementation (checks when modifying). We should keep watching 121 // implementation (checks when modifying). We should keep watching
118 // the inline cache misses. 122 // the inline cache misses.
119 class _ImmutableList<E> extends UnmodifiableListBase<E> { 123 class _ImmutableList<E> extends UnmodifiableListBase<E> {
124
120 factory _ImmutableList._uninstantiable() { 125 factory _ImmutableList._uninstantiable() {
121 throw new UnsupportedError( 126 throw new UnsupportedError(
122 "ImmutableArray can only be allocated by the VM"); 127 "ImmutableArray can only be allocated by the VM");
123 } 128 }
124 129
125 factory _ImmutableList._from(List from, int offset, int length) 130 factory _ImmutableList._from(List from, int offset, int length)
126 native "ImmutableList_from"; 131 native "ImmutableList_from";
127 132
128 E operator [](int index) native "List_getIndexed"; 133 E operator [](int index) native "List_getIndexed";
129 134
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 if (length > 0) return this[length - 1]; 169 if (length > 0) return this[length - 1];
165 throw IterableElementError.noElement(); 170 throw IterableElementError.noElement();
166 } 171 }
167 172
168 E get single { 173 E get single {
169 if (length == 1) return this[0]; 174 if (length == 1) return this[0];
170 if (length == 0) throw IterableElementError.noElement(); 175 if (length == 0) throw IterableElementError.noElement();
171 throw IterableElementError.tooMany(); 176 throw IterableElementError.tooMany();
172 } 177 }
173 178
174 List<E> toList({bool growable: true}) { 179 List<E> toList({ bool growable: true }) {
175 var length = this.length; 180 var length = this.length;
176 if (length > 0) { 181 if (length > 0) {
177 List list = growable ? new _List(length) : new _List<E>(length); 182 List list = growable ? new _List(length) : new _List<E>(length);
178 for (int i = 0; i < length; i++) { 183 for (int i = 0; i < length; i++) {
179 list[i] = this[i]; 184 list[i] = this[i];
180 } 185 }
181 if (!growable) return list; 186 if (!growable) return list;
182 var result = new _GrowableList<E>.withData(list); 187 var result = new _GrowableList<E>.withData(list);
183 result._setLength(length); 188 result._setLength(length);
184 return result; 189 return result;
185 } 190 }
186 return growable ? <E>[] : new _List<E>(0); 191 return growable ? <E>[] : new _List<E>(0);
187 } 192 }
188 } 193 }
189 194
195
190 // Iterator for arrays with fixed size. 196 // Iterator for arrays with fixed size.
191 class _FixedSizeArrayIterator<E> implements Iterator<E> { 197 class _FixedSizeArrayIterator<E> implements Iterator<E> {
192 final List<E> _array; 198 final List<E> _array;
193 final int _length; // Cache array length for faster access. 199 final int _length; // Cache array length for faster access.
194 int _index; 200 int _index;
195 E _current; 201 E _current;
196 202
197 _FixedSizeArrayIterator(List array) 203 _FixedSizeArrayIterator(List array)
198 : _array = array, 204 : _array = array, _length = array.length, _index = 0 {
199 _length = array.length,
200 _index = 0 {
201 assert(array is _List || array is _ImmutableList); 205 assert(array is _List || array is _ImmutableList);
202 } 206 }
203 207
204 E get current => _current; 208 E get current => _current;
205 209
206 bool moveNext() { 210 bool moveNext() {
207 if (_index >= _length) { 211 if (_index >= _length) {
208 _current = null; 212 _current = null;
209 return false; 213 return false;
210 } 214 }
211 _current = _array[_index]; 215 _current = _array[_index];
212 _index++; 216 _index++;
213 return true; 217 return true;
214 } 218 }
215 } 219 }
OLDNEW
« no previous file with comments | « runtime/bin/vmservice/vmservice_io.dart ('k') | runtime/lib/array_patch.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698