OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 // Patch file for dart:collection classes. | 5 // Patch file for dart:collection classes. |
6 import 'dart:_foreign_helper' show JS; | 6 import 'dart:_foreign_helper' show JS; |
7 import 'dart:_js_helper' show | 7 import 'dart:_js_helper' show |
8 fillLiteralMap, InternalMap, NoInline, NoThrows, patch, JsLinkedHashMap, | 8 fillLiteralMap, InternalMap, NoInline, NoThrows, patch, JsLinkedHashMap, |
9 LinkedHashMapCell, LinkedHashMapKeyIterable, LinkedHashMapKeyIterator; | 9 LinkedHashMapCell, LinkedHashMapKeyIterable, LinkedHashMapKeyIterator; |
10 | 10 |
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 @NoInline() | 522 @NoInline() |
523 factory LinkedHashMap._literal(List keyValuePairs) { | 523 factory LinkedHashMap._literal(List keyValuePairs) { |
524 return fillLiteralMap(keyValuePairs, new JsLinkedHashMap<K, V>()); | 524 return fillLiteralMap(keyValuePairs, new JsLinkedHashMap<K, V>()); |
525 } | 525 } |
526 | 526 |
527 // Private factory constructor called by generated code for map literals. | 527 // Private factory constructor called by generated code for map literals. |
528 @NoThrows() @NoInline() | 528 @NoThrows() @NoInline() |
529 factory LinkedHashMap._empty() { | 529 factory LinkedHashMap._empty() { |
530 return new JsLinkedHashMap<K, V>(); | 530 return new JsLinkedHashMap<K, V>(); |
531 } | 531 } |
| 532 |
| 533 // Private factory static function called by generated code for map literals. |
| 534 // This version is for map literals without type parameters. |
| 535 @NoInline() |
| 536 static _makeEmpty() => new JsLinkedHashMap(); |
| 537 |
| 538 // Private factory static function called by generated code for map literals. |
| 539 // This version is for map literals without type parameters. |
| 540 @NoInline() |
| 541 static _makeLiteral(keyValuePairs) => |
| 542 fillLiteralMap(keyValuePairs, new JsLinkedHashMap()); |
532 } | 543 } |
533 | 544 |
534 class _LinkedIdentityHashMap<K, V> extends JsLinkedHashMap<K, V> { | 545 class _LinkedIdentityHashMap<K, V> extends JsLinkedHashMap<K, V> { |
535 int internalComputeHashCode(var key) { | 546 int internalComputeHashCode(var key) { |
536 // We force the hash codes to be unsigned 30-bit integers to avoid | 547 // We force the hash codes to be unsigned 30-bit integers to avoid |
537 // issues with problematic keys like '__proto__'. Another option | 548 // issues with problematic keys like '__proto__'. Another option |
538 // would be to throw an exception if the hash code isn't a number. | 549 // would be to throw an exception if the hash code isn't a number. |
539 return JS('int', '# & 0x3ffffff', identityHashCode(key)); | 550 return JS('int', '# & 0x3ffffff', identityHashCode(key)); |
540 } | 551 } |
541 | 552 |
(...skipping 916 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1458 } else if (_cell == null) { | 1469 } else if (_cell == null) { |
1459 _current = null; | 1470 _current = null; |
1460 return false; | 1471 return false; |
1461 } else { | 1472 } else { |
1462 _current = _cell._element; | 1473 _current = _cell._element; |
1463 _cell = _cell._next; | 1474 _cell = _cell._next; |
1464 return true; | 1475 return true; |
1465 } | 1476 } |
1466 } | 1477 } |
1467 } | 1478 } |
OLD | NEW |