summaryrefslogtreecommitdiff
path: root/deps/v8/src/zone/zone-containers.h
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/zone/zone-containers.h')
-rw-r--r--deps/v8/src/zone/zone-containers.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/deps/v8/src/zone/zone-containers.h b/deps/v8/src/zone/zone-containers.h
index f399899464..78d25cc644 100644
--- a/deps/v8/src/zone/zone-containers.h
+++ b/deps/v8/src/zone/zone-containers.h
@@ -12,8 +12,11 @@
#include <queue>
#include <set>
#include <stack>
+#include <unordered_map>
+#include <unordered_set>
#include <vector>
+#include "src/base/functional.h"
#include "src/zone/zone-allocator.h"
namespace v8 {
@@ -133,6 +136,35 @@ class ZoneMap
Compare(), ZoneAllocator<std::pair<const K, V>>(zone)) {}
};
+// A wrapper subclass for std::unordered_map to make it easy to construct one
+// that uses a zone allocator.
+template <typename K, typename V, typename Hash = base::hash<K>,
+ typename KeyEqual = std::equal_to<K>>
+class ZoneUnorderedMap
+ : public std::unordered_map<K, V, Hash, KeyEqual,
+ ZoneAllocator<std::pair<const K, V>>> {
+ public:
+ // Constructs an empty map.
+ explicit ZoneUnorderedMap(Zone* zone)
+ : std::unordered_map<K, V, Hash, KeyEqual,
+ ZoneAllocator<std::pair<const K, V>>>(
+ 100, Hash(), KeyEqual(),
+ ZoneAllocator<std::pair<const K, V>>(zone)) {}
+};
+
+// A wrapper subclass for std::unordered_set to make it easy to construct one
+// that uses a zone allocator.
+template <typename K, typename Hash = base::hash<K>,
+ typename KeyEqual = std::equal_to<K>>
+class ZoneUnorderedSet
+ : public std::unordered_set<K, Hash, KeyEqual, ZoneAllocator<K>> {
+ public:
+ // Constructs an empty map.
+ explicit ZoneUnorderedSet(Zone* zone)
+ : std::unordered_set<K, Hash, KeyEqual, ZoneAllocator<K>>(
+ 100, Hash(), KeyEqual(), ZoneAllocator<K>(zone)) {}
+};
+
// A wrapper subclass for std::multimap to make it easy to construct one that
// uses a zone allocator.
template <typename K, typename V, typename Compare = std::less<K>>