Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 var collection; | 1 var collection; |
| 2 (function(collection) { | 2 (function(collection) { |
| 3 'use strict'; | 3 'use strict'; |
| 4 let _HashMap$ = dart.generic(function(K, V) { | 4 let _HashMap$ = dart.generic(function(K, V) { |
| 5 class _HashMap extends dart.Object { | 5 class _HashMap extends dart.Object { |
| 6 _HashMap() { | 6 _HashMap() { |
| 7 this._length = 0; | 7 this._length = 0; |
| 8 this._strings = null; | 8 this._strings = null; |
| 9 this._nums = null; | 9 this._nums = null; |
| 10 this._rest = null; | 10 this._rest = null; |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 61 } else { | 61 } else { |
| 62 return this._get(key); | 62 return this._get(key); |
| 63 } | 63 } |
| 64 } | 64 } |
| 65 _get(key) { | 65 _get(key) { |
| 66 let rest = this._rest; | 66 let rest = this._rest; |
| 67 if (rest === null) | 67 if (rest === null) |
| 68 return dart.as(null, V); | 68 return dart.as(null, V); |
| 69 let bucket = this._getBucket(rest, key); | 69 let bucket = this._getBucket(rest, key); |
| 70 let index = this._findBucketIndex(bucket, key); | 70 let index = this._findBucketIndex(bucket, key); |
| 71 return dart.as(index < 0 ? null : _foreign_helper.JS('var', '#[#]', buck et, index + 1), V); | 71 return dart.as(index < 0 ? null : bucket[index + 1], V); |
| 72 } | 72 } |
| 73 set(key, value) { | 73 set(key, value) { |
| 74 if (_isStringKey(key)) { | 74 if (_isStringKey(key)) { |
| 75 let strings = this._strings; | 75 let strings = this._strings; |
| 76 if (strings === null) | 76 if (strings === null) |
| 77 this._strings = strings = _newHashTable(); | 77 this._strings = strings = _newHashTable(); |
| 78 this._addHashTableEntry(strings, key, value); | 78 this._addHashTableEntry(strings, key, value); |
| 79 } else if (_isNumericKey(key)) { | 79 } else if (_isNumericKey(key)) { |
| 80 let nums = this._nums; | 80 let nums = this._nums; |
| 81 if (nums === null) | 81 if (nums === null) |
| 82 this._nums = nums = _newHashTable(); | 82 this._nums = nums = _newHashTable(); |
| 83 this._addHashTableEntry(nums, key, value); | 83 this._addHashTableEntry(nums, key, value); |
| 84 } else { | 84 } else { |
| 85 this._set(key, value); | 85 this._set(key, value); |
| 86 } | 86 } |
| 87 } | 87 } |
| 88 _set(key, value) { | 88 _set(key, value) { |
| 89 let rest = this._rest; | 89 let rest = this._rest; |
| 90 if (rest === null) | 90 if (rest === null) |
| 91 this._rest = rest = _newHashTable(); | 91 this._rest = rest = _newHashTable(); |
| 92 let hash = this._computeHashCode(key); | 92 let hash = this._computeHashCode(key); |
| 93 let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); | 93 let bucket = rest[hash]; |
| 94 if (bucket === null) { | 94 if (bucket === null) { |
| 95 _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#, #]', key, va lue)); | 95 _setTableEntry(rest, hash, [key, value]); |
| 96 this._length++; | 96 this._length++; |
| 97 this._keys = null; | 97 this._keys = null; |
| 98 } else { | 98 } else { |
| 99 let index = this._findBucketIndex(bucket, key); | 99 let index = this._findBucketIndex(bucket, key); |
| 100 if (index >= 0) { | 100 if (index >= 0) { |
| 101 _foreign_helper.JS('void', '#[#] = #', bucket, index + 1, value); | 101 bucket[index + 1] = value; |
| 102 } else { | 102 } else { |
| 103 _foreign_helper.JS('void', '#.push(#, #)', bucket, key, value); | 103 bucket.push(key, value); |
| 104 this._length++; | 104 this._length++; |
| 105 this._keys = null; | 105 this._keys = null; |
| 106 } | 106 } |
| 107 } | 107 } |
| 108 } | 108 } |
| 109 putIfAbsent(key, ifAbsent) { | 109 putIfAbsent(key, ifAbsent) { |
| 110 if (this.containsKey(key)) | 110 if (this.containsKey(key)) |
| 111 return this.get(key); | 111 return this.get(key); |
| 112 let value = ifAbsent(); | 112 let value = ifAbsent(); |
| 113 this.set(key, value); | 113 this.set(key, value); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 125 _remove(key) { | 125 _remove(key) { |
| 126 let rest = this._rest; | 126 let rest = this._rest; |
| 127 if (rest === null) | 127 if (rest === null) |
| 128 return dart.as(null, V); | 128 return dart.as(null, V); |
| 129 let bucket = this._getBucket(rest, key); | 129 let bucket = this._getBucket(rest, key); |
| 130 let index = this._findBucketIndex(bucket, key); | 130 let index = this._findBucketIndex(bucket, key); |
| 131 if (index < 0) | 131 if (index < 0) |
| 132 return dart.as(null, V); | 132 return dart.as(null, V); |
| 133 this._length--; | 133 this._length--; |
| 134 this._keys = null; | 134 this._keys = null; |
| 135 return dart.as(_foreign_helper.JS('var', '#.splice(#, 2)[1]', bucket, in dex), V); | 135 return dart.as(bucket.splice(index, 2)[1], V); |
| 136 } | 136 } |
| 137 clear() { | 137 clear() { |
| 138 if (this._length > 0) { | 138 if (this._length > 0) { |
| 139 this._strings = this._nums = this._rest = this._keys = null; | 139 this._strings = this._nums = this._rest = this._keys = null; |
| 140 this._length = 0; | 140 this._length = 0; |
| 141 } | 141 } |
| 142 } | 142 } |
| 143 forEach(action) { | 143 forEach(action) { |
| 144 let keys = this._computeKeys(); | 144 let keys = this._computeKeys(); |
| 145 for (let i = 0, length = keys.length; i < length; i++) { | 145 for (let i = 0, length = keys.length; i < length; i++) { |
| 146 let key = _foreign_helper.JS('var', '#[#]', keys, i); | 146 let key = keys[i]; |
| 147 action(dart.as(key, K), this.get(key)); | 147 action(dart.as(key, K), this.get(key)); |
| 148 if (_foreign_helper.JS('bool', '# !== #', keys, this._keys)) { | 148 if (keys !== this._keys) { |
| 149 throw new core.ConcurrentModificationError(this); | 149 throw new core.ConcurrentModificationError(this); |
| 150 } | 150 } |
| 151 } | 151 } |
| 152 } | 152 } |
| 153 _computeKeys() { | 153 _computeKeys() { |
| 154 if (this._keys !== null) | 154 if (this._keys !== null) |
| 155 return this._keys; | 155 return this._keys; |
| 156 let result = new core.List(this._length); | 156 let result = new core.List(this._length); |
| 157 let index = 0; | 157 let index = 0; |
| 158 let strings = this._strings; | 158 let strings = this._strings; |
| 159 if (strings !== null) { | 159 if (strings !== null) { |
| 160 let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', strings); | 160 let names = Object.getOwnPropertyNames(strings); |
| 161 let entries = dart.as(_foreign_helper.JS('int', '#.length', names), co re.int); | 161 let entries = names.length; |
| 162 for (let i = 0; i < entries; i++) { | 162 for (let i = 0; i < entries; i++) { |
| 163 let key = dart.as(_foreign_helper.JS('String', '#[#]', names, i), co re.String); | 163 let key = names[i]; |
| 164 _foreign_helper.JS('void', '#[#] = #', result, index, key); | 164 result[index] = key; |
| 165 index++; | 165 index++; |
| 166 } | 166 } |
| 167 } | 167 } |
| 168 let nums = this._nums; | 168 let nums = this._nums; |
| 169 if (nums !== null) { | 169 if (nums !== null) { |
| 170 let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', nums); | 170 let names = Object.getOwnPropertyNames(nums); |
| 171 let entries = dart.as(_foreign_helper.JS('int', '#.length', names), co re.int); | 171 let entries = names.length; |
| 172 for (let i = 0; i < entries; i++) { | 172 for (let i = 0; i < entries; i++) { |
| 173 let key = dart.as(_foreign_helper.JS('num', '+#[#]', names, i), core .num); | 173 let key = +names[i]; |
| 174 _foreign_helper.JS('void', '#[#] = #', result, index, key); | 174 result[index] = key; |
| 175 index++; | 175 index++; |
| 176 } | 176 } |
| 177 } | 177 } |
| 178 let rest = this._rest; | 178 let rest = this._rest; |
| 179 if (rest !== null) { | 179 if (rest !== null) { |
| 180 let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', rest); | 180 let names = Object.getOwnPropertyNames(rest); |
| 181 let entries = dart.as(_foreign_helper.JS('int', '#.length', names), co re.int); | 181 let entries = names.length; |
| 182 for (let i = 0; i < entries; i++) { | 182 for (let i = 0; i < entries; i++) { |
| 183 let key = _foreign_helper.JS('String', '#[#]', names, i); | 183 let key = names[i]; |
| 184 let bucket = _foreign_helper.JS('var', '#[#]', rest, key); | 184 let bucket = rest[key]; |
| 185 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); | 185 let length = bucket.length; |
| 186 for (let i = 0; i < length; i = 2) { | 186 for (let i = 0; i < length; i = 2) { |
| 187 let key = _foreign_helper.JS('var', '#[#]', bucket, i); | 187 let key = bucket[i]; |
| 188 _foreign_helper.JS('void', '#[#] = #', result, index, key); | 188 result[index] = key; |
| 189 index++; | 189 index++; |
| 190 } | 190 } |
| 191 } | 191 } |
| 192 } | 192 } |
| 193 dart.assert(index === this._length); | 193 dart.assert(index === this._length); |
| 194 return this._keys = result; | 194 return this._keys = result; |
| 195 } | 195 } |
| 196 _addHashTableEntry(table, key, value) { | 196 _addHashTableEntry(table, key, value) { |
| 197 if (!dart.notNull(_hasTableEntry(table, key))) { | 197 if (!dart.notNull(_hasTableEntry(table, key))) { |
| 198 this._length++; | 198 this._length++; |
| 199 this._keys = null; | 199 this._keys = null; |
| 200 } | 200 } |
| 201 _setTableEntry(table, key, value); | 201 _setTableEntry(table, key, value); |
| 202 } | 202 } |
| 203 _removeHashTableEntry(table, key) { | 203 _removeHashTableEntry(table, key) { |
| 204 if (dart.notNull(table !== null) && dart.notNull(_hasTableEntry(table, k ey))) { | 204 if (dart.notNull(table !== null) && dart.notNull(_hasTableEntry(table, k ey))) { |
| 205 let value = dart.as(_getTableEntry(table, key), V); | 205 let value = dart.as(_getTableEntry(table, key), V); |
| 206 _deleteTableEntry(table, key); | 206 _deleteTableEntry(table, key); |
| 207 this._length--; | 207 this._length--; |
| 208 this._keys = null; | 208 this._keys = null; |
| 209 return value; | 209 return value; |
| 210 } else { | 210 } else { |
| 211 return dart.as(null, V); | 211 return dart.as(null, V); |
| 212 } | 212 } |
| 213 } | 213 } |
| 214 static _isStringKey(key) { | 214 static _isStringKey(key) { |
| 215 return dart.notNull(typeof key == string) && dart.notNull(!dart.equals(k ey, '__proto__')); | 215 return dart.notNull(typeof key == string) && dart.notNull(!dart.equals(k ey, '__proto__')); |
| 216 } | 216 } |
| 217 static _isNumericKey(key) { | 217 static _isNumericKey(key) { |
| 218 return core.bool['&&'](dart.is(key, core.num), _foreign_helper.JS('bool' , '(# & 0x3ffffff) === #', key, key)); | 218 return dart.notNull(dart.is(key, core.num)) && dart.notNull((key & 0x3ff ffff) === 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
| |
| 219 } | 219 } |
| 220 _computeHashCode(key) { | 220 _computeHashCode(key) { |
| 221 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(key , 'hashCode')), core.int); | 221 return dart.dload(key, 'hashCode') & 0x3ffffff; |
| 222 } | 222 } |
| 223 static _hasTableEntry(table, key) { | 223 static _hasTableEntry(table, key) { |
| 224 let entry = _foreign_helper.JS('var', '#[#]', table, key); | 224 let entry = table[key]; |
| 225 return entry !== null; | 225 return entry !== null; |
| 226 } | 226 } |
| 227 static _getTableEntry(table, key) { | 227 static _getTableEntry(table, key) { |
| 228 let entry = _foreign_helper.JS('var', '#[#]', table, key); | 228 let entry = table[key]; |
| 229 return _foreign_helper.JS('bool', '# === #', entry, table) ? null : entr y; | 229 return entry === table ? null : entry; |
| 230 } | 230 } |
| 231 static _setTableEntry(table, key, value) { | 231 static _setTableEntry(table, key, value) { |
| 232 if (value === null) { | 232 if (value === null) { |
| 233 _foreign_helper.JS('void', '#[#] = #', table, key, table); | 233 table[key] = table; |
| 234 } else { | 234 } else { |
| 235 _foreign_helper.JS('void', '#[#] = #', table, key, value); | 235 table[key] = value; |
| 236 } | 236 } |
| 237 } | 237 } |
| 238 static _deleteTableEntry(table, key) { | 238 static _deleteTableEntry(table, key) { |
| 239 _foreign_helper.JS('void', 'delete #[#]', table, key); | 239 delete table[key]; |
| 240 } | 240 } |
| 241 _getBucket(table, key) { | 241 _getBucket(table, key) { |
| 242 let hash = this._computeHashCode(key); | 242 let hash = this._computeHashCode(key); |
| 243 return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List ); | 243 return dart.as(table[hash], core.List); |
| 244 } | 244 } |
| 245 _findBucketIndex(bucket, key) { | 245 _findBucketIndex(bucket, key) { |
| 246 if (bucket === null) | 246 if (bucket === null) |
| 247 return -1; | 247 return -1; |
| 248 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 248 let length = bucket.length; |
| 249 for (let i = 0; i < length; i = 2) { | 249 for (let i = 0; i < length; i = 2) { |
| 250 if (dart.equals(_foreign_helper.JS('var', '#[#]', bucket, i), key)) | 250 if (dart.equals(bucket[i], key)) |
| 251 return i; | 251 return i; |
| 252 } | 252 } |
| 253 return -1; | 253 return -1; |
| 254 } | 254 } |
| 255 static _newHashTable() { | 255 static _newHashTable() { |
| 256 let table = _foreign_helper.JS('var', 'Object.create(null)'); | 256 let table = Object.create(null); |
| 257 let temporaryKey = '<non-identifier-key>'; | 257 let temporaryKey = '<non-identifier-key>'; |
| 258 _setTableEntry(table, temporaryKey, table); | 258 _setTableEntry(table, temporaryKey, table); |
| 259 _deleteTableEntry(table, temporaryKey); | 259 _deleteTableEntry(table, temporaryKey); |
| 260 return table; | 260 return table; |
| 261 } | 261 } |
| 262 } | 262 } |
| 263 return _HashMap; | 263 return _HashMap; |
| 264 }); | 264 }); |
| 265 let _HashMap = _HashMap$(dynamic, dynamic); | 265 let _HashMap = _HashMap$(dynamic, dynamic); |
| 266 let _IdentityHashMap$ = dart.generic(function(K, V) { | 266 let _IdentityHashMap$ = dart.generic(function(K, V) { |
| 267 class _IdentityHashMap extends _HashMap$(K, V) { | 267 class _IdentityHashMap extends _HashMap$(K, V) { |
| 268 _computeHashCode(key) { | 268 _computeHashCode(key) { |
| 269 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityH ashCode(key)), core.int); | 269 return core.identityHashCode(key) & 0x3ffffff; |
| 270 } | 270 } |
| 271 _findBucketIndex(bucket, key) { | 271 _findBucketIndex(bucket, key) { |
| 272 if (bucket === null) | 272 if (bucket === null) |
| 273 return -1; | 273 return -1; |
| 274 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 274 let length = bucket.length; |
| 275 for (let i = 0; i < length; i = 2) { | 275 for (let i = 0; i < length; i = 2) { |
| 276 if (core.identical(_foreign_helper.JS('var', '#[#]', bucket, i), key)) | 276 if (core.identical(bucket[i], key)) |
| 277 return i; | 277 return i; |
| 278 } | 278 } |
| 279 return -1; | 279 return -1; |
| 280 } | 280 } |
| 281 } | 281 } |
| 282 return _IdentityHashMap; | 282 return _IdentityHashMap; |
| 283 }); | 283 }); |
| 284 let _IdentityHashMap = _IdentityHashMap$(dynamic, dynamic); | 284 let _IdentityHashMap = _IdentityHashMap$(dynamic, dynamic); |
| 285 let _CustomHashMap$ = dart.generic(function(K, V) { | 285 let _CustomHashMap$ = dart.generic(function(K, V) { |
| 286 class _CustomHashMap extends _HashMap$(K, V) { | 286 class _CustomHashMap extends _HashMap$(K, V) { |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 302 if (!dart.notNull(this._validKey(key))) | 302 if (!dart.notNull(this._validKey(key))) |
| 303 return false; | 303 return false; |
| 304 return super._containsKey(key); | 304 return super._containsKey(key); |
| 305 } | 305 } |
| 306 remove(key) { | 306 remove(key) { |
| 307 if (!dart.notNull(this._validKey(key))) | 307 if (!dart.notNull(this._validKey(key))) |
| 308 return dart.as(null, V); | 308 return dart.as(null, V); |
| 309 return super._remove(key); | 309 return super._remove(key); |
| 310 } | 310 } |
| 311 _computeHashCode(key) { | 311 _computeHashCode(key) { |
| 312 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hashCode (dart.as(key, K))), core.int); | 312 return this._hashCode(dart.as(key, K)) & 0x3ffffff; |
| 313 } | 313 } |
| 314 _findBucketIndex(bucket, key) { | 314 _findBucketIndex(bucket, key) { |
| 315 if (bucket === null) | 315 if (bucket === null) |
| 316 return -1; | 316 return -1; |
| 317 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 317 let length = bucket.length; |
| 318 for (let i = 0; i < length; i = 2) { | 318 for (let i = 0; i < length; i = 2) { |
| 319 if (this._equals(dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), K), dart.as(key, K))) | 319 if (this._equals(dart.as(bucket[i], K), dart.as(key, K))) |
| 320 return i; | 320 return i; |
| 321 } | 321 } |
| 322 return -1; | 322 return -1; |
| 323 } | 323 } |
| 324 toString() { | 324 toString() { |
| 325 return Maps.mapToString(this); | 325 return Maps.mapToString(this); |
| 326 } | 326 } |
| 327 } | 327 } |
| 328 return _CustomHashMap; | 328 return _CustomHashMap; |
| 329 }); | 329 }); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 341 return dart.equals(dart.dload(this._map, '_length'), 0); | 341 return dart.equals(dart.dload(this._map, '_length'), 0); |
| 342 } | 342 } |
| 343 get iterator() { | 343 get iterator() { |
| 344 return new HashMapKeyIterator(this._map, dart.as(dart.dinvoke(this._map, '_computeKeys'), core.List)); | 344 return new HashMapKeyIterator(this._map, dart.as(dart.dinvoke(this._map, '_computeKeys'), core.List)); |
| 345 } | 345 } |
| 346 contains(element) { | 346 contains(element) { |
| 347 return dart.as(dart.dinvoke(this._map, 'containsKey', element), core.boo l); | 347 return dart.as(dart.dinvoke(this._map, 'containsKey', element), core.boo l); |
| 348 } | 348 } |
| 349 forEach(f) { | 349 forEach(f) { |
| 350 let keys = dart.as(dart.dinvoke(this._map, '_computeKeys'), core.List); | 350 let keys = dart.as(dart.dinvoke(this._map, '_computeKeys'), core.List); |
| 351 for (let i = 0, length = dart.as(_foreign_helper.JS('int', '#.length', k eys), core.int); i < length; i++) { | 351 for (let i = 0, length = keys.length; i < length; i++) { |
| 352 f(dart.as(_foreign_helper.JS('var', '#[#]', keys, i), E)); | 352 f(dart.as(keys[i], E)); |
| 353 if (_foreign_helper.JS('bool', '# !== #', keys, dart.dload(this._map, '_keys'))) { | 353 if (keys !== dart.dload(this._map, '_keys')) { |
| 354 throw new core.ConcurrentModificationError(this._map); | 354 throw new core.ConcurrentModificationError(this._map); |
| 355 } | 355 } |
| 356 } | 356 } |
| 357 } | 357 } |
| 358 } | 358 } |
| 359 return HashMapKeyIterable; | 359 return HashMapKeyIterable; |
| 360 }); | 360 }); |
| 361 let HashMapKeyIterable = HashMapKeyIterable$(dynamic); | 361 let HashMapKeyIterable = HashMapKeyIterable$(dynamic); |
| 362 let HashMapKeyIterator$ = dart.generic(function(E) { | 362 let HashMapKeyIterator$ = dart.generic(function(E) { |
| 363 class HashMapKeyIterator extends dart.Object { | 363 class HashMapKeyIterator extends dart.Object { |
| 364 HashMapKeyIterator(_map, _keys) { | 364 HashMapKeyIterator(_map, _keys) { |
| 365 this._map = _map; | 365 this._map = _map; |
| 366 this._keys = _keys; | 366 this._keys = _keys; |
| 367 this._offset = 0; | 367 this._offset = 0; |
| 368 this._current = dart.as(null, E); | 368 this._current = dart.as(null, E); |
| 369 } | 369 } |
| 370 get current() { | 370 get current() { |
| 371 return this._current; | 371 return this._current; |
| 372 } | 372 } |
| 373 moveNext() { | 373 moveNext() { |
| 374 let keys = this._keys; | 374 let keys = this._keys; |
| 375 let offset = this._offset; | 375 let offset = this._offset; |
| 376 if (_foreign_helper.JS('bool', '# !== #', keys, dart.dload(this._map, '_ keys'))) { | 376 if (keys !== dart.dload(this._map, '_keys')) { |
| 377 throw new core.ConcurrentModificationError(this._map); | 377 throw new core.ConcurrentModificationError(this._map); |
| 378 } else if (offset['>='](_foreign_helper.JS('int', '#.length', keys))) { | 378 } else if (offset >= keys.length) { |
| 379 this._current = dart.as(null, E); | 379 this._current = dart.as(null, E); |
| 380 return false; | 380 return false; |
| 381 } else { | 381 } else { |
| 382 this._current = dart.as(_foreign_helper.JS('var', '#[#]', keys, offset ), E); | 382 this._current = dart.as(keys[offset], E); |
| 383 this._offset = dart.as(_foreign_helper.JS('int', '#', offset + 1), cor e.int); | 383 this._offset = offset + 1; |
| 384 return true; | 384 return true; |
| 385 } | 385 } |
| 386 } | 386 } |
| 387 } | 387 } |
| 388 return HashMapKeyIterator; | 388 return HashMapKeyIterator; |
| 389 }); | 389 }); |
| 390 let HashMapKeyIterator = HashMapKeyIterator$(dynamic); | 390 let HashMapKeyIterator = HashMapKeyIterator$(dynamic); |
| 391 let _LinkedHashMap$ = dart.generic(function(K, V) { | 391 let _LinkedHashMap$ = dart.generic(function(K, V) { |
| 392 class _LinkedHashMap extends dart.Object { | 392 class _LinkedHashMap extends dart.Object { |
| 393 _LinkedHashMap() { | 393 _LinkedHashMap() { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 464 } | 464 } |
| 465 } | 465 } |
| 466 _get(key) { | 466 _get(key) { |
| 467 let rest = this._rest; | 467 let rest = this._rest; |
| 468 if (rest === null) | 468 if (rest === null) |
| 469 return dart.as(null, V); | 469 return dart.as(null, V); |
| 470 let bucket = this._getBucket(rest, key); | 470 let bucket = this._getBucket(rest, key); |
| 471 let index = this._findBucketIndex(bucket, key); | 471 let index = this._findBucketIndex(bucket, key); |
| 472 if (index < 0) | 472 if (index < 0) |
| 473 return dart.as(null, V); | 473 return dart.as(null, V); |
| 474 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, index), Lin kedHashMapCell); | 474 let cell = dart.as(bucket[index], LinkedHashMapCell); |
| 475 return dart.as(cell._value, V); | 475 return dart.as(cell._value, V); |
| 476 } | 476 } |
| 477 set(key, value) { | 477 set(key, value) { |
| 478 if (_isStringKey(key)) { | 478 if (_isStringKey(key)) { |
| 479 let strings = this._strings; | 479 let strings = this._strings; |
| 480 if (strings === null) | 480 if (strings === null) |
| 481 this._strings = strings = _newHashTable(); | 481 this._strings = strings = _newHashTable(); |
| 482 this._addHashTableEntry(strings, key, value); | 482 this._addHashTableEntry(strings, key, value); |
| 483 } else if (_isNumericKey(key)) { | 483 } else if (_isNumericKey(key)) { |
| 484 let nums = this._nums; | 484 let nums = this._nums; |
| 485 if (nums === null) | 485 if (nums === null) |
| 486 this._nums = nums = _newHashTable(); | 486 this._nums = nums = _newHashTable(); |
| 487 this._addHashTableEntry(nums, key, value); | 487 this._addHashTableEntry(nums, key, value); |
| 488 } else { | 488 } else { |
| 489 this._set(key, value); | 489 this._set(key, value); |
| 490 } | 490 } |
| 491 } | 491 } |
| 492 _set(key, value) { | 492 _set(key, value) { |
| 493 let rest = this._rest; | 493 let rest = this._rest; |
| 494 if (rest === null) | 494 if (rest === null) |
| 495 this._rest = rest = _newHashTable(); | 495 this._rest = rest = _newHashTable(); |
| 496 let hash = this._computeHashCode(key); | 496 let hash = this._computeHashCode(key); |
| 497 let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); | 497 let bucket = rest[hash]; |
| 498 if (bucket === null) { | 498 if (bucket === null) { |
| 499 let cell = this._newLinkedCell(key, value); | 499 let cell = this._newLinkedCell(key, value); |
| 500 _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#]', cell)); | 500 _setTableEntry(rest, hash, [cell]); |
| 501 } else { | 501 } else { |
| 502 let index = this._findBucketIndex(bucket, key); | 502 let index = this._findBucketIndex(bucket, key); |
| 503 if (index >= 0) { | 503 if (index >= 0) { |
| 504 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, index), LinkedHashMapCell); | 504 let cell = dart.as(bucket[index], LinkedHashMapCell); |
| 505 cell._value = value; | 505 cell._value = value; |
| 506 } else { | 506 } else { |
| 507 let cell = this._newLinkedCell(key, value); | 507 let cell = this._newLinkedCell(key, value); |
| 508 _foreign_helper.JS('void', '#.push(#)', bucket, cell); | 508 bucket.push(cell); |
| 509 } | 509 } |
| 510 } | 510 } |
| 511 } | 511 } |
| 512 putIfAbsent(key, ifAbsent) { | 512 putIfAbsent(key, ifAbsent) { |
| 513 if (this.containsKey(key)) | 513 if (this.containsKey(key)) |
| 514 return this.get(key); | 514 return this.get(key); |
| 515 let value = ifAbsent(); | 515 let value = ifAbsent(); |
| 516 this.set(key, value); | 516 this.set(key, value); |
| 517 return value; | 517 return value; |
| 518 } | 518 } |
| 519 remove(key) { | 519 remove(key) { |
| 520 if (_isStringKey(key)) { | 520 if (_isStringKey(key)) { |
| 521 return this._removeHashTableEntry(this._strings, key); | 521 return this._removeHashTableEntry(this._strings, key); |
| 522 } else if (_isNumericKey(key)) { | 522 } else if (_isNumericKey(key)) { |
| 523 return this._removeHashTableEntry(this._nums, key); | 523 return this._removeHashTableEntry(this._nums, key); |
| 524 } else { | 524 } else { |
| 525 return this._remove(key); | 525 return this._remove(key); |
| 526 } | 526 } |
| 527 } | 527 } |
| 528 _remove(key) { | 528 _remove(key) { |
| 529 let rest = this._rest; | 529 let rest = this._rest; |
| 530 if (rest === null) | 530 if (rest === null) |
| 531 return dart.as(null, V); | 531 return dart.as(null, V); |
| 532 let bucket = this._getBucket(rest, key); | 532 let bucket = this._getBucket(rest, key); |
| 533 let index = this._findBucketIndex(bucket, key); | 533 let index = this._findBucketIndex(bucket, key); |
| 534 if (index < 0) | 534 if (index < 0) |
| 535 return dart.as(null, V); | 535 return dart.as(null, V); |
| 536 let cell = dart.as(_foreign_helper.JS('var', '#.splice(#, 1)[0]', bucket , index), LinkedHashMapCell); | 536 let cell = dart.as(bucket.splice(index, 1)[0], LinkedHashMapCell); |
| 537 this._unlinkCell(cell); | 537 this._unlinkCell(cell); |
| 538 return dart.as(cell._value, V); | 538 return dart.as(cell._value, V); |
| 539 } | 539 } |
| 540 clear() { | 540 clear() { |
| 541 if (this._length > 0) { | 541 if (this._length > 0) { |
| 542 this._strings = this._nums = this._rest = this._first = this._last = n ull; | 542 this._strings = this._nums = this._rest = this._first = this._last = n ull; |
| 543 this._length = 0; | 543 this._length = 0; |
| 544 this._modified(); | 544 this._modified(); |
| 545 } | 545 } |
| 546 } | 546 } |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 604 } else { | 604 } else { |
| 605 next._previous = previous; | 605 next._previous = previous; |
| 606 } | 606 } |
| 607 this._length--; | 607 this._length--; |
| 608 this._modified(); | 608 this._modified(); |
| 609 } | 609 } |
| 610 static _isStringKey(key) { | 610 static _isStringKey(key) { |
| 611 return dart.notNull(typeof key == string) && dart.notNull(!dart.equals(k ey, '__proto__')); | 611 return dart.notNull(typeof key == string) && dart.notNull(!dart.equals(k ey, '__proto__')); |
| 612 } | 612 } |
| 613 static _isNumericKey(key) { | 613 static _isNumericKey(key) { |
| 614 return core.bool['&&'](dart.is(key, core.num), _foreign_helper.JS('bool' , '(# & 0x3ffffff) === #', key, key)); | 614 return dart.notNull(dart.is(key, core.num)) && dart.notNull((key & 0x3ff ffff) === key); |
| 615 } | 615 } |
| 616 _computeHashCode(key) { | 616 _computeHashCode(key) { |
| 617 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(key , 'hashCode')), core.int); | 617 return dart.dload(key, 'hashCode') & 0x3ffffff; |
| 618 } | 618 } |
| 619 static _getTableEntry(table, key) { | 619 static _getTableEntry(table, key) { |
| 620 return _foreign_helper.JS('var', '#[#]', table, key); | 620 return table[key]; |
| 621 } | 621 } |
| 622 static _setTableEntry(table, key, value) { | 622 static _setTableEntry(table, key, value) { |
| 623 dart.assert(value !== null); | 623 dart.assert(value !== null); |
| 624 _foreign_helper.JS('void', '#[#] = #', table, key, value); | 624 table[key] = value; |
| 625 } | 625 } |
| 626 static _deleteTableEntry(table, key) { | 626 static _deleteTableEntry(table, key) { |
| 627 _foreign_helper.JS('void', 'delete #[#]', table, key); | 627 delete table[key]; |
| 628 } | 628 } |
| 629 _getBucket(table, key) { | 629 _getBucket(table, key) { |
| 630 let hash = this._computeHashCode(key); | 630 let hash = this._computeHashCode(key); |
| 631 return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List ); | 631 return dart.as(table[hash], core.List); |
| 632 } | 632 } |
| 633 _findBucketIndex(bucket, key) { | 633 _findBucketIndex(bucket, key) { |
| 634 if (bucket === null) | 634 if (bucket === null) |
| 635 return -1; | 635 return -1; |
| 636 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 636 let length = bucket.length; |
| 637 for (let i = 0; i < length; i++) { | 637 for (let i = 0; i < length; i++) { |
| 638 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), Linke dHashMapCell); | 638 let cell = dart.as(bucket[i], LinkedHashMapCell); |
| 639 if (dart.equals(cell._key, key)) | 639 if (dart.equals(cell._key, key)) |
| 640 return i; | 640 return i; |
| 641 } | 641 } |
| 642 return -1; | 642 return -1; |
| 643 } | 643 } |
| 644 static _newHashTable() { | 644 static _newHashTable() { |
| 645 let table = _foreign_helper.JS('var', 'Object.create(null)'); | 645 let table = Object.create(null); |
| 646 let temporaryKey = '<non-identifier-key>'; | 646 let temporaryKey = '<non-identifier-key>'; |
| 647 _setTableEntry(table, temporaryKey, table); | 647 _setTableEntry(table, temporaryKey, table); |
| 648 _deleteTableEntry(table, temporaryKey); | 648 _deleteTableEntry(table, temporaryKey); |
| 649 return table; | 649 return table; |
| 650 } | 650 } |
| 651 toString() { | 651 toString() { |
| 652 return Maps.mapToString(this); | 652 return Maps.mapToString(this); |
| 653 } | 653 } |
| 654 } | 654 } |
| 655 return _LinkedHashMap; | 655 return _LinkedHashMap; |
| 656 }); | 656 }); |
| 657 let _LinkedHashMap = _LinkedHashMap$(dynamic, dynamic); | 657 let _LinkedHashMap = _LinkedHashMap$(dynamic, dynamic); |
| 658 let _LinkedIdentityHashMap$ = dart.generic(function(K, V) { | 658 let _LinkedIdentityHashMap$ = dart.generic(function(K, V) { |
| 659 class _LinkedIdentityHashMap extends _LinkedHashMap$(K, V) { | 659 class _LinkedIdentityHashMap extends _LinkedHashMap$(K, V) { |
| 660 _computeHashCode(key) { | 660 _computeHashCode(key) { |
| 661 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityH ashCode(key)), core.int); | 661 return core.identityHashCode(key) & 0x3ffffff; |
| 662 } | 662 } |
| 663 _findBucketIndex(bucket, key) { | 663 _findBucketIndex(bucket, key) { |
| 664 if (bucket === null) | 664 if (bucket === null) |
| 665 return -1; | 665 return -1; |
| 666 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 666 let length = bucket.length; |
| 667 for (let i = 0; i < length; i++) { | 667 for (let i = 0; i < length; i++) { |
| 668 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), Linke dHashMapCell); | 668 let cell = dart.as(bucket[i], LinkedHashMapCell); |
| 669 if (core.identical(cell._key, key)) | 669 if (core.identical(cell._key, key)) |
| 670 return i; | 670 return i; |
| 671 } | 671 } |
| 672 return -1; | 672 return -1; |
| 673 } | 673 } |
| 674 } | 674 } |
| 675 return _LinkedIdentityHashMap; | 675 return _LinkedIdentityHashMap; |
| 676 }); | 676 }); |
| 677 let _LinkedIdentityHashMap = _LinkedIdentityHashMap$(dynamic, dynamic); | 677 let _LinkedIdentityHashMap = _LinkedIdentityHashMap$(dynamic, dynamic); |
| 678 let _LinkedCustomHashMap$ = dart.generic(function(K, V) { | 678 let _LinkedCustomHashMap$ = dart.generic(function(K, V) { |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 695 if (!dart.notNull(this._validKey(key))) | 695 if (!dart.notNull(this._validKey(key))) |
| 696 return false; | 696 return false; |
| 697 return super._containsKey(key); | 697 return super._containsKey(key); |
| 698 } | 698 } |
| 699 remove(key) { | 699 remove(key) { |
| 700 if (!dart.notNull(this._validKey(key))) | 700 if (!dart.notNull(this._validKey(key))) |
| 701 return dart.as(null, V); | 701 return dart.as(null, V); |
| 702 return super._remove(key); | 702 return super._remove(key); |
| 703 } | 703 } |
| 704 _computeHashCode(key) { | 704 _computeHashCode(key) { |
| 705 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hashCode (dart.as(key, K))), core.int); | 705 return this._hashCode(dart.as(key, K)) & 0x3ffffff; |
| 706 } | 706 } |
| 707 _findBucketIndex(bucket, key) { | 707 _findBucketIndex(bucket, key) { |
| 708 if (bucket === null) | 708 if (bucket === null) |
| 709 return -1; | 709 return -1; |
| 710 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 710 let length = bucket.length; |
| 711 for (let i = 0; i < length; i++) { | 711 for (let i = 0; i < length; i++) { |
| 712 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), Linke dHashMapCell); | 712 let cell = dart.as(bucket[i], LinkedHashMapCell); |
| 713 if (this._equals(dart.as(cell._key, K), dart.as(key, K))) | 713 if (this._equals(dart.as(cell._key, K), dart.as(key, K))) |
| 714 return i; | 714 return i; |
| 715 } | 715 } |
| 716 return -1; | 716 return -1; |
| 717 } | 717 } |
| 718 } | 718 } |
| 719 return _LinkedCustomHashMap; | 719 return _LinkedCustomHashMap; |
| 720 }); | 720 }); |
| 721 let _LinkedCustomHashMap = _LinkedCustomHashMap$(dynamic, dynamic); | 721 let _LinkedCustomHashMap = _LinkedCustomHashMap$(dynamic, dynamic); |
| 722 class LinkedHashMapCell extends dart.Object { | 722 class LinkedHashMapCell extends dart.Object { |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 860 return this._addHashTableEntry(nums, element); | 860 return this._addHashTableEntry(nums, element); |
| 861 } else { | 861 } else { |
| 862 return this._add(element); | 862 return this._add(element); |
| 863 } | 863 } |
| 864 } | 864 } |
| 865 _add(element) { | 865 _add(element) { |
| 866 let rest = this._rest; | 866 let rest = this._rest; |
| 867 if (rest === null) | 867 if (rest === null) |
| 868 this._rest = rest = _newHashTable(); | 868 this._rest = rest = _newHashTable(); |
| 869 let hash = this._computeHashCode(element); | 869 let hash = this._computeHashCode(element); |
| 870 let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); | 870 let bucket = rest[hash]; |
| 871 if (bucket === null) { | 871 if (bucket === null) { |
| 872 _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#]', element)); | 872 _setTableEntry(rest, hash, [element]); |
| 873 } else { | 873 } else { |
| 874 let index = this._findBucketIndex(bucket, element); | 874 let index = this._findBucketIndex(bucket, element); |
| 875 if (index >= 0) | 875 if (index >= 0) |
| 876 return false; | 876 return false; |
| 877 _foreign_helper.JS('void', '#.push(#)', bucket, element); | 877 bucket.push(element); |
| 878 } | 878 } |
| 879 this._length++; | 879 this._length++; |
| 880 this._elements = null; | 880 this._elements = null; |
| 881 return true; | 881 return true; |
| 882 } | 882 } |
| 883 addAll(objects) { | 883 addAll(objects) { |
| 884 for (let each of objects) { | 884 for (let each of objects) { |
| 885 this.add(each); | 885 this.add(each); |
| 886 } | 886 } |
| 887 } | 887 } |
| 888 remove(object) { | 888 remove(object) { |
| 889 if (_isStringElement(object)) { | 889 if (_isStringElement(object)) { |
| 890 return this._removeHashTableEntry(this._strings, object); | 890 return this._removeHashTableEntry(this._strings, object); |
| 891 } else if (_isNumericElement(object)) { | 891 } else if (_isNumericElement(object)) { |
| 892 return this._removeHashTableEntry(this._nums, object); | 892 return this._removeHashTableEntry(this._nums, object); |
| 893 } else { | 893 } else { |
| 894 return this._remove(object); | 894 return this._remove(object); |
| 895 } | 895 } |
| 896 } | 896 } |
| 897 _remove(object) { | 897 _remove(object) { |
| 898 let rest = this._rest; | 898 let rest = this._rest; |
| 899 if (rest === null) | 899 if (rest === null) |
| 900 return false; | 900 return false; |
| 901 let bucket = this._getBucket(rest, object); | 901 let bucket = this._getBucket(rest, object); |
| 902 let index = this._findBucketIndex(bucket, object); | 902 let index = this._findBucketIndex(bucket, object); |
| 903 if (index < 0) | 903 if (index < 0) |
| 904 return false; | 904 return false; |
| 905 this._length--; | 905 this._length--; |
| 906 this._elements = null; | 906 this._elements = null; |
| 907 _foreign_helper.JS('void', '#.splice(#, 1)', bucket, index); | 907 bucket.splice(index, 1); |
| 908 return true; | 908 return true; |
| 909 } | 909 } |
| 910 clear() { | 910 clear() { |
| 911 if (this._length > 0) { | 911 if (this._length > 0) { |
| 912 this._strings = this._nums = this._rest = this._elements = null; | 912 this._strings = this._nums = this._rest = this._elements = null; |
| 913 this._length = 0; | 913 this._length = 0; |
| 914 } | 914 } |
| 915 } | 915 } |
| 916 _computeElements() { | 916 _computeElements() { |
| 917 if (this._elements !== null) | 917 if (this._elements !== null) |
| 918 return this._elements; | 918 return this._elements; |
| 919 let result = new core.List(this._length); | 919 let result = new core.List(this._length); |
| 920 let index = 0; | 920 let index = 0; |
| 921 let strings = this._strings; | 921 let strings = this._strings; |
| 922 if (strings !== null) { | 922 if (strings !== null) { |
| 923 let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', strings); | 923 let names = Object.getOwnPropertyNames(strings); |
| 924 let entries = dart.as(_foreign_helper.JS('int', '#.length', names), co re.int); | 924 let entries = names.length; |
| 925 for (let i = 0; i < entries; i++) { | 925 for (let i = 0; i < entries; i++) { |
| 926 let element = dart.as(_foreign_helper.JS('String', '#[#]', names, i) , core.String); | 926 let element = names[i]; |
| 927 _foreign_helper.JS('void', '#[#] = #', result, index, element); | 927 result[index] = element; |
| 928 index++; | 928 index++; |
| 929 } | 929 } |
| 930 } | 930 } |
| 931 let nums = this._nums; | 931 let nums = this._nums; |
| 932 if (nums !== null) { | 932 if (nums !== null) { |
| 933 let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', nums); | 933 let names = Object.getOwnPropertyNames(nums); |
| 934 let entries = dart.as(_foreign_helper.JS('int', '#.length', names), co re.int); | 934 let entries = names.length; |
| 935 for (let i = 0; i < entries; i++) { | 935 for (let i = 0; i < entries; i++) { |
| 936 let element = dart.as(_foreign_helper.JS('num', '+#[#]', names, i), core.num); | 936 let element = +names[i]; |
| 937 _foreign_helper.JS('void', '#[#] = #', result, index, element); | 937 result[index] = element; |
| 938 index++; | 938 index++; |
| 939 } | 939 } |
| 940 } | 940 } |
| 941 let rest = this._rest; | 941 let rest = this._rest; |
| 942 if (rest !== null) { | 942 if (rest !== null) { |
| 943 let names = _foreign_helper.JS('var', 'Object.getOwnPropertyNames(#)', rest); | 943 let names = Object.getOwnPropertyNames(rest); |
| 944 let entries = dart.as(_foreign_helper.JS('int', '#.length', names), co re.int); | 944 let entries = names.length; |
| 945 for (let i = 0; i < entries; i++) { | 945 for (let i = 0; i < entries; i++) { |
| 946 let entry = _foreign_helper.JS('String', '#[#]', names, i); | 946 let entry = names[i]; |
| 947 let bucket = _foreign_helper.JS('var', '#[#]', rest, entry); | 947 let bucket = rest[entry]; |
| 948 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core.int); | 948 let length = bucket.length; |
| 949 for (let i = 0; i < length; i++) { | 949 for (let i = 0; i < length; i++) { |
| 950 _foreign_helper.JS('void', '#[#] = #[#]', result, index, bucket, i ); | 950 result[index] = bucket[i]; |
| 951 index++; | 951 index++; |
| 952 } | 952 } |
| 953 } | 953 } |
| 954 } | 954 } |
| 955 dart.assert(index === this._length); | 955 dart.assert(index === this._length); |
| 956 return this._elements = result; | 956 return this._elements = result; |
| 957 } | 957 } |
| 958 _addHashTableEntry(table, element) { | 958 _addHashTableEntry(table, element) { |
| 959 if (_hasTableEntry(table, element)) | 959 if (_hasTableEntry(table, element)) |
| 960 return false; | 960 return false; |
| 961 _setTableEntry(table, element, 0); | 961 _setTableEntry(table, element, 0); |
| 962 this._length++; | 962 this._length++; |
| 963 this._elements = null; | 963 this._elements = null; |
| 964 return true; | 964 return true; |
| 965 } | 965 } |
| 966 _removeHashTableEntry(table, element) { | 966 _removeHashTableEntry(table, element) { |
| 967 if (dart.notNull(table !== null) && dart.notNull(_hasTableEntry(table, e lement))) { | 967 if (dart.notNull(table !== null) && dart.notNull(_hasTableEntry(table, e lement))) { |
| 968 _deleteTableEntry(table, element); | 968 _deleteTableEntry(table, element); |
| 969 this._length--; | 969 this._length--; |
| 970 this._elements = null; | 970 this._elements = null; |
| 971 return true; | 971 return true; |
| 972 } else { | 972 } else { |
| 973 return false; | 973 return false; |
| 974 } | 974 } |
| 975 } | 975 } |
| 976 static _isStringElement(element) { | 976 static _isStringElement(element) { |
| 977 return dart.notNull(typeof element == string) && dart.notNull(!dart.equa ls(element, '__proto__')); | 977 return dart.notNull(typeof element == string) && dart.notNull(!dart.equa ls(element, '__proto__')); |
| 978 } | 978 } |
| 979 static _isNumericElement(element) { | 979 static _isNumericElement(element) { |
| 980 return core.bool['&&'](dart.is(element, core.num), _foreign_helper.JS('b ool', '(# & 0x3ffffff) === #', element, element)); | 980 return dart.notNull(dart.is(element, core.num)) && dart.notNull((element & 0x3ffffff) === element); |
| 981 } | 981 } |
| 982 _computeHashCode(element) { | 982 _computeHashCode(element) { |
| 983 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(ele ment, 'hashCode')), core.int); | 983 return dart.dload(element, 'hashCode') & 0x3ffffff; |
| 984 } | 984 } |
| 985 static _hasTableEntry(table, key) { | 985 static _hasTableEntry(table, key) { |
| 986 let entry = _foreign_helper.JS('var', '#[#]', table, key); | 986 let entry = table[key]; |
| 987 return entry !== null; | 987 return entry !== null; |
| 988 } | 988 } |
| 989 static _setTableEntry(table, key, value) { | 989 static _setTableEntry(table, key, value) { |
| 990 dart.assert(value !== null); | 990 dart.assert(value !== null); |
| 991 _foreign_helper.JS('void', '#[#] = #', table, key, value); | 991 table[key] = value; |
| 992 } | 992 } |
| 993 static _deleteTableEntry(table, key) { | 993 static _deleteTableEntry(table, key) { |
| 994 _foreign_helper.JS('void', 'delete #[#]', table, key); | 994 delete table[key]; |
| 995 } | 995 } |
| 996 _getBucket(table, element) { | 996 _getBucket(table, element) { |
| 997 let hash = this._computeHashCode(element); | 997 let hash = this._computeHashCode(element); |
| 998 return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List ); | 998 return dart.as(table[hash], core.List); |
| 999 } | 999 } |
| 1000 _findBucketIndex(bucket, element) { | 1000 _findBucketIndex(bucket, element) { |
| 1001 if (bucket === null) | 1001 if (bucket === null) |
| 1002 return -1; | 1002 return -1; |
| 1003 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 1003 let length = bucket.length; |
| 1004 for (let i = 0; i < length; i++) { | 1004 for (let i = 0; i < length; i++) { |
| 1005 if (dart.equals(_foreign_helper.JS('var', '#[#]', bucket, i), element) ) | 1005 if (dart.equals(bucket[i], element)) |
| 1006 return i; | 1006 return i; |
| 1007 } | 1007 } |
| 1008 return -1; | 1008 return -1; |
| 1009 } | 1009 } |
| 1010 static _newHashTable() { | 1010 static _newHashTable() { |
| 1011 let table = _foreign_helper.JS('var', 'Object.create(null)'); | 1011 let table = Object.create(null); |
| 1012 let temporaryKey = '<non-identifier-key>'; | 1012 let temporaryKey = '<non-identifier-key>'; |
| 1013 _setTableEntry(table, temporaryKey, table); | 1013 _setTableEntry(table, temporaryKey, table); |
| 1014 _deleteTableEntry(table, temporaryKey); | 1014 _deleteTableEntry(table, temporaryKey); |
| 1015 return table; | 1015 return table; |
| 1016 } | 1016 } |
| 1017 } | 1017 } |
| 1018 return _HashSet; | 1018 return _HashSet; |
| 1019 }); | 1019 }); |
| 1020 let _HashSet = _HashSet$(dynamic); | 1020 let _HashSet = _HashSet$(dynamic); |
| 1021 let _IdentityHashSet$ = dart.generic(function(E) { | 1021 let _IdentityHashSet$ = dart.generic(function(E) { |
| 1022 class _IdentityHashSet extends _HashSet$(E) { | 1022 class _IdentityHashSet extends _HashSet$(E) { |
| 1023 _newSet() { | 1023 _newSet() { |
| 1024 return new _IdentityHashSet(); | 1024 return new _IdentityHashSet(); |
| 1025 } | 1025 } |
| 1026 _computeHashCode(key) { | 1026 _computeHashCode(key) { |
| 1027 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityH ashCode(key)), core.int); | 1027 return core.identityHashCode(key) & 0x3ffffff; |
| 1028 } | 1028 } |
| 1029 _findBucketIndex(bucket, element) { | 1029 _findBucketIndex(bucket, element) { |
| 1030 if (bucket === null) | 1030 if (bucket === null) |
| 1031 return -1; | 1031 return -1; |
| 1032 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 1032 let length = bucket.length; |
| 1033 for (let i = 0; i < length; i++) { | 1033 for (let i = 0; i < length; i++) { |
| 1034 if (core.identical(_foreign_helper.JS('var', '#[#]', bucket, i), eleme nt)) | 1034 if (core.identical(bucket[i], element)) |
| 1035 return i; | 1035 return i; |
| 1036 } | 1036 } |
| 1037 return -1; | 1037 return -1; |
| 1038 } | 1038 } |
| 1039 } | 1039 } |
| 1040 return _IdentityHashSet; | 1040 return _IdentityHashSet; |
| 1041 }); | 1041 }); |
| 1042 let _IdentityHashSet = _IdentityHashSet$(dynamic); | 1042 let _IdentityHashSet = _IdentityHashSet$(dynamic); |
| 1043 let _CustomHashSet$ = dart.generic(function(E) { | 1043 let _CustomHashSet$ = dart.generic(function(E) { |
| 1044 class _CustomHashSet extends _HashSet$(E) { | 1044 class _CustomHashSet extends _HashSet$(E) { |
| 1045 _CustomHashSet(_equality, _hasher, validKey) { | 1045 _CustomHashSet(_equality, _hasher, validKey) { |
| 1046 this._equality = _equality; | 1046 this._equality = _equality; |
| 1047 this._hasher = _hasher; | 1047 this._hasher = _hasher; |
| 1048 this._validKey = dart.as(validKey !== null ? validKey : (x) => dart.is(x , E), _Predicate); | 1048 this._validKey = dart.as(validKey !== null ? validKey : (x) => dart.is(x , E), _Predicate); |
| 1049 super._HashSet(); | 1049 super._HashSet(); |
| 1050 } | 1050 } |
| 1051 _newSet() { | 1051 _newSet() { |
| 1052 return new _CustomHashSet(this._equality, this._hasher, this._validKey); | 1052 return new _CustomHashSet(this._equality, this._hasher, this._validKey); |
| 1053 } | 1053 } |
| 1054 _findBucketIndex(bucket, element) { | 1054 _findBucketIndex(bucket, element) { |
| 1055 if (bucket === null) | 1055 if (bucket === null) |
| 1056 return -1; | 1056 return -1; |
| 1057 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 1057 let length = bucket.length; |
| 1058 for (let i = 0; i < length; i++) { | 1058 for (let i = 0; i < length; i++) { |
| 1059 if (this._equality(dart.as(_foreign_helper.JS('var', '#[#]', bucket, i ), E), dart.as(element, E))) | 1059 if (this._equality(dart.as(bucket[i], E), dart.as(element, E))) |
| 1060 return i; | 1060 return i; |
| 1061 } | 1061 } |
| 1062 return -1; | 1062 return -1; |
| 1063 } | 1063 } |
| 1064 _computeHashCode(element) { | 1064 _computeHashCode(element) { |
| 1065 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hasher(d art.as(element, E))), core.int); | 1065 return this._hasher(dart.as(element, E)) & 0x3ffffff; |
| 1066 } | 1066 } |
| 1067 add(object) { | 1067 add(object) { |
| 1068 return super._add(object); | 1068 return super._add(object); |
| 1069 } | 1069 } |
| 1070 contains(object) { | 1070 contains(object) { |
| 1071 if (!dart.notNull(this._validKey(object))) | 1071 if (!dart.notNull(this._validKey(object))) |
| 1072 return false; | 1072 return false; |
| 1073 return super._contains(object); | 1073 return super._contains(object); |
| 1074 } | 1074 } |
| 1075 lookup(object) { | 1075 lookup(object) { |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 1093 this._elements = _elements; | 1093 this._elements = _elements; |
| 1094 this._offset = 0; | 1094 this._offset = 0; |
| 1095 this._current = dart.as(null, E); | 1095 this._current = dart.as(null, E); |
| 1096 } | 1096 } |
| 1097 get current() { | 1097 get current() { |
| 1098 return this._current; | 1098 return this._current; |
| 1099 } | 1099 } |
| 1100 moveNext() { | 1100 moveNext() { |
| 1101 let elements = this._elements; | 1101 let elements = this._elements; |
| 1102 let offset = this._offset; | 1102 let offset = this._offset; |
| 1103 if (_foreign_helper.JS('bool', '# !== #', elements, dart.dload(this._set , '_elements'))) { | 1103 if (elements !== dart.dload(this._set, '_elements')) { |
| 1104 throw new core.ConcurrentModificationError(this._set); | 1104 throw new core.ConcurrentModificationError(this._set); |
| 1105 } else if (offset['>='](_foreign_helper.JS('int', '#.length', elements)) ) { | 1105 } else if (offset >= elements.length) { |
| 1106 this._current = dart.as(null, E); | 1106 this._current = dart.as(null, E); |
| 1107 return false; | 1107 return false; |
| 1108 } else { | 1108 } else { |
| 1109 this._current = dart.as(_foreign_helper.JS('var', '#[#]', elements, of fset), E); | 1109 this._current = dart.as(elements[offset], E); |
| 1110 this._offset = dart.as(_foreign_helper.JS('int', '#', offset + 1), cor e.int); | 1110 this._offset = offset + 1; |
| 1111 return true; | 1111 return true; |
| 1112 } | 1112 } |
| 1113 } | 1113 } |
| 1114 } | 1114 } |
| 1115 return HashSetIterator; | 1115 return HashSetIterator; |
| 1116 }); | 1116 }); |
| 1117 let HashSetIterator = HashSetIterator$(dynamic); | 1117 let HashSetIterator = HashSetIterator$(dynamic); |
| 1118 let _LinkedHashSet$ = dart.generic(function(E) { | 1118 let _LinkedHashSet$ = dart.generic(function(E) { |
| 1119 class _LinkedHashSet extends _HashSetBase$(E) { | 1119 class _LinkedHashSet extends _HashSetBase$(E) { |
| 1120 _LinkedHashSet() { | 1120 _LinkedHashSet() { |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1220 return this._addHashTableEntry(nums, element); | 1220 return this._addHashTableEntry(nums, element); |
| 1221 } else { | 1221 } else { |
| 1222 return this._add(element); | 1222 return this._add(element); |
| 1223 } | 1223 } |
| 1224 } | 1224 } |
| 1225 _add(element) { | 1225 _add(element) { |
| 1226 let rest = this._rest; | 1226 let rest = this._rest; |
| 1227 if (rest === null) | 1227 if (rest === null) |
| 1228 this._rest = rest = _newHashTable(); | 1228 this._rest = rest = _newHashTable(); |
| 1229 let hash = this._computeHashCode(element); | 1229 let hash = this._computeHashCode(element); |
| 1230 let bucket = _foreign_helper.JS('var', '#[#]', rest, hash); | 1230 let bucket = rest[hash]; |
| 1231 if (bucket === null) { | 1231 if (bucket === null) { |
| 1232 let cell = this._newLinkedCell(element); | 1232 let cell = this._newLinkedCell(element); |
| 1233 _setTableEntry(rest, hash, _foreign_helper.JS('var', '[#]', cell)); | 1233 _setTableEntry(rest, hash, [cell]); |
| 1234 } else { | 1234 } else { |
| 1235 let index = this._findBucketIndex(bucket, element); | 1235 let index = this._findBucketIndex(bucket, element); |
| 1236 if (index >= 0) | 1236 if (index >= 0) |
| 1237 return false; | 1237 return false; |
| 1238 let cell = this._newLinkedCell(element); | 1238 let cell = this._newLinkedCell(element); |
| 1239 _foreign_helper.JS('void', '#.push(#)', bucket, cell); | 1239 bucket.push(cell); |
| 1240 } | 1240 } |
| 1241 return true; | 1241 return true; |
| 1242 } | 1242 } |
| 1243 remove(object) { | 1243 remove(object) { |
| 1244 if (_isStringElement(object)) { | 1244 if (_isStringElement(object)) { |
| 1245 return this._removeHashTableEntry(this._strings, object); | 1245 return this._removeHashTableEntry(this._strings, object); |
| 1246 } else if (_isNumericElement(object)) { | 1246 } else if (_isNumericElement(object)) { |
| 1247 return this._removeHashTableEntry(this._nums, object); | 1247 return this._removeHashTableEntry(this._nums, object); |
| 1248 } else { | 1248 } else { |
| 1249 return this._remove(object); | 1249 return this._remove(object); |
| 1250 } | 1250 } |
| 1251 } | 1251 } |
| 1252 _remove(object) { | 1252 _remove(object) { |
| 1253 let rest = this._rest; | 1253 let rest = this._rest; |
| 1254 if (rest === null) | 1254 if (rest === null) |
| 1255 return false; | 1255 return false; |
| 1256 let bucket = this._getBucket(rest, object); | 1256 let bucket = this._getBucket(rest, object); |
| 1257 let index = this._findBucketIndex(bucket, object); | 1257 let index = this._findBucketIndex(bucket, object); |
| 1258 if (index < 0) | 1258 if (index < 0) |
| 1259 return false; | 1259 return false; |
| 1260 let cell = dart.as(_foreign_helper.JS('var', '#.splice(#, 1)[0]', bucket , index), LinkedHashSetCell); | 1260 let cell = dart.as(bucket.splice(index, 1)[0], LinkedHashSetCell); |
| 1261 this._unlinkCell(cell); | 1261 this._unlinkCell(cell); |
| 1262 return true; | 1262 return true; |
| 1263 } | 1263 } |
| 1264 removeWhere(test) { | 1264 removeWhere(test) { |
| 1265 this._filterWhere(test, true); | 1265 this._filterWhere(test, true); |
| 1266 } | 1266 } |
| 1267 retainWhere(test) { | 1267 retainWhere(test) { |
| 1268 this._filterWhere(test, false); | 1268 this._filterWhere(test, false); |
| 1269 } | 1269 } |
| 1270 _filterWhere(test, removeMatching) { | 1270 _filterWhere(test, removeMatching) { |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1337 } else { | 1337 } else { |
| 1338 next._previous = previous; | 1338 next._previous = previous; |
| 1339 } | 1339 } |
| 1340 this._length--; | 1340 this._length--; |
| 1341 this._modified(); | 1341 this._modified(); |
| 1342 } | 1342 } |
| 1343 static _isStringElement(element) { | 1343 static _isStringElement(element) { |
| 1344 return dart.notNull(typeof element == string) && dart.notNull(!dart.equa ls(element, '__proto__')); | 1344 return dart.notNull(typeof element == string) && dart.notNull(!dart.equa ls(element, '__proto__')); |
| 1345 } | 1345 } |
| 1346 static _isNumericElement(element) { | 1346 static _isNumericElement(element) { |
| 1347 return core.bool['&&'](dart.is(element, core.num), _foreign_helper.JS('b ool', '(# & 0x3ffffff) === #', element, element)); | 1347 return dart.notNull(dart.is(element, core.num)) && dart.notNull((element & 0x3ffffff) === element); |
| 1348 } | 1348 } |
| 1349 _computeHashCode(element) { | 1349 _computeHashCode(element) { |
| 1350 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', dart.dload(ele ment, 'hashCode')), core.int); | 1350 return dart.dload(element, 'hashCode') & 0x3ffffff; |
| 1351 } | 1351 } |
| 1352 static _getTableEntry(table, key) { | 1352 static _getTableEntry(table, key) { |
| 1353 return _foreign_helper.JS('var', '#[#]', table, key); | 1353 return table[key]; |
| 1354 } | 1354 } |
| 1355 static _setTableEntry(table, key, value) { | 1355 static _setTableEntry(table, key, value) { |
| 1356 dart.assert(value !== null); | 1356 dart.assert(value !== null); |
| 1357 _foreign_helper.JS('void', '#[#] = #', table, key, value); | 1357 table[key] = value; |
| 1358 } | 1358 } |
| 1359 static _deleteTableEntry(table, key) { | 1359 static _deleteTableEntry(table, key) { |
| 1360 _foreign_helper.JS('void', 'delete #[#]', table, key); | 1360 delete table[key]; |
| 1361 } | 1361 } |
| 1362 _getBucket(table, element) { | 1362 _getBucket(table, element) { |
| 1363 let hash = this._computeHashCode(element); | 1363 let hash = this._computeHashCode(element); |
| 1364 return dart.as(_foreign_helper.JS('var', '#[#]', table, hash), core.List ); | 1364 return dart.as(table[hash], core.List); |
| 1365 } | 1365 } |
| 1366 _findBucketIndex(bucket, element) { | 1366 _findBucketIndex(bucket, element) { |
| 1367 if (bucket === null) | 1367 if (bucket === null) |
| 1368 return -1; | 1368 return -1; |
| 1369 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 1369 let length = bucket.length; |
| 1370 for (let i = 0; i < length; i++) { | 1370 for (let i = 0; i < length; i++) { |
| 1371 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), Linke dHashSetCell); | 1371 let cell = dart.as(bucket[i], LinkedHashSetCell); |
| 1372 if (dart.equals(cell._element, element)) | 1372 if (dart.equals(cell._element, element)) |
| 1373 return i; | 1373 return i; |
| 1374 } | 1374 } |
| 1375 return -1; | 1375 return -1; |
| 1376 } | 1376 } |
| 1377 static _newHashTable() { | 1377 static _newHashTable() { |
| 1378 let table = _foreign_helper.JS('var', 'Object.create(null)'); | 1378 let table = Object.create(null); |
| 1379 let temporaryKey = '<non-identifier-key>'; | 1379 let temporaryKey = '<non-identifier-key>'; |
| 1380 _setTableEntry(table, temporaryKey, table); | 1380 _setTableEntry(table, temporaryKey, table); |
| 1381 _deleteTableEntry(table, temporaryKey); | 1381 _deleteTableEntry(table, temporaryKey); |
| 1382 return table; | 1382 return table; |
| 1383 } | 1383 } |
| 1384 } | 1384 } |
| 1385 return _LinkedHashSet; | 1385 return _LinkedHashSet; |
| 1386 }); | 1386 }); |
| 1387 let _LinkedHashSet = _LinkedHashSet$(dynamic); | 1387 let _LinkedHashSet = _LinkedHashSet$(dynamic); |
| 1388 let _LinkedIdentityHashSet$ = dart.generic(function(E) { | 1388 let _LinkedIdentityHashSet$ = dart.generic(function(E) { |
| 1389 class _LinkedIdentityHashSet extends _LinkedHashSet$(E) { | 1389 class _LinkedIdentityHashSet extends _LinkedHashSet$(E) { |
| 1390 _newSet() { | 1390 _newSet() { |
| 1391 return new _LinkedIdentityHashSet(); | 1391 return new _LinkedIdentityHashSet(); |
| 1392 } | 1392 } |
| 1393 _computeHashCode(key) { | 1393 _computeHashCode(key) { |
| 1394 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', core.identityH ashCode(key)), core.int); | 1394 return core.identityHashCode(key) & 0x3ffffff; |
| 1395 } | 1395 } |
| 1396 _findBucketIndex(bucket, element) { | 1396 _findBucketIndex(bucket, element) { |
| 1397 if (bucket === null) | 1397 if (bucket === null) |
| 1398 return -1; | 1398 return -1; |
| 1399 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 1399 let length = bucket.length; |
| 1400 for (let i = 0; i < length; i++) { | 1400 for (let i = 0; i < length; i++) { |
| 1401 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), Linke dHashSetCell); | 1401 let cell = dart.as(bucket[i], LinkedHashSetCell); |
| 1402 if (core.identical(cell._element, element)) | 1402 if (core.identical(cell._element, element)) |
| 1403 return i; | 1403 return i; |
| 1404 } | 1404 } |
| 1405 return -1; | 1405 return -1; |
| 1406 } | 1406 } |
| 1407 } | 1407 } |
| 1408 return _LinkedIdentityHashSet; | 1408 return _LinkedIdentityHashSet; |
| 1409 }); | 1409 }); |
| 1410 let _LinkedIdentityHashSet = _LinkedIdentityHashSet$(dynamic); | 1410 let _LinkedIdentityHashSet = _LinkedIdentityHashSet$(dynamic); |
| 1411 let _LinkedCustomHashSet$ = dart.generic(function(E) { | 1411 let _LinkedCustomHashSet$ = dart.generic(function(E) { |
| 1412 class _LinkedCustomHashSet extends _LinkedHashSet$(E) { | 1412 class _LinkedCustomHashSet extends _LinkedHashSet$(E) { |
| 1413 _LinkedCustomHashSet(_equality, _hasher, validKey) { | 1413 _LinkedCustomHashSet(_equality, _hasher, validKey) { |
| 1414 this._equality = _equality; | 1414 this._equality = _equality; |
| 1415 this._hasher = _hasher; | 1415 this._hasher = _hasher; |
| 1416 this._validKey = dart.as(validKey !== null ? validKey : (x) => dart.is(x , E), _Predicate); | 1416 this._validKey = dart.as(validKey !== null ? validKey : (x) => dart.is(x , E), _Predicate); |
| 1417 super._LinkedHashSet(); | 1417 super._LinkedHashSet(); |
| 1418 } | 1418 } |
| 1419 _newSet() { | 1419 _newSet() { |
| 1420 return new _LinkedCustomHashSet(this._equality, this._hasher, this._vali dKey); | 1420 return new _LinkedCustomHashSet(this._equality, this._hasher, this._vali dKey); |
| 1421 } | 1421 } |
| 1422 _findBucketIndex(bucket, element) { | 1422 _findBucketIndex(bucket, element) { |
| 1423 if (bucket === null) | 1423 if (bucket === null) |
| 1424 return -1; | 1424 return -1; |
| 1425 let length = dart.as(_foreign_helper.JS('int', '#.length', bucket), core .int); | 1425 let length = bucket.length; |
| 1426 for (let i = 0; i < length; i++) { | 1426 for (let i = 0; i < length; i++) { |
| 1427 let cell = dart.as(_foreign_helper.JS('var', '#[#]', bucket, i), Linke dHashSetCell); | 1427 let cell = dart.as(bucket[i], LinkedHashSetCell); |
| 1428 if (this._equality(dart.as(cell._element, E), dart.as(element, E))) | 1428 if (this._equality(dart.as(cell._element, E), dart.as(element, E))) |
| 1429 return i; | 1429 return i; |
| 1430 } | 1430 } |
| 1431 return -1; | 1431 return -1; |
| 1432 } | 1432 } |
| 1433 _computeHashCode(element) { | 1433 _computeHashCode(element) { |
| 1434 return dart.as(_foreign_helper.JS('int', '# & 0x3ffffff', this._hasher(d art.as(element, E))), core.int); | 1434 return this._hasher(dart.as(element, E)) & 0x3ffffff; |
| 1435 } | 1435 } |
| 1436 add(element) { | 1436 add(element) { |
| 1437 return super._add(element); | 1437 return super._add(element); |
| 1438 } | 1438 } |
| 1439 contains(object) { | 1439 contains(object) { |
| 1440 if (!dart.notNull(this._validKey(object))) | 1440 if (!dart.notNull(this._validKey(object))) |
| 1441 return false; | 1441 return false; |
| 1442 return super._contains(object); | 1442 return super._contains(object); |
| 1443 } | 1443 } |
| 1444 lookup(object) { | 1444 lookup(object) { |
| (...skipping 3342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4787 collection.ListQueue$ = ListQueue$; | 4787 collection.ListQueue$ = ListQueue$; |
| 4788 collection.SetMixin = SetMixin; | 4788 collection.SetMixin = SetMixin; |
| 4789 collection.SetMixin$ = SetMixin$; | 4789 collection.SetMixin$ = SetMixin$; |
| 4790 collection.SetBase = SetBase; | 4790 collection.SetBase = SetBase; |
| 4791 collection.SetBase$ = SetBase$; | 4791 collection.SetBase$ = SetBase$; |
| 4792 collection.SplayTreeMap = SplayTreeMap; | 4792 collection.SplayTreeMap = SplayTreeMap; |
| 4793 collection.SplayTreeMap$ = SplayTreeMap$; | 4793 collection.SplayTreeMap$ = SplayTreeMap$; |
| 4794 collection.SplayTreeSet = SplayTreeSet; | 4794 collection.SplayTreeSet = SplayTreeSet; |
| 4795 collection.SplayTreeSet$ = SplayTreeSet$; | 4795 collection.SplayTreeSet$ = SplayTreeSet$; |
| 4796 })(collection || (collection = {})); | 4796 })(collection || (collection = {})); |
| OLD | NEW |