| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // BSD-style license that can be found in the LICENSE file. | |
| 4 | |
| 5 import 'dart:collection' show | |
| 6 HashMap, | |
| 7 HashSet; | |
| 8 | |
| 9 /** | |
| 10 * Helper class for allocating sets and maps appropriate for caching objects | |
| 11 * that can be assumed to be canonicalized. | |
| 12 * | |
| 13 * When compiling dart2js to JavaScript, profiling reveals that identity maps | |
| 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 | |
| 16 * about which data structure is best, and we anticipate specific subclasses | |
| 17 * for JavaScript and Dart VM in the future. | |
| 18 */ | |
| 19 class CacheStrategy { | |
| 20 final bool hasIncrementalSupport; | |
| 21 | |
| 22 CacheStrategy(this.hasIncrementalSupport); | |
| 23 | |
| 24 Map newMap() => hasIncrementalSupport ? new HashMap.identity() : null; | |
| 25 | |
| 26 Set newSet() => hasIncrementalSupport ? new HashSet.identity() : null; | |
| 27 } | |
| OLD | NEW |