Chromium Code Reviews| Index: runtime/lib/array.dart | 
| diff --git a/runtime/lib/array.dart b/runtime/lib/array.dart | 
| index e4ee5601a9421aa92a44ddd294930c37ddcd321e..1a8977eb6c4c48161109bebc02ae5100a77173b7 100644 | 
| --- a/runtime/lib/array.dart | 
| +++ b/runtime/lib/array.dart | 
| @@ -82,15 +82,20 @@ class _ObjectArray<E> implements List<E> { | 
| "Cannot insert range in a non-extendable array"); | 
| } | 
| - List<E> getRange(int start, int length) { | 
| - if (length == 0) return []; | 
| - Arrays.rangeCheck(this, start, length); | 
| + | 
| + List<E> sublist(int start, [int end]) { | 
| + Arrays.indicesCheck(this, start, end); | 
| 
 
srdjan
2013/03/18 16:24:41
It seems that this version of sublist is considera
 
 | 
| + if (end == null) end = this.length; | 
| + int length = end - start; | 
| + if (start == end) return []; | 
| List list = new _GrowableObjectArray<E>.withCapacity(length); | 
| list.length = length; | 
| Arrays.copy(this, start, list, 0, length); | 
| return list; | 
| } | 
| + List<E> getRange(int start, int length) => sublist(start, start + length); | 
| + | 
| // Iterable interface. | 
| bool contains(E element) { | 
| @@ -325,15 +330,19 @@ class _ImmutableArray<E> implements List<E> { | 
| "Cannot insert range in an immutable array"); | 
| } | 
| - List<E> getRange(int start, int length) { | 
| - if (length == 0) return []; | 
| - Arrays.rangeCheck(this, start, length); | 
| + List<E> sublist(int start, [int end]) { | 
| + Arrays.indicesCheck(this, start, end); | 
| + if (end == null) end = this.length; | 
| + int length = end - start; | 
| + if (start == end) return []; | 
| List list = new List<E>(); | 
| list.length = length; | 
| Arrays.copy(this, start, list, 0, length); | 
| return list; | 
| } | 
| + List<E> getRange(int start, int length) => sublist(start, start + length); | 
| + | 
| // Collection interface. | 
| bool contains(E element) { |