| Index: src/compiler/node-cache.h
 | 
| diff --git a/src/compiler/node-cache.h b/src/compiler/node-cache.h
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..35352ea1eb1e19e93eabe1393a9eedefcb36c803
 | 
| --- /dev/null
 | 
| +++ b/src/compiler/node-cache.h
 | 
| @@ -0,0 +1,53 @@
 | 
| +// Copyright 2014 the V8 project authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#ifndef V8_COMPILER_NODE_CACHE_H_
 | 
| +#define V8_COMPILER_NODE_CACHE_H_
 | 
| +
 | 
| +#include "src/v8.h"
 | 
| +
 | 
| +#include "src/compiler/node.h"
 | 
| +
 | 
| +namespace v8 {
 | 
| +namespace internal {
 | 
| +namespace compiler {
 | 
| +
 | 
| +// A cache for nodes based on a key. Useful for implementing canonicalization of
 | 
| +// nodes such as constants, parameters, etc.
 | 
| +template <typename Key>
 | 
| +class NodeCache {
 | 
| + public:
 | 
| +  explicit NodeCache(int max = 256) : entries_(NULL), size_(0), max_(max) {}
 | 
| +
 | 
| +  // Search for node associated with {key} and return a pointer to a memory
 | 
| +  // location in this cache that stores an entry for the key. If the location
 | 
| +  // returned by this method contains a non-NULL node, the caller can use that
 | 
| +  // node. Otherwise it is the responsibility of the caller to fill the entry
 | 
| +  // with a new node.
 | 
| +  // Note that a previous cache entry may be overwritten if the cache becomes
 | 
| +  // too full or encounters too many hash collisions.
 | 
| +  Node** Find(Zone* zone, Key key);
 | 
| +
 | 
| + private:
 | 
| +  struct Entry {
 | 
| +    Key key_;
 | 
| +    Node* value_;
 | 
| +  };
 | 
| +
 | 
| +  Entry* entries_;  // lazily-allocated hash entries.
 | 
| +  int32_t size_;
 | 
| +  int32_t max_;
 | 
| +
 | 
| +  bool Resize(Zone* zone);
 | 
| +};
 | 
| +
 | 
| +// Various default cache types.
 | 
| +typedef NodeCache<int64_t> Int64NodeCache;
 | 
| +typedef NodeCache<int32_t> Int32NodeCache;
 | 
| +typedef NodeCache<void*> PtrNodeCache;
 | 
| +}
 | 
| +}
 | 
| +}  // namespace v8::internal::compiler
 | 
| +
 | 
| +#endif  // V8_COMPILER_NODE_CACHE_H_
 | 
| 
 |