// Copyright (c) 2014, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:collection' show HashMap, HashSet;

/**
 * Helper class for allocating sets and maps appropriate for caching objects
 * that can be assumed to be canonicalized.
 *
 * When compiling dart2js to JavaScript, profiling reveals that identity maps
 * and sets have superior performance.  However, we know that [Object.hashCode]
 * is slow on the Dart VM.  This class is meant to encapsulate the decision
 * about which data structure is best, and we anticipate specific subclasses
 * for JavaScript and Dart VM in the future.
 */
class CacheStrategy {
  final bool hasIncrementalSupport;

  CacheStrategy(this.hasIncrementalSupport);

  Map newMap() => hasIncrementalSupport ? new HashMap.identity() : null;

  Set newSet() => hasIncrementalSupport ? new HashSet.identity() : null;
}
