| 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 import 'dart:collection' show | 5 import 'dart:collection' show |
| 6 HashMap, | 6 HashMap, |
| 7 HashSet; | 7 HashSet; |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * Helper class for allocating sets and maps appropriate for caching objects | 10 * Helper class for allocating sets and maps appropriate for caching objects |
| 11 * that can be assumed to be canonicalized. | 11 * that can be assumed to be canonicalized. |
| 12 * | 12 * |
| 13 * When compiling dart2js to JavaScript, profiling reveals that identity maps | 13 * When compiling dart2js to JavaScript, profiling reveals that identity maps |
| 14 * and sets have superior performance. However, we know that [Object.hashCode] | 14 * and sets have superior performance. However, we know that [Object.hashCode] |
| 15 * is slow on the Dart VM. This class is meant to encapsulate the decision | 15 * is slow on the Dart VM. This class is meant to encapsulate the decision |
| 16 * about which data structure is best, and we anticipate specific subclasses | 16 * about which data structure is best, and we anticipate specific subclasses |
| 17 * for JavaScript and Dart VM in the future. | 17 * for JavaScript and Dart VM in the future. |
| 18 */ | 18 */ |
| 19 class CacheStrategy { | 19 class CacheStrategy { |
| 20 final bool hasIncrementalSupport; | 20 final bool hasIncrementalSupport; |
| 21 | 21 |
| 22 CacheStrategy(this.hasIncrementalSupport); | 22 CacheStrategy(this.hasIncrementalSupport); |
| 23 | 23 |
| 24 Map newMap() => hasIncrementalSupport ? new HashMap.identity() : null; | 24 Map newMap() => hasIncrementalSupport ? new HashMap.identity() : null; |
| 25 | 25 |
| 26 Set newSet() => hasIncrementalSupport ? new HashSet.identity() : null; | 26 Set newSet() => hasIncrementalSupport ? new HashSet.identity() : null; |
| 27 } | 27 } |
| OLD | NEW |