Chromium Code Reviews| Index: test/codegen/expect/collection/collection.js |
| diff --git a/test/codegen/expect/collection/collection.js b/test/codegen/expect/collection/collection.js |
| index 81c2942e50e42482275460f5fc8e750361d2df6d..35efacabc103eb336ea26d4278a1925d1936014f 100644 |
| --- a/test/codegen/expect/collection/collection.js |
| +++ b/test/codegen/expect/collection/collection.js |
| @@ -68,7 +68,7 @@ var collection; |
| return dart.as(null, V); |
| let bucket = this._getBucket(rest, key); |
| let index = this._findBucketIndex(bucket, key); |
| - return dart.as(index < 0 ? null : _foreign_helper.JS('var', '#[#]', bucket, index + 1), V); |
| + return dart.as(index < 0 ? null : bucket[index + 1], V); |
| } |
| set(key, value) { |
| if (_isStringKey(key)) { |
| @@ -90,17 +90,17 @@ var collection; |
| if (rest === null) |
| this._rest = rest = _newHashTable(); |
| let hash = this._computeHashCode(key); |
| - let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); |
| + let bucket = rest[hash]; |
| if (bucket === null) { |
| - _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#, #]', key, value)); |
| + _setTableEntry(rest, hash, [key, value]); |
| this._length++; |
| this._keys = null; |
| } else { |
| let index = this._findBucketIndex(bucket, key); |
| if (index >= 0) { |
| - _foreign_helper.JS('void', '#[#] = #', bucket, index + 1, value); |
| + bucket[index + 1] = value; |
| } else { |
| - _foreign_helper.JS('void', '#.push(#, #)', bucket, key, value); |
| + bucket.push(key, value); |
| this._length++; |
| this._keys = null; |
| } |
| @@ -132,7 +132,7 @@ var collection; |
| return dart.as(null, V); |
| this._length--; |
| this._keys = null; |
| - return dart.as(_foreign_helper.JS('var', '#.splice(#, 2)[1]', bucket, index), V); |
| + return dart.as(bucket.splice(index, 2)[1], V); |
| } |
| clear() { |
| if (this._length > 0) { |
| @@ -143,9 +143,9 @@ var collection; |
| forEach(action) { |
| let keys = this._computeKeys(); |
| for (let i = 0, length = keys.length; i < length; i++) { |
| - let key = _foreign_helper.JS('var', '#[#]', keys, i); |
| + let key = keys[i]; |
| action(dart.as(key, K), this.get(key)); |
| - if (_foreign_helper.JS('bool', '# !== #', keys, this._keys)) { |
| + if (keys !== this._keys) { |
| throw new core.ConcurrentModificationError(this); |
| } |
| } |
| @@ -157,35 +157,35 @@ var collection; |
| let index = 0; |
| let strings = this._strings; |
| if (strings !== null) { |
| - let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', strings); |
| - let entries = dart.as(_foreign_helper.JS('int', '#.length', names), core.int); |
| + let names = Object.getOwnPropertyNames(strings); |
| + let entries = names.length; |
| for (let i = 0; i < entries; i++) { |
| - let key = dart.as(_foreign_helper.JS('String', '#[#]', names, i), core.String); |
| - _foreign_helper.JS('void', '#[#] = #', result, index, key); |
| + let key = names[i]; |
| + result[index] = key; |
| index++; |
| } |
| } |
| let nums = this._nums; |
| if (nums !== null) { |
| - let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', nums); |
| - let entries = dart.as(_foreign_helper.JS('int', '#.length', names), core.int); |
| + let names = Object.getOwnPropertyNames(nums); |
| + let entries = names.length; |
| for (let i = 0; i < entries; i++) { |
| - let key = dart.as(_foreign_helper.JS('num', '+#[#]', names, i), core.num); |
| - _foreign_helper.JS('void', '#[#] = #', result, index, key); |
| + let key = +names[i]; |
| + result[index] = key; |
| index++; |
| } |
| } |
| let rest = this._rest; |
| if (rest !== null) { |
| - let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', rest); |
| - let entries = dart.as(_foreign_helper.JS('int', '#.length', names), core.int); |
| + let names = Object.getOwnPropertyNames(rest); |
| + let entries = names.length; |
| for (let i = 0; i < entries; i++) { |
| - let key = _foreign_helper.JS('String', '#[#]', names, i); |
| - let bucket = _foreign_helper.JS('var', '#[#]', rest, key); |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let key = names[i]; |
| + let bucket = rest[key]; |
| + let length = bucket.length; |
| for (let i = 0; i < length; i = 2) { |
| - let key = _foreign_helper.JS('var', '#[#]', bucket, i); |
| - _foreign_helper.JS('void', '#[#] = #', result, index, key); |
| + let key = bucket[i]; |
| + result[index] = key; |
| index++; |
| } |
| } |
| @@ -215,45 +215,45 @@ var collection; |
| return dart.notNull(typeof key == string) && dart.notNull(!dart.equals(key, '__proto__')); |
| } |
| static _isNumericKey(key) { |
| - return core.bool['&&'](dart.is(key, core.num), _foreign_helper.JS('bool', '(# & 0x3ffffff) === #', key, key)); |
| + return dart.notNull(dart.is(key, core.num)) && dart.notNull((key & 0x3ffffff) === key); |
|
Jennifer Messerly
2015/02/27 14:59:23
filed https://github.com/dart-lang/dev_compiler/is
vsm
2015/02/27 17:20:05
Commented there. I think the cleanest solution is
|
| } |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(key, 'hashCode')), core.int); |
| + return dart.dload(key, 'hashCode') & 0x3ffffff; |
| } |
| static _hasTableEntry(table, key) { |
| - let entry = _foreign_helper.JS('var', '#[#]', table, key); |
| + let entry = table[key]; |
| return entry !== null; |
| } |
| static _getTableEntry(table, key) { |
| - let entry = _foreign_helper.JS('var', '#[#]', table, key); |
| - return _foreign_helper.JS('bool', '# === #', entry, table) ? null : entry; |
| + let entry = table[key]; |
| + return entry === table ? null : entry; |
| } |
| static _setTableEntry(table, key, value) { |
| if (value === null) { |
| - _foreign_helper.JS('void', '#[#] = #', table, key, table); |
| + table[key] = table; |
| } else { |
| - _foreign_helper.JS('void', '#[#] = #', table, key, value); |
| + table[key] = value; |
| } |
| } |
| static _deleteTableEntry(table, key) { |
| - _foreign_helper.JS('void', 'delete #[#]', table, key); |
| + delete table[key]; |
| } |
| _getBucket(table, key) { |
| let hash = this._computeHashCode(key); |
| - return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List); |
| + return dart.as(table[hash], core.List); |
| } |
| _findBucketIndex(bucket, key) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i = 2) { |
| - if (dart.equals(_foreign_helper.JS('var', '#[#]', bucket, i), key)) |
| + if (dart.equals(bucket[i], key)) |
| return i; |
| } |
| return -1; |
| } |
| static _newHashTable() { |
| - let table = _foreign_helper.JS('var', 'Object.create(null)'); |
| + let table = Object.create(null); |
| let temporaryKey = '<non-identifier-key>'; |
| _setTableEntry(table, temporaryKey, table); |
| _deleteTableEntry(table, temporaryKey); |
| @@ -266,14 +266,14 @@ var collection; |
| let _IdentityHashMap$ = dart.generic(function(K, V) { |
| class _IdentityHashMap extends _HashMap$(K, V) { |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityHashCode(key)), core.int); |
| + return core.identityHashCode(key) & 0x3ffffff; |
| } |
| _findBucketIndex(bucket, key) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i = 2) { |
| - if (core.identical(_foreign_helper.JS('var', '#[#]', bucket, i), key)) |
| + if (core.identical(bucket[i], key)) |
| return i; |
| } |
| return -1; |
| @@ -309,14 +309,14 @@ var collection; |
| return super._remove(key); |
| } |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hashCode(dart.as(key, K))), core.int); |
| + return this._hashCode(dart.as(key, K)) & 0x3ffffff; |
| } |
| _findBucketIndex(bucket, key) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i = 2) { |
| - if (this._equals(dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), K), dart.as(key, K))) |
| + if (this._equals(dart.as(bucket[i], K), dart.as(key, K))) |
| return i; |
| } |
| return -1; |
| @@ -348,9 +348,9 @@ var collection; |
| } |
| forEach(f) { |
| let keys = dart.as(dart.dinvoke(this._map, '_computeKeys'), core.List); |
| - for (let i = 0, length = dart.as(_foreign_helper.JS('int', '#.length', keys), core.int); i < length; i++) { |
| - f(dart.as(_foreign_helper.JS('var', '#[#]', keys, i), E)); |
| - if (_foreign_helper.JS('bool', '# !== #', keys, dart.dload(this._map, '_keys'))) { |
| + for (let i = 0, length = keys.length; i < length; i++) { |
| + f(dart.as(keys[i], E)); |
| + if (keys !== dart.dload(this._map, '_keys')) { |
| throw new core.ConcurrentModificationError(this._map); |
| } |
| } |
| @@ -373,14 +373,14 @@ var collection; |
| moveNext() { |
| let keys = this._keys; |
| let offset = this._offset; |
| - if (_foreign_helper.JS('bool', '# !== #', keys, dart.dload(this._map, '_keys'))) { |
| + if (keys !== dart.dload(this._map, '_keys')) { |
| throw new core.ConcurrentModificationError(this._map); |
| - } else if (offset['>='](_foreign_helper.JS('int', '#.length', keys))) { |
| + } else if (offset >= keys.length) { |
| this._current = dart.as(null, E); |
| return false; |
| } else { |
| - this._current = dart.as(_foreign_helper.JS('var', '#[#]', keys, offset), E); |
| - this._offset = dart.as(_foreign_helper.JS('int', '#', offset + 1), core.int); |
| + this._current = dart.as(keys[offset], E); |
| + this._offset = offset + 1; |
| return true; |
| } |
| } |
| @@ -471,7 +471,7 @@ var collection; |
| let index = this._findBucketIndex(bucket, key); |
| if (index < 0) |
| return dart.as(null, V); |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, index), LinkedHashMapCell); |
| + let cell = dart.as(bucket[index], LinkedHashMapCell); |
| return dart.as(cell._value, V); |
| } |
| set(key, value) { |
| @@ -494,18 +494,18 @@ var collection; |
| if (rest === null) |
| this._rest = rest = _newHashTable(); |
| let hash = this._computeHashCode(key); |
| - let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); |
| + let bucket = rest[hash]; |
| if (bucket === null) { |
| let cell = this._newLinkedCell(key, value); |
| - _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#]', cell)); |
| + _setTableEntry(rest, hash, [cell]); |
| } else { |
| let index = this._findBucketIndex(bucket, key); |
| if (index >= 0) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, index), LinkedHashMapCell); |
| + let cell = dart.as(bucket[index], LinkedHashMapCell); |
| cell._value = value; |
| } else { |
| let cell = this._newLinkedCell(key, value); |
| - _foreign_helper.JS('void', '#.push(#)', bucket, cell); |
| + bucket.push(cell); |
| } |
| } |
| } |
| @@ -533,7 +533,7 @@ var collection; |
| let index = this._findBucketIndex(bucket, key); |
| if (index < 0) |
| return dart.as(null, V); |
| - let cell = dart.as(_foreign_helper.JS('var', '#.splice(#, 1)[0]', bucket, index), LinkedHashMapCell); |
| + let cell = dart.as(bucket.splice(index, 1)[0], LinkedHashMapCell); |
| this._unlinkCell(cell); |
| return dart.as(cell._value, V); |
| } |
| @@ -611,38 +611,38 @@ var collection; |
| return dart.notNull(typeof key == string) && dart.notNull(!dart.equals(key, '__proto__')); |
| } |
| static _isNumericKey(key) { |
| - return core.bool['&&'](dart.is(key, core.num), _foreign_helper.JS('bool', '(# & 0x3ffffff) === #', key, key)); |
| + return dart.notNull(dart.is(key, core.num)) && dart.notNull((key & 0x3ffffff) === key); |
| } |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(key, 'hashCode')), core.int); |
| + return dart.dload(key, 'hashCode') & 0x3ffffff; |
| } |
| static _getTableEntry(table, key) { |
| - return _foreign_helper.JS('var', '#[#]', table, key); |
| + return table[key]; |
| } |
| static _setTableEntry(table, key, value) { |
| dart.assert(value !== null); |
| - _foreign_helper.JS('void', '#[#] = #', table, key, value); |
| + table[key] = value; |
| } |
| static _deleteTableEntry(table, key) { |
| - _foreign_helper.JS('void', 'delete #[#]', table, key); |
| + delete table[key]; |
| } |
| _getBucket(table, key) { |
| let hash = this._computeHashCode(key); |
| - return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List); |
| + return dart.as(table[hash], core.List); |
| } |
| _findBucketIndex(bucket, key) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), LinkedHashMapCell); |
| + let cell = dart.as(bucket[i], LinkedHashMapCell); |
| if (dart.equals(cell._key, key)) |
| return i; |
| } |
| return -1; |
| } |
| static _newHashTable() { |
| - let table = _foreign_helper.JS('var', 'Object.create(null)'); |
| + let table = Object.create(null); |
| let temporaryKey = '<non-identifier-key>'; |
| _setTableEntry(table, temporaryKey, table); |
| _deleteTableEntry(table, temporaryKey); |
| @@ -658,14 +658,14 @@ var collection; |
| let _LinkedIdentityHashMap$ = dart.generic(function(K, V) { |
| class _LinkedIdentityHashMap extends _LinkedHashMap$(K, V) { |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityHashCode(key)), core.int); |
| + return core.identityHashCode(key) & 0x3ffffff; |
| } |
| _findBucketIndex(bucket, key) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), LinkedHashMapCell); |
| + let cell = dart.as(bucket[i], LinkedHashMapCell); |
| if (core.identical(cell._key, key)) |
| return i; |
| } |
| @@ -702,14 +702,14 @@ var collection; |
| return super._remove(key); |
| } |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hashCode(dart.as(key, K))), core.int); |
| + return this._hashCode(dart.as(key, K)) & 0x3ffffff; |
| } |
| _findBucketIndex(bucket, key) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), LinkedHashMapCell); |
| + let cell = dart.as(bucket[i], LinkedHashMapCell); |
| if (this._equals(dart.as(cell._key, K), dart.as(key, K))) |
| return i; |
| } |
| @@ -867,14 +867,14 @@ var collection; |
| if (rest === null) |
| this._rest = rest = _newHashTable(); |
| let hash = this._computeHashCode(element); |
| - let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); |
| + let bucket = rest[hash]; |
| if (bucket === null) { |
| - _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#]', element)); |
| + _setTableEntry(rest, hash, [element]); |
| } else { |
| let index = this._findBucketIndex(bucket, element); |
| if (index >= 0) |
| return false; |
| - _foreign_helper.JS('void', '#.push(#)', bucket, element); |
| + bucket.push(element); |
| } |
| this._length++; |
| this._elements = null; |
| @@ -904,7 +904,7 @@ var collection; |
| return false; |
| this._length--; |
| this._elements = null; |
| - _foreign_helper.JS('void', '#.splice(#, 1)', bucket, index); |
| + bucket.splice(index, 1); |
| return true; |
| } |
| clear() { |
| @@ -920,34 +920,34 @@ var collection; |
| let index = 0; |
| let strings = this._strings; |
| if (strings !== null) { |
| - let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', strings); |
| - let entries = dart.as(_foreign_helper.JS('int', '#.length', names), core.int); |
| + let names = Object.getOwnPropertyNames(strings); |
| + let entries = names.length; |
| for (let i = 0; i < entries; i++) { |
| - let element = dart.as(_foreign_helper.JS('String', '#[#]', names, i), core.String); |
| - _foreign_helper.JS('void', '#[#] = #', result, index, element); |
| + let element = names[i]; |
| + result[index] = element; |
| index++; |
| } |
| } |
| let nums = this._nums; |
| if (nums !== null) { |
| - let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', nums); |
| - let entries = dart.as(_foreign_helper.JS('int', '#.length', names), core.int); |
| + let names = Object.getOwnPropertyNames(nums); |
| + let entries = names.length; |
| for (let i = 0; i < entries; i++) { |
| - let element = dart.as(_foreign_helper.JS('num', '+#[#]', names, i), core.num); |
| - _foreign_helper.JS('void', '#[#] = #', result, index, element); |
| + let element = +names[i]; |
| + result[index] = element; |
| index++; |
| } |
| } |
| let rest = this._rest; |
| if (rest !== null) { |
| - let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', rest); |
| - let entries = dart.as(_foreign_helper.JS('int', '#.length', names), core.int); |
| + let names = Object.getOwnPropertyNames(rest); |
| + let entries = names.length; |
| for (let i = 0; i < entries; i++) { |
| - let entry = _foreign_helper.JS('String', '#[#]', names, i); |
| - let bucket = _foreign_helper.JS('var', '#[#]', rest, entry); |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let entry = names[i]; |
| + let bucket = rest[entry]; |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - _foreign_helper.JS('void', '#[#] = #[#]', result, index, bucket, i); |
| + result[index] = bucket[i]; |
| index++; |
| } |
| } |
| @@ -977,38 +977,38 @@ var collection; |
| return dart.notNull(typeof element == string) && dart.notNull(!dart.equals(element, '__proto__')); |
| } |
| static _isNumericElement(element) { |
| - return core.bool['&&'](dart.is(element, core.num), _foreign_helper.JS('bool', '(# & 0x3ffffff) === #', element, element)); |
| + return dart.notNull(dart.is(element, core.num)) && dart.notNull((element & 0x3ffffff) === element); |
| } |
| _computeHashCode(element) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(element, 'hashCode')), core.int); |
| + return dart.dload(element, 'hashCode') & 0x3ffffff; |
| } |
| static _hasTableEntry(table, key) { |
| - let entry = _foreign_helper.JS('var', '#[#]', table, key); |
| + let entry = table[key]; |
| return entry !== null; |
| } |
| static _setTableEntry(table, key, value) { |
| dart.assert(value !== null); |
| - _foreign_helper.JS('void', '#[#] = #', table, key, value); |
| + table[key] = value; |
| } |
| static _deleteTableEntry(table, key) { |
| - _foreign_helper.JS('void', 'delete #[#]', table, key); |
| + delete table[key]; |
| } |
| _getBucket(table, element) { |
| let hash = this._computeHashCode(element); |
| - return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List); |
| + return dart.as(table[hash], core.List); |
| } |
| _findBucketIndex(bucket, element) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - if (dart.equals(_foreign_helper.JS('var', '#[#]', bucket, i), element)) |
| + if (dart.equals(bucket[i], element)) |
| return i; |
| } |
| return -1; |
| } |
| static _newHashTable() { |
| - let table = _foreign_helper.JS('var', 'Object.create(null)'); |
| + let table = Object.create(null); |
| let temporaryKey = '<non-identifier-key>'; |
| _setTableEntry(table, temporaryKey, table); |
| _deleteTableEntry(table, temporaryKey); |
| @@ -1024,14 +1024,14 @@ var collection; |
| return new _IdentityHashSet(); |
| } |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityHashCode(key)), core.int); |
| + return core.identityHashCode(key) & 0x3ffffff; |
| } |
| _findBucketIndex(bucket, element) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - if (core.identical(_foreign_helper.JS('var', '#[#]', bucket, i), element)) |
| + if (core.identical(bucket[i], element)) |
| return i; |
| } |
| return -1; |
| @@ -1054,15 +1054,15 @@ var collection; |
| _findBucketIndex(bucket, element) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - if (this._equality(dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), E), dart.as(element, E))) |
| + if (this._equality(dart.as(bucket[i], E), dart.as(element, E))) |
| return i; |
| } |
| return -1; |
| } |
| _computeHashCode(element) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hasher(dart.as(element, E))), core.int); |
| + return this._hasher(dart.as(element, E)) & 0x3ffffff; |
| } |
| add(object) { |
| return super._add(object); |
| @@ -1100,14 +1100,14 @@ var collection; |
| moveNext() { |
| let elements = this._elements; |
| let offset = this._offset; |
| - if (_foreign_helper.JS('bool', '# !== #', elements, dart.dload(this._set, '_elements'))) { |
| + if (elements !== dart.dload(this._set, '_elements')) { |
| throw new core.ConcurrentModificationError(this._set); |
| - } else if (offset['>='](_foreign_helper.JS('int', '#.length', elements))) { |
| + } else if (offset >= elements.length) { |
| this._current = dart.as(null, E); |
| return false; |
| } else { |
| - this._current = dart.as(_foreign_helper.JS('var', '#[#]', elements, offset), E); |
| - this._offset = dart.as(_foreign_helper.JS('int', '#', offset + 1), core.int); |
| + this._current = dart.as(elements[offset], E); |
| + this._offset = offset + 1; |
| return true; |
| } |
| } |
| @@ -1227,16 +1227,16 @@ var collection; |
| if (rest === null) |
| this._rest = rest = _newHashTable(); |
| let hash = this._computeHashCode(element); |
| - let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); |
| + let bucket = rest[hash]; |
| if (bucket === null) { |
| let cell = this._newLinkedCell(element); |
| - _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#]', cell)); |
| + _setTableEntry(rest, hash, [cell]); |
| } else { |
| let index = this._findBucketIndex(bucket, element); |
| if (index >= 0) |
| return false; |
| let cell = this._newLinkedCell(element); |
| - _foreign_helper.JS('void', '#.push(#)', bucket, cell); |
| + bucket.push(cell); |
| } |
| return true; |
| } |
| @@ -1257,7 +1257,7 @@ var collection; |
| let index = this._findBucketIndex(bucket, object); |
| if (index < 0) |
| return false; |
| - let cell = dart.as(_foreign_helper.JS('var', '#.splice(#, 1)[0]', bucket, index), LinkedHashSetCell); |
| + let cell = dart.as(bucket.splice(index, 1)[0], LinkedHashSetCell); |
| this._unlinkCell(cell); |
| return true; |
| } |
| @@ -1344,38 +1344,38 @@ var collection; |
| return dart.notNull(typeof element == string) && dart.notNull(!dart.equals(element, '__proto__')); |
| } |
| static _isNumericElement(element) { |
| - return core.bool['&&'](dart.is(element, core.num), _foreign_helper.JS('bool', '(# & 0x3ffffff) === #', element, element)); |
| + return dart.notNull(dart.is(element, core.num)) && dart.notNull((element & 0x3ffffff) === element); |
| } |
| _computeHashCode(element) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(element, 'hashCode')), core.int); |
| + return dart.dload(element, 'hashCode') & 0x3ffffff; |
| } |
| static _getTableEntry(table, key) { |
| - return _foreign_helper.JS('var', '#[#]', table, key); |
| + return table[key]; |
| } |
| static _setTableEntry(table, key, value) { |
| dart.assert(value !== null); |
| - _foreign_helper.JS('void', '#[#] = #', table, key, value); |
| + table[key] = value; |
| } |
| static _deleteTableEntry(table, key) { |
| - _foreign_helper.JS('void', 'delete #[#]', table, key); |
| + delete table[key]; |
| } |
| _getBucket(table, element) { |
| let hash = this._computeHashCode(element); |
| - return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List); |
| + return dart.as(table[hash], core.List); |
| } |
| _findBucketIndex(bucket, element) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), LinkedHashSetCell); |
| + let cell = dart.as(bucket[i], LinkedHashSetCell); |
| if (dart.equals(cell._element, element)) |
| return i; |
| } |
| return -1; |
| } |
| static _newHashTable() { |
| - let table = _foreign_helper.JS('var', 'Object.create(null)'); |
| + let table = Object.create(null); |
| let temporaryKey = '<non-identifier-key>'; |
| _setTableEntry(table, temporaryKey, table); |
| _deleteTableEntry(table, temporaryKey); |
| @@ -1391,14 +1391,14 @@ var collection; |
| return new _LinkedIdentityHashSet(); |
| } |
| _computeHashCode(key) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityHashCode(key)), core.int); |
| + return core.identityHashCode(key) & 0x3ffffff; |
| } |
| _findBucketIndex(bucket, element) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), LinkedHashSetCell); |
| + let cell = dart.as(bucket[i], LinkedHashSetCell); |
| if (core.identical(cell._element, element)) |
| return i; |
| } |
| @@ -1422,16 +1422,16 @@ var collection; |
| _findBucketIndex(bucket, element) { |
| if (bucket === null) |
| return -1; |
| - let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); |
| + let length = bucket.length; |
| for (let i = 0; i < length; i++) { |
| - let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), LinkedHashSetCell); |
| + let cell = dart.as(bucket[i], LinkedHashSetCell); |
| if (this._equality(dart.as(cell._element, E), dart.as(element, E))) |
| return i; |
| } |
| return -1; |
| } |
| _computeHashCode(element) { |
| - return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hasher(dart.as(element, E))), core.int); |
| + return this._hasher(dart.as(element, E)) & 0x3ffffff; |
| } |
| add(element) { |
| return super._add(element); |