Line data Source code
1 : // Copyright 2018 the V8 project authors. All rights reserved.
2 : // Use of this source code is governed by a BSD-style license that can be
3 : // found in the LICENSE file.
4 :
5 : #include "src/compiler/refs-map.h"
6 :
7 : namespace v8 {
8 : namespace internal {
9 : namespace compiler {
10 :
11 : using UnderlyingMap =
12 : base::TemplateHashMapImpl<Address, ObjectData*, AddressMatcher,
13 : ZoneAllocationPolicy>;
14 :
15 501091 : RefsMap::RefsMap(uint32_t capacity, AddressMatcher match, Zone* zone)
16 1002182 : : UnderlyingMap(capacity, match, ZoneAllocationPolicy(zone)) {}
17 :
18 464442 : RefsMap::RefsMap(const RefsMap* other, Zone* zone)
19 464442 : : UnderlyingMap(other, ZoneAllocationPolicy(zone)) {}
20 :
21 52120358 : RefsMap::Entry* RefsMap::Lookup(const Address& key) const {
22 104240716 : return UnderlyingMap::Lookup(key, Hash(key));
23 : }
24 :
25 220694443 : RefsMap::Entry* RefsMap::LookupOrInsert(const Address& key, Zone* zone) {
26 662083848 : return UnderlyingMap::LookupOrInsert(key, RefsMap::Hash(key),
27 : []() { return nullptr; },
28 441389405 : ZoneAllocationPolicy(zone));
29 : }
30 :
31 272814801 : uint32_t RefsMap::Hash(Address addr) { return static_cast<uint32_t>(addr); }
32 :
33 : } // namespace compiler
34 : } // namespace internal
35 : } // namespace v8
|