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

Unified Diff: lib/runtime/dart/_internal.js

Issue 1178523004: fixes #215, removes special case for length (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 5 years, 6 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: lib/runtime/dart/_internal.js
diff --git a/lib/runtime/dart/_internal.js b/lib/runtime/dart/_internal.js
index bd7cd046a0d1413b6e9dee9b2b7a26190ce1a503..d8e517416d31bb38579108774aa88659fe978f0f 100644
--- a/lib/runtime/dart/_internal.js
+++ b/lib/runtime/dart/_internal.js
@@ -221,7 +221,7 @@ dart.library('dart/_internal', null, /* Imports */[
let result = null;
if (dart.notNull(growable)) {
result = core.List$(E).new();
- result.length = this.length;
+ result[dartx.length] = this.length;
} else {
result = core.List$(E).new(this.length);
}
@@ -309,19 +309,19 @@ dart.library('dart/_internal', null, /* Imports */[
}
}
get [_endIndex]() {
- let length = this[_iterable].length;
+ let length = this[_iterable][dartx.length];
if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) > dart.notNull(length))
return length;
return this[_endOrLength];
}
get [_startIndex]() {
- let length = this[_iterable].length;
+ let length = this[_iterable][dartx.length];
if (dart.notNull(this[_start]) > dart.notNull(length))
return length;
return this[_start];
}
get length() {
- let length = this[_iterable].length;
+ let length = this[_iterable][dartx.length];
if (dart.notNull(this[_start]) >= dart.notNull(length))
return 0;
if (this[_endOrLength] == null || dart.notNull(this[_endOrLength]) >= dart.notNull(length)) {
@@ -358,7 +358,7 @@ dart.library('dart/_internal', null, /* Imports */[
toList(opts) {
let growable = opts && 'growable' in opts ? opts.growable : true;
let start = this[_start];
- let end = this[_iterable].length;
+ let end = this[_iterable][dartx.length];
if (this[_endOrLength] != null && dart.notNull(this[_endOrLength]) < dart.notNull(end))
end = this[_endOrLength];
let length = dart.notNull(end) - dart.notNull(start);
@@ -366,12 +366,12 @@ dart.library('dart/_internal', null, /* Imports */[
length = 0;
let result = dart.notNull(growable) ? (() => {
let _ = core.List$(E).new();
- _.length = length;
+ _[dartx.length] = length;
return _;
})() : core.List$(E).new(length);
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
result[dartx.set](i, this[_iterable][dartx.elementAt](dart.notNull(start) + dart.notNull(i)));
- if (dart.notNull(this[_iterable].length) < dart.notNull(end))
+ if (dart.notNull(this[_iterable][dartx.length]) < dart.notNull(end))
throw new core.ConcurrentModificationError(this);
}
return dart.as(result, core.List$(E));
@@ -403,7 +403,7 @@ dart.library('dart/_internal', null, /* Imports */[
class ListIterator extends core.Object {
ListIterator(iterable) {
this[_iterable] = iterable;
- this[_length] = iterable.length;
+ this[_length] = iterable[dartx.length];
this[_index] = 0;
this[_current] = null;
}
@@ -411,7 +411,7 @@ dart.library('dart/_internal', null, /* Imports */[
return this[_current];
}
moveNext() {
- let length = this[_iterable].length;
+ let length = this[_iterable][dartx.length];
if (this[_length] != length) {
throw new core.ConcurrentModificationError(this[_iterable]);
}
@@ -455,7 +455,7 @@ dart.library('dart/_internal', null, /* Imports */[
return new (MappedIterator$(S, T))(this[_iterable][dartx.iterator], this[_f]);
}
get length() {
- return this[_iterable].length;
+ return this[_iterable][dartx.length];
}
get isEmpty() {
return this[_iterable][dartx.isEmpty];
@@ -542,7 +542,7 @@ dart.library('dart/_internal', null, /* Imports */[
super.ListIterable();
}
get length() {
- return this[_source].length;
+ return this[_source][dartx.length];
}
elementAt(index) {
return this[_f](this[_source][dartx.elementAt](index));
@@ -707,7 +707,7 @@ dart.library('dart/_internal', null, /* Imports */[
super._(iterable, takeCount);
}
get length() {
- let iterableLength = this[_iterable].length;
+ let iterableLength = this[_iterable][dartx.length];
if (dart.notNull(iterableLength) > dart.notNull(this[_takeCount]))
return this[_takeCount];
return iterableLength;
@@ -845,7 +845,7 @@ dart.library('dart/_internal', null, /* Imports */[
super._(iterable, skipCount);
}
get length() {
- let length = dart.notNull(this[_iterable].length) - dart.notNull(this[_skipCount]);
+ let length = dart.notNull(this[_iterable][dartx.length]) - dart.notNull(this[_skipCount]);
if (dart.notNull(length) >= 0)
return length;
return 0;
@@ -1169,20 +1169,20 @@ dart.library('dart/_internal', null, /* Imports */[
static removeWhereList(list, test) {
dart.as(test, dart.functionType(core.bool, [dart.bottom]));
let retained = [];
- let length = list.length;
+ let length = list[dartx.length];
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
let element = list[dartx.get](i);
if (!dart.notNull(dart.dcall(test, element))) {
retained[dartx.add](element);
}
- if (length != list.length) {
+ if (length != list[dartx.length]) {
throw new core.ConcurrentModificationError(list);
}
}
- if (retained.length == length)
+ if (retained[dartx.length] == length)
return;
- list.length = retained.length;
- for (let i = 0; dart.notNull(i) < dart.notNull(retained.length); i = dart.notNull(i) + 1) {
+ list[dartx.length] = retained[dartx.length];
+ for (let i = 0; dart.notNull(i) < dart.notNull(retained[dartx.length]); i = dart.notNull(i) + 1) {
list[dartx.set](i, retained[dartx.get](i));
}
}
@@ -1247,7 +1247,7 @@ dart.library('dart/_internal', null, /* Imports */[
static lastWhereList(list, test, orElse) {
dart.as(test, dart.functionType(core.bool, [dart.bottom]));
dart.as(orElse, dart.functionType(core.Object, []));
- for (let i = dart.notNull(list.length) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
+ for (let i = dart.notNull(list[dartx.length]) - 1; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
let element = list[dartx.get](i);
if (dart.notNull(dart.dcall(test, element)))
return element;
@@ -1297,16 +1297,16 @@ dart.library('dart/_internal', null, /* Imports */[
separator = null;
if (dart.notNull(list[dartx.isEmpty]))
return "";
- if (list.length == 1)
+ if (list[dartx.length] == 1)
return `${list[dartx.get](0)}`;
let buffer = new core.StringBuffer();
if (dart.notNull(separator[dartx.isEmpty])) {
- for (let i = 0; dart.notNull(i) < dart.notNull(list.length); i = dart.notNull(i) + 1) {
+ for (let i = 0; dart.notNull(i) < dart.notNull(list[dartx.length]); i = dart.notNull(i) + 1) {
buffer.write(list[dartx.get](i));
}
} else {
buffer.write(list[dartx.get](0));
- for (let i = 1; dart.notNull(i) < dart.notNull(list.length); i = dart.notNull(i) + 1) {
+ for (let i = 1; dart.notNull(i) < dart.notNull(list[dartx.length]); i = dart.notNull(i) + 1) {
buffer.write(separator);
buffer.write(list[dartx.get](i));
}
@@ -1355,7 +1355,7 @@ dart.library('dart/_internal', null, /* Imports */[
static shuffleList(list, random) {
if (random == null)
random = math.Random.new();
- let length = list.length;
+ let length = list[dartx.length];
while (dart.notNull(length) > 1) {
let pos = random.nextInt(length);
length = dart.notNull(length) - 1;
@@ -1365,15 +1365,15 @@ dart.library('dart/_internal', null, /* Imports */[
}
}
static indexOfList(list, element, start) {
- return Lists.indexOf(list, element, start, list.length);
+ return Lists.indexOf(list, element, start, list[dartx.length]);
}
static lastIndexOfList(list, element, start) {
if (start == null)
- start = dart.notNull(list.length) - 1;
+ start = dart.notNull(list[dartx.length]) - 1;
return Lists.lastIndexOf(list, element, start);
}
static _rangeCheck(list, start, end) {
- core.RangeError.checkValidRange(start, end, list.length);
+ core.RangeError.checkValidRange(start, end, list[dartx.length]);
}
getRangeList(list, start, end) {
IterableMixinWorkaround$()._rangeCheck(list, start, end);
@@ -1395,7 +1395,7 @@ dart.library('dart/_internal', null, /* Imports */[
otherList = from[dartx.skip](skipCount)[dartx.toList]({growable: false});
otherStart = 0;
}
- if (dart.notNull(otherStart) + dart.notNull(length) > dart.notNull(otherList.length)) {
+ if (dart.notNull(otherStart) + dart.notNull(length) > dart.notNull(otherList[dartx.length])) {
throw IterableElementError.tooFew();
}
Lists.copy(otherList, otherStart, list, start, length);
@@ -1406,21 +1406,21 @@ dart.library('dart/_internal', null, /* Imports */[
iterable = iterable[dartx.toList]();
}
let removeLength = dart.notNull(end) - dart.notNull(start);
- let insertLength = iterable.length;
+ let insertLength = iterable[dartx.length];
if (dart.notNull(removeLength) >= dart.notNull(insertLength)) {
let delta = dart.notNull(removeLength) - dart.notNull(insertLength);
let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
- let newEnd = dart.notNull(list.length) - dart.notNull(delta);
+ let newEnd = dart.notNull(list[dartx.length]) - dart.notNull(delta);
list[dartx.setRange](start, insertEnd, iterable);
if (delta != 0) {
list[dartx.setRange](insertEnd, newEnd, list, end);
- list.length = newEnd;
+ list[dartx.length] = newEnd;
}
} else {
let delta = dart.notNull(insertLength) - dart.notNull(removeLength);
- let newLength = dart.notNull(list.length) + dart.notNull(delta);
+ let newLength = dart.notNull(list[dartx.length]) + dart.notNull(delta);
let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
- list.length = newLength;
+ list[dartx.length] = newLength;
list[dartx.setRange](insertEnd, newLength, list, end);
list[dartx.setRange](start, insertEnd, iterable);
}
@@ -1432,13 +1432,13 @@ dart.library('dart/_internal', null, /* Imports */[
}
}
static insertAllList(list, index, iterable) {
- core.RangeError.checkValueInInterval(index, 0, list.length, "index");
+ core.RangeError.checkValueInInterval(index, 0, list[dartx.length], "index");
if (!dart.is(iterable, EfficientLength)) {
iterable = iterable[dartx.toList]({growable: false});
}
- let insertionLength = iterable.length;
- list.length = dart.notNull(list.length) + dart.notNull(insertionLength);
- list[dartx.setRange](dart.notNull(index) + dart.notNull(insertionLength), list.length, list, index);
+ let insertionLength = iterable[dartx.length];
+ list[dartx.length] = dart.notNull(list[dartx.length]) + dart.notNull(insertionLength);
+ list[dartx.setRange](dart.notNull(index) + dart.notNull(insertionLength), list[dartx.length], list, index);
for (let element of iterable) {
list[dartx.set]((() => {
let x = index;
@@ -1448,7 +1448,7 @@ dart.library('dart/_internal', null, /* Imports */[
}
}
static setAllList(list, index, iterable) {
- core.RangeError.checkValueInInterval(index, 0, list.length, "index");
+ core.RangeError.checkValueInInterval(index, 0, list[dartx.length], "index");
for (let element of iterable) {
list[dartx.set]((() => {
let x = index;
@@ -1802,7 +1802,7 @@ dart.library('dart/_internal', null, /* Imports */[
super.ListIterable();
}
get length() {
- return this[_backedList].length;
+ return this[_backedList][dartx.length];
}
elementAt(index) {
core.RangeError.checkValidIndex(index, this);
@@ -1824,7 +1824,7 @@ dart.library('dart/_internal', null, /* Imports */[
return dart.notNull(this.containsKey(key)) ? this[_values][dartx.get](dart.as(key, core.int)) : null;
}
get length() {
- return this[_values].length;
+ return this[_values][dartx.length];
}
get values() {
return new (SubListIterable$(E))(this[_values], 0, null);
@@ -1846,10 +1846,10 @@ dart.library('dart/_internal', null, /* Imports */[
}
forEach(f) {
dart.as(f, dart.functionType(dart.void, [core.int, E]));
- let length = this[_values].length;
+ let length = this[_values][dartx.length];
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
f(i, this[_values][dartx.get](i));
- if (length != this[_values].length) {
+ if (length != this[_values][dartx.length]) {
throw new core.ConcurrentModificationError(this[_values]);
}
}
@@ -1901,10 +1901,10 @@ dart.library('dart/_internal', null, /* Imports */[
super.ListIterable();
}
get length() {
- return this[_source].length;
+ return this[_source][dartx.length];
}
elementAt(index) {
- return this[_source][dartx.elementAt](dart.notNull(this[_source].length) - 1 - dart.notNull(index));
+ return this[_source][dartx.elementAt](dart.notNull(this[_source][dartx.length]) - 1 - dart.notNull(index));
}
}
dart.setSignature(ReversedListIterable, {
@@ -1979,7 +1979,7 @@ dart.library('dart/_internal', null, /* Imports */[
return true;
if (!dart.is(b, core.List))
return false;
- let length = a.length;
+ let length = a[dartx.length];
if (!dart.equals(length, dart.dload(b, 'length')))
return false;
for (let i = 0; dart.notNull(i) < dart.notNull(length); i = dart.notNull(i) + 1) {
@@ -1989,7 +1989,7 @@ dart.library('dart/_internal', null, /* Imports */[
return true;
}
static indexOf(a, element, startIndex, endIndex) {
- if (dart.notNull(startIndex) >= dart.notNull(a.length)) {
+ if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
return -1;
}
if (dart.notNull(startIndex) < 0) {
@@ -2006,8 +2006,8 @@ dart.library('dart/_internal', null, /* Imports */[
if (dart.notNull(startIndex) < 0) {
return -1;
}
- if (dart.notNull(startIndex) >= dart.notNull(a.length)) {
- startIndex = dart.notNull(a.length) - 1;
+ if (dart.notNull(startIndex) >= dart.notNull(a[dartx.length])) {
+ startIndex = dart.notNull(a[dartx.length]) - 1;
}
for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
if (dart.equals(a[dartx.get](i), element)) {
@@ -2017,14 +2017,14 @@ dart.library('dart/_internal', null, /* Imports */[
return -1;
}
static indicesCheck(a, start, end) {
- core.RangeError.checkValidRange(start, end, a.length);
+ core.RangeError.checkValidRange(start, end, a[dartx.length]);
}
static rangeCheck(a, start, length) {
core.RangeError.checkNotNegative(length);
core.RangeError.checkNotNegative(start);
- if (dart.notNull(start) + dart.notNull(length) > dart.notNull(a.length)) {
- let message = `${start} + ${length} must be in the range [0..${a.length}]`;
- throw new core.RangeError.range(length, 0, dart.notNull(a.length) - dart.notNull(start), "length", message);
+ if (dart.notNull(start) + dart.notNull(length) > dart.notNull(a[dartx.length])) {
+ let message = `${start} + ${length} must be in the range [0..${a[dartx.length]}]`;
+ throw new core.RangeError.range(length, 0, dart.notNull(a[dartx.length]) - dart.notNull(start), "length", message);
}
}
}
@@ -2046,10 +2046,10 @@ dart.library('dart/_internal', null, /* Imports */[
dart.fn(printToConsole, dart.void, [core.String]);
class Sort extends core.Object {
static sort(a, compare) {
- Sort._doSort(a, 0, dart.notNull(a.length) - 1, compare);
+ Sort._doSort(a, 0, dart.notNull(a[dartx.length]) - 1, compare);
}
static sortRange(a, from, to, compare) {
- if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a.length) || dart.notNull(to) < dart.notNull(from)) {
+ if (dart.notNull(from) < 0 || dart.notNull(to) > dart.notNull(a[dartx.length]) || dart.notNull(to) < dart.notNull(from)) {
throw "OutOfRange";
}
Sort._doSort(a, from, dart.notNull(to) - 1, compare);

Powered by Google App Engine
This is Rietveld 408576698