Index: runtime/lib/growable_array.dart |
diff --git a/runtime/lib/growable_array.dart b/runtime/lib/growable_array.dart |
index 1a7b88270d35f3dce5a42bc974fba881ea738423..56e70b260e251b5d0fd063ef5eabbcba35813db2 100644 |
--- a/runtime/lib/growable_array.dart |
+++ b/runtime/lib/growable_array.dart |
@@ -103,10 +103,11 @@ class _GrowableList<T> implements List<T> { |
if (end == null) end = this.length; |
int length = end - start; |
if (start == end) return <T>[]; |
- List list = new _GrowableList<T>.withCapacity(length); |
- list.length = length; |
+ List list = new _List(length); |
Lists.copy(this, start, list, 0, length); |
- return list; |
+ var result = new _GrowableList<T>.withData(list); |
+ result._setLength(length); |
+ return result; |
} |
static const int _kDefaultCapacity = 2; |
@@ -336,7 +337,10 @@ class _GrowableList<T> implements List<T> { |
} |
List<T> toList({ bool growable: true }) { |
- return new List<T>.from(this, growable: growable); |
+ var length = this.length; |
+ var result = growable ? new _GrowableList<T>(length) : new _List<T>(length); |
+ Lists.copy(this, 0, result, 0, length); |
+ return result; |
} |
Set<T> toSet() { |