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 |