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

Unified Diff: pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart

Issue 2994203002: Optimize DDC private library files. (Closed)
Patch Set: Address comments Created 3 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: pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart
diff --git a/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart b/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart
index 4a4c082101754059cc1b81a6d0be7acfcb5f6b36..41835b636bb774e29265589a8e1eef111592cbe5 100644
--- a/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart
+++ b/pkg/dev_compiler/tool/input_sdk/patch/core_patch.dart
@@ -15,6 +15,8 @@ import 'dart:_js_helper'
JsLinkedHashMap,
JSSyntaxRegExp,
NoInline,
+ notNull,
+ nullCheck,
objectHashCode,
Primitives,
stringJoinUnchecked;
@@ -319,14 +321,14 @@ class Stopwatch {
@patch
class List<E> {
@patch
- factory List([int length]) {
+ factory List([int _length]) {
dynamic list;
- if (length == null) {
+ if (_length == null) {
list = JS('', '[]');
} else {
- // Explicit type test is necessary to guard against JavaScript conversions
- // in unchecked mode.
- if ((length is! int) || (length < 0)) {
+ @notNull
+ var length = _length;
+ if (length < 0) {
throw new ArgumentError(
"Length must be a non-negative integer: $length");
}
@@ -339,19 +341,29 @@ class List<E> {
factory List.filled(int length, E fill, {bool growable: true}) {
List<E> result = new List<E>(length);
if (length != 0 && fill != null) {
- for (int i = 0; i < result.length; i++) {
+ @notNull
+ var length = result.length;
+ for (int i = 0; i < length; i++) {
result[i] = fill;
}
}
if (growable) return result;
- return makeListFixedLength/*<E>*/(result);
+ return makeListFixedLength<E>(result);
}
@patch
factory List.from(Iterable elements, {bool growable: true}) {
List<E> list = new List<E>();
- for (var e in elements) {
- list.add(e);
+ // Specialize the copy loop for the case that doesn't need a
+ // runtime check.
+ if (elements is Iterable<E>) {
+ for (var e in elements) {
+ list.add(e);
+ }
+ } else {
+ for (var e in elements) {
+ list.add(e as E);
+ }
}
if (growable) return list;
return makeListFixedLength/*<E>*/(list);

Powered by Google App Engine
This is Rietveld 408576698