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 500777 : RefsMap::RefsMap(uint32_t capacity, AddressMatcher match, Zone* zone)
16 1001555 : : UnderlyingMap(capacity, match, ZoneAllocationPolicy(zone)) {}
17 :
18 464114 : RefsMap::RefsMap(const RefsMap* other, Zone* zone)
19 464114 : : UnderlyingMap(other, ZoneAllocationPolicy(zone)) {}
20 :
21 51583378 : RefsMap::Entry* RefsMap::Lookup(const Address& key) const {
22 103166756 : return UnderlyingMap::Lookup(key, Hash(key));
23 : }
24 :
25 220786228 : RefsMap::Entry* RefsMap::LookupOrInsert(const Address& key, Zone* zone) {
26 662359303 : return UnderlyingMap::LookupOrInsert(key, RefsMap::Hash(key),
27 : []() { return nullptr; },
28 441573075 : ZoneAllocationPolicy(zone));
29 : }
30 :
31 272369606 : uint32_t RefsMap::Hash(Address addr) { return static_cast<uint32_t>(addr); }
32 :
33 : } // namespace compiler
34 : } // namespace internal
35 : } // namespace v8
|