OLD | NEW |
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 library dart2js.util.maplet; | 5 library dart2js.util.maplet; |
6 | 6 |
7 import 'dart:collection' show MapBase, IterableBase; | 7 import 'dart:collection' show MapBase, IterableBase; |
8 | 8 |
9 class Maplet<K, V> extends MapBase<K, V> { | 9 class Maplet<K, V> extends MapBase<K, V> { |
10 static const _MARKER = const _MapletMarker(); | 10 static const _MARKER = const _MapletMarker(); |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 } else if (_key == key) { | 94 } else if (_key == key) { |
95 _value = value; | 95 _value = value; |
96 } else { | 96 } else { |
97 List list = new List(CAPACITY * 2); | 97 List list = new List(CAPACITY * 2); |
98 list[0] = _key; | 98 list[0] = _key; |
99 list[1] = key; | 99 list[1] = key; |
100 list[CAPACITY] = _value; | 100 list[CAPACITY] = _value; |
101 list[CAPACITY + 1] = value; | 101 list[CAPACITY + 1] = value; |
102 _key = list; | 102 _key = list; |
103 _value = null; | 103 _value = null; |
104 _extra = 2; // Two elements. | 104 _extra = 2; // Two elements. |
105 } | 105 } |
106 } else if (_MARKER == _extra) { | 106 } else if (_MARKER == _extra) { |
107 _key[key] = value; | 107 _key[key] = value; |
108 } else { | 108 } else { |
109 int remaining = _extra; | 109 int remaining = _extra; |
110 int index = 0; | 110 int index = 0; |
111 int copyTo, copyFrom; | 111 int copyTo, copyFrom; |
112 while (remaining > 0 && index < CAPACITY) { | 112 while (remaining > 0 && index < CAPACITY) { |
113 var candidate = _key[index]; | 113 var candidate = _key[index]; |
114 if (_MARKER == candidate) { | 114 if (_MARKER == candidate) { |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 var candidate = _list[_index++]; | 270 var candidate = _list[_index++]; |
271 if (Maplet._MARKER != candidate) { | 271 if (Maplet._MARKER != candidate) { |
272 _current = candidate; | 272 _current = candidate; |
273 _remaining--; | 273 _remaining--; |
274 return true; | 274 return true; |
275 } | 275 } |
276 } | 276 } |
277 _current = null; | 277 _current = null; |
278 return false; | 278 return false; |
279 } | 279 } |
280 } | 280 } |
OLD | NEW |