summaryrefslogtreecommitdiff
path: root/deps/v8/src/compiler/refs-map.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/compiler/refs-map.cc')
-rw-r--r--deps/v8/src/compiler/refs-map.cc35
1 files changed, 35 insertions, 0 deletions
diff --git a/deps/v8/src/compiler/refs-map.cc b/deps/v8/src/compiler/refs-map.cc
new file mode 100644
index 0000000000..8b176d0e4c
--- /dev/null
+++ b/deps/v8/src/compiler/refs-map.cc
@@ -0,0 +1,35 @@
+// Copyright 2018 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.
+
+#include "src/compiler/refs-map.h"
+
+namespace v8 {
+namespace internal {
+namespace compiler {
+
+using UnderlyingMap =
+ base::TemplateHashMapImpl<Address, ObjectData*, AddressMatcher,
+ ZoneAllocationPolicy>;
+
+RefsMap::RefsMap(uint32_t capacity, AddressMatcher match, Zone* zone)
+ : UnderlyingMap(capacity, match, ZoneAllocationPolicy(zone)) {}
+
+RefsMap::RefsMap(const RefsMap* other, Zone* zone)
+ : UnderlyingMap(other, ZoneAllocationPolicy(zone)) {}
+
+RefsMap::Entry* RefsMap::Lookup(const Address& key) const {
+ return UnderlyingMap::Lookup(key, Hash(key));
+}
+
+RefsMap::Entry* RefsMap::LookupOrInsert(const Address& key, Zone* zone) {
+ return UnderlyingMap::LookupOrInsert(key, RefsMap::Hash(key),
+ []() { return nullptr; },
+ ZoneAllocationPolicy(zone));
+}
+
+uint32_t RefsMap::Hash(Address addr) { return static_cast<uint32_t>(addr); }
+
+} // namespace compiler
+} // namespace internal
+} // namespace v8