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

Unified Diff: runtime/lib/growable_array.dart

Issue 485043002: Optimize List.toList/.sublist and List.from on lists. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 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 side-by-side diff with in-line comments
Download patch
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() {

Powered by Google App Engine
This is Rietveld 408576698