Index: runtime/lib/byte_array.dart |
diff --git a/runtime/lib/byte_array.dart b/runtime/lib/byte_array.dart |
index 38a90f1453e19db9b2b1d0f0d50e78cb7698a0ee..d2e1ec0ebd48c7bab33549195697cfcfa010e81c 100644 |
--- a/runtime/lib/byte_array.dart |
+++ b/runtime/lib/byte_array.dart |
@@ -556,13 +556,17 @@ class _Int8Array extends _ByteArrayBase implements Int8List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Int8Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -620,13 +624,17 @@ class _Uint8Array extends _ByteArrayBase implements Uint8List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Uint8Array || from is _ExternalUint8Array || |
from is _Uint8ClampedArray || from is _ExternalUint8ClampedArray) { |
@@ -686,13 +694,17 @@ class _Uint8ClampedArray extends _ByteArrayBase implements Uint8ClampedList { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Uint8Array || from is _ExternalUint8Array || |
from is _Uint8ClampedArray || from is _ExternalUint8ClampedArray) { |
@@ -751,13 +763,17 @@ class _Int16Array extends _ByteArrayBase implements Int16List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Int16Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -815,13 +831,17 @@ class _Uint16Array extends _ByteArrayBase implements Uint16List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Uint16Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -879,13 +899,17 @@ class _Int32Array extends _ByteArrayBase implements Int32List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Int32Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -944,13 +968,17 @@ class _Uint32Array extends _ByteArrayBase implements Uint32List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Uint32Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1008,13 +1036,17 @@ class _Int64Array extends _ByteArrayBase implements Int64List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Int64Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1072,13 +1104,17 @@ class _Uint64Array extends _ByteArrayBase implements Uint64List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _Uint64Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1136,13 +1172,18 @@ class _Float32Array extends _ByteArrayBase implements Float32List { |
return new _ByteArrayIterator<double>(this); |
} |
- List<double> getRange(int start, int length) { |
+ List<double> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<double> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<double> getRange(int start, int length) => |
+ sublist(start, start + length); |
+ |
void setRange(int start, int length, List<double> from, [int startFrom = 0]) { |
if (from is _Float32Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1200,13 +1241,18 @@ class _Float64Array extends _ByteArrayBase implements Float64List { |
return new _ByteArrayIterator<double>(this); |
} |
- List<double> getRange(int start, int length) { |
+ List<double> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<double> result = _new(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<double> getRange(int start, int length) => |
+ sublist(start, start + length); |
+ |
void setRange(int start, int length, List<double> from, [int startFrom = 0]) { |
if (from is _Float64Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1253,13 +1299,17 @@ class _ExternalInt8Array extends _ByteArrayBase implements Int8List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int8List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalInt8Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1304,13 +1354,17 @@ class _ExternalUint8Array extends _ByteArrayBase implements Uint8List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint8List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalUint8Array || from is _Uint8Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1356,13 +1410,17 @@ class _ExternalUint8ClampedArray |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint8ClampedList(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalUint8ClampedArray || from is _Uint8ClampedArray) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1407,13 +1465,17 @@ class _ExternalInt16Array extends _ByteArrayBase implements Int16List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int16List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalInt16Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1458,13 +1520,17 @@ class _ExternalUint16Array extends _ByteArrayBase implements Uint16List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint16List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalUint16Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1511,13 +1577,17 @@ class _ExternalInt32Array extends _ByteArrayBase implements Int32List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int32List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalInt32Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1564,13 +1634,17 @@ class _ExternalUint32Array extends _ByteArrayBase implements Uint32List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint32List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalUint32Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1617,13 +1691,17 @@ class _ExternalInt64Array extends _ByteArrayBase implements Int64List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int64List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalInt64Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1670,13 +1748,17 @@ class _ExternalUint64Array extends _ByteArrayBase implements Uint64List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint64List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
if (from is _ExternalUint64Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1723,13 +1805,18 @@ class _ExternalFloat32Array extends _ByteArrayBase implements Float32List { |
return new _ByteArrayIterator<double>(this); |
} |
- List<double> getRange(int start, int length) { |
+ List<double> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<double> result = new Float32List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<double> getRange(int start, int length) => |
+ sublist(start, start + length); |
+ |
void setRange(int start, int length, List<double> from, [int startFrom = 0]) { |
if (from is _ExternalFloat32Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -1776,13 +1863,18 @@ class _ExternalFloat64Array extends _ByteArrayBase implements Float64List { |
return new _ByteArrayIterator<double>(this); |
} |
- List<double> getRange(int start, int length) { |
+ List<double> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<double> result = new Float64List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<double> getRange(int start, int length) => |
+ sublist(start, start + length); |
+ |
void setRange(int start, int length, List<double> from, [int startFrom = 0]) { |
if (from is _ExternalFloat64Array) { |
_setRange(start * _BYTES_PER_ELEMENT, |
@@ -2110,13 +2202,17 @@ class _Int8ArrayView extends _ByteArrayViewBase implements Int8List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int8List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2174,13 +2270,17 @@ class _Uint8ArrayView extends _ByteArrayViewBase implements Uint8List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint8List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2238,13 +2338,17 @@ class _Int16ArrayView extends _ByteArrayViewBase implements Int16List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int16List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2302,13 +2406,17 @@ class _Uint16ArrayView extends _ByteArrayViewBase implements Uint16List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint16List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2366,13 +2474,17 @@ class _Int32ArrayView extends _ByteArrayViewBase implements Int32List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int32List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2430,13 +2542,17 @@ class _Uint32ArrayView extends _ByteArrayViewBase implements Uint32List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint32List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2494,13 +2610,17 @@ class _Int64ArrayView extends _ByteArrayViewBase implements Int64List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Int64List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2558,13 +2678,17 @@ class _Uint64ArrayView extends _ByteArrayViewBase implements Uint64List { |
return new _ByteArrayIterator<int>(this); |
} |
- List<int> getRange(int start, int length) { |
+ List<int> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<int> result = new Uint64List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<int> getRange(int start, int length) => sublist(start, start + length); |
+ |
void setRange(int start, int length, List<int> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2622,13 +2746,18 @@ class _Float32ArrayView extends _ByteArrayViewBase implements Float32List { |
return new _ByteArrayIterator<double>(this); |
} |
- List<double> getRange(int start, int length) { |
+ List<double> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<double> result = new Float32List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<double> getRange(int start, int length) => |
+ sublist(start, start + length); |
+ |
void setRange(int start, int length, List<double> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |
@@ -2686,13 +2815,18 @@ class _Float64ArrayView extends _ByteArrayViewBase implements Float64List { |
return new _ByteArrayIterator<double>(this); |
} |
- List<double> getRange(int start, int length) { |
+ List<double> sublist(int start, [int end]) { |
+ if (end == null) end = this.length; |
+ int length = end - start; |
_rangeCheck(this.length, start, length); |
List<double> result = new Float64List(length); |
result.setRange(0, length, this, start); |
return result; |
} |
+ List<double> getRange(int start, int length) => |
+ sublist(start, start + length); |
+ |
void setRange(int start, int length, List<double> from, [int startFrom = 0]) { |
IterableMixinWorkaround.setRangeList(this, start, length, from, startFrom); |
} |