| Index: runtime/lib/collection_patch.dart
|
| diff --git a/runtime/lib/collection_patch.dart b/runtime/lib/collection_patch.dart
|
| index f7cd33d1da5a630eb92428c25db8702185bca654..aca1f775ee70a8166e1694e96b41c5491e149396 100644
|
| --- a/runtime/lib/collection_patch.dart
|
| +++ b/runtime/lib/collection_patch.dart
|
| @@ -5,10 +5,13 @@
|
| import 'dart:typed_data';
|
| import 'dart:_internal' as internal;
|
|
|
| -@patch class HashMap<K, V> {
|
| - @patch factory HashMap({ bool equals(K key1, K key2),
|
| - int hashCode(K key),
|
| - bool isValidKey(potentialKey) }) {
|
| +@patch
|
| +class HashMap<K, V> {
|
| + @patch
|
| + factory HashMap(
|
| + {bool equals(K key1, K key2),
|
| + int hashCode(K key),
|
| + bool isValidKey(potentialKey)}) {
|
| if (isValidKey == null) {
|
| if (hashCode == null) {
|
| if (equals == null) {
|
| @@ -35,18 +38,17 @@ import 'dart:_internal' as internal;
|
| return new _CustomHashMap<K, V>(equals, hashCode, isValidKey);
|
| }
|
|
|
| - @patch factory HashMap.identity() = _IdentityHashMap<K, V>;
|
| + @patch
|
| + factory HashMap.identity() = _IdentityHashMap<K, V>;
|
|
|
| Set<K> _newKeySet();
|
| }
|
|
|
| -
|
| const int _MODIFICATION_COUNT_MASK = 0x3fffffff;
|
|
|
| class _HashMap<K, V> implements HashMap<K, V> {
|
| static const int _INITIAL_CAPACITY = 8;
|
|
|
| -
|
| int _elementCount = 0;
|
| List<_HashMapEntry> _buckets = new List(_INITIAL_CAPACITY);
|
| int _modificationCount = 0;
|
| @@ -83,7 +85,7 @@ class _HashMap<K, V> implements HashMap<K, V> {
|
| return false;
|
| }
|
|
|
| - V operator[](Object key) {
|
| + V operator [](Object key) {
|
| int hashCode = key.hashCode;
|
| List buckets = _buckets;
|
| int index = hashCode & (buckets.length - 1);
|
| @@ -186,9 +188,8 @@ class _HashMap<K, V> implements HashMap<K, V> {
|
| }
|
| }
|
|
|
| - void _removeEntry(_HashMapEntry entry,
|
| - _HashMapEntry previousInBucket,
|
| - int bucketIndex) {
|
| + void _removeEntry(
|
| + _HashMapEntry entry, _HashMapEntry previousInBucket, int bucketIndex) {
|
| if (previousInBucket == null) {
|
| _buckets[bucketIndex] = entry.next;
|
| } else {
|
| @@ -196,8 +197,8 @@ class _HashMap<K, V> implements HashMap<K, V> {
|
| }
|
| }
|
|
|
| - void _addEntry(List buckets, int index, int length,
|
| - K key, V value, int hashCode) {
|
| + void _addEntry(
|
| + List buckets, int index, int length, K key, V value, int hashCode) {
|
| _HashMapEntry entry =
|
| new _HashMapEntry(key, value, hashCode, buckets[index]);
|
| buckets[index] = entry;
|
| @@ -240,7 +241,6 @@ class _CustomHashMap<K, V> extends _HashMap<K, V> {
|
| _CustomHashMap(this._equals, this._hashCode, validKey)
|
| : _validKey = (validKey != null) ? validKey : new _TypeTest<K>().test;
|
|
|
| -
|
| bool containsKey(Object key) {
|
| if (!_validKey(key)) return false;
|
| int hashCode = _hashCode(key);
|
| @@ -254,7 +254,7 @@ class _CustomHashMap<K, V> extends _HashMap<K, V> {
|
| return false;
|
| }
|
|
|
| - V operator[](Object key) {
|
| + V operator [](Object key) {
|
| if (!_validKey(key)) return null;
|
| int hashCode = _hashCode(key);
|
| List buckets = _buckets;
|
| @@ -335,7 +335,6 @@ class _CustomHashMap<K, V> extends _HashMap<K, V> {
|
| }
|
|
|
| class _IdentityHashMap<K, V> extends _HashMap<K, V> {
|
| -
|
| bool containsKey(Object key) {
|
| int hashCode = identityHashCode(key);
|
| List buckets = _buckets;
|
| @@ -348,7 +347,7 @@ class _IdentityHashMap<K, V> extends _HashMap<K, V> {
|
| return false;
|
| }
|
|
|
| - V operator[](Object key) {
|
| + V operator [](Object key) {
|
| int hashCode = identityHashCode(key);
|
| List buckets = _buckets;
|
| int index = hashCode & (buckets.length - 1);
|
| @@ -426,7 +425,6 @@ class _IdentityHashMap<K, V> extends _HashMap<K, V> {
|
| Set<K> _newKeySet() => new _IdentityHashSet<K>();
|
| }
|
|
|
| -
|
| class _HashMapEntry {
|
| final key;
|
| var value;
|
| @@ -452,6 +450,7 @@ class _HashMapKeyIterable<K> extends _HashMapIterable<K> {
|
| action(key);
|
| });
|
| }
|
| +
|
| Set<K> toSet() => _map._newKeySet()..addAll(this);
|
| }
|
|
|
| @@ -474,7 +473,8 @@ abstract class _HashMapIterator<E> implements Iterator<E> {
|
| _HashMapEntry _entry;
|
|
|
| _HashMapIterator(HashMap map)
|
| - : _map = map, _stamp = map._modificationCount;
|
| + : _map = map,
|
| + _stamp = map._modificationCount;
|
|
|
| bool moveNext() {
|
| if (_stamp != _map._modificationCount) {
|
| @@ -520,10 +520,13 @@ class _HashMapValueIterator<V> extends _HashMapIterator<V> {
|
| }
|
| }
|
|
|
| -@patch class HashSet<E> {
|
| - @patch factory HashSet({ bool equals(E e1, E e2),
|
| - int hashCode(E e),
|
| - bool isValidKey(potentialKey) }) {
|
| +@patch
|
| +class HashSet<E> {
|
| + @patch
|
| + factory HashSet(
|
| + {bool equals(E e1, E e2),
|
| + int hashCode(E e),
|
| + bool isValidKey(potentialKey)}) {
|
| if (isValidKey == null) {
|
| if (hashCode == null) {
|
| if (equals == null) {
|
| @@ -550,7 +553,8 @@ class _HashMapValueIterator<V> extends _HashMapIterator<V> {
|
| return new _CustomHashSet<E>(equals, hashCode, isValidKey);
|
| }
|
|
|
| - @patch factory HashSet.identity() = _IdentityHashSet<E>;
|
| + @patch
|
| + factory HashSet.identity() = _IdentityHashSet<E>;
|
| }
|
|
|
| class _HashSet<E> extends _HashSetBase<E> implements HashSet<E> {
|
| @@ -649,7 +653,7 @@ class _HashSet<E> extends _HashSetBase<E> implements HashSet<E> {
|
|
|
| void _filterWhere(bool test(E element), bool removeMatching) {
|
| int length = _buckets.length;
|
| - for (int index = 0; index < length; index++) {
|
| + for (int index = 0; index < length; index++) {
|
| _HashSetEntry entry = _buckets[index];
|
| _HashSetEntry previous = null;
|
| while (entry != null) {
|
| @@ -795,7 +799,8 @@ class _HashSetIterator<E> implements Iterator<E> {
|
| E _current;
|
|
|
| _HashSetIterator(_HashSet hashSet)
|
| - : _set = hashSet, _modificationCount = hashSet._modificationCount;
|
| + : _set = hashSet,
|
| + _modificationCount = hashSet._modificationCount;
|
|
|
| bool moveNext() {
|
| if (_modificationCount != _set._modificationCount) {
|
| @@ -830,7 +835,7 @@ class _LinkedHashMapEntry extends _HashMapEntry {
|
| var _nextEntry;
|
| var _previousEntry;
|
| _LinkedHashMapEntry(key, value, int hashCode, _LinkedHashMapEntry next,
|
| - this._previousEntry, this._nextEntry)
|
| + this._previousEntry, this._nextEntry)
|
| : super(key, value, hashCode, next) {
|
| _previousEntry._nextEntry = this;
|
| _nextEntry._previousEntry = this;
|
| @@ -897,11 +902,11 @@ class _LinkedHashMapValueIterator<V> extends _LinkedHashMapIterator<V> {
|
| V _getValue(_LinkedHashMapEntry entry) => entry.value;
|
| }
|
|
|
| -
|
| /**
|
| * A hash-based map that iterates keys and values in key insertion order.
|
| */
|
| -@patch class LinkedHashMap<K, V> {
|
| +@patch
|
| +class LinkedHashMap<K, V> {
|
| /// Holds a double-linked list of entries in insertion order.
|
| /// The fields have the same name as the ones in [_LinkedHashMapEntry],
|
| /// and this map is itself used as the head entry of the list.
|
| @@ -910,9 +915,11 @@ class _LinkedHashMapValueIterator<V> extends _LinkedHashMapIterator<V> {
|
| var _nextEntry;
|
| var _previousEntry;
|
|
|
| - @patch factory LinkedHashMap({ bool equals(K key1, K key2),
|
| - int hashCode(K key),
|
| - bool isValidKey(potentialKey) }) {
|
| + @patch
|
| + factory LinkedHashMap(
|
| + {bool equals(K key1, K key2),
|
| + int hashCode(K key),
|
| + bool isValidKey(potentialKey)}) {
|
| if (isValidKey == null) {
|
| if (hashCode == null) {
|
| if (equals == null) {
|
| @@ -939,14 +946,17 @@ class _LinkedHashMapValueIterator<V> extends _LinkedHashMapIterator<V> {
|
| return new _CompactLinkedCustomHashMap<K, V>(equals, hashCode, isValidKey);
|
| }
|
|
|
| - @patch factory LinkedHashMap.identity() =
|
| - _CompactLinkedIdentityHashMap<K, V>;
|
| + @patch
|
| + factory LinkedHashMap.identity() = _CompactLinkedIdentityHashMap<K, V>;
|
| }
|
|
|
| -@patch class LinkedHashSet<E> {
|
| - @patch factory LinkedHashSet({ bool equals(E e1, E e2),
|
| - int hashCode(E e),
|
| - bool isValidKey(potentialKey) }) {
|
| +@patch
|
| +class LinkedHashSet<E> {
|
| + @patch
|
| + factory LinkedHashSet(
|
| + {bool equals(E e1, E e2),
|
| + int hashCode(E e),
|
| + bool isValidKey(potentialKey)}) {
|
| if (isValidKey == null) {
|
| if (hashCode == null) {
|
| if (equals == null) {
|
| @@ -973,6 +983,6 @@ class _LinkedHashMapValueIterator<V> extends _LinkedHashMapIterator<V> {
|
| return new _CompactLinkedCustomHashSet<E>(equals, hashCode, isValidKey);
|
| }
|
|
|
| - @patch factory LinkedHashSet.identity() =
|
| - _CompactLinkedIdentityHashSet<E>;
|
| + @patch
|
| + factory LinkedHashSet.identity() = _CompactLinkedIdentityHashSet<E>;
|
| }
|
|
|