Coverage Report

Created: 2023-09-21 18:56

/Users/buildslave/jenkins/workspace/coverage/llvm-project/lldb/include/lldb/Utility/ThreadSafeDenseMap.h
Line
Count
Source
1
//===-- ThreadSafeDenseMap.h ------------------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
9
#ifndef LLDB_UTILITY_THREADSAFEDENSEMAP_H
10
#define LLDB_UTILITY_THREADSAFEDENSEMAP_H
11
12
#include <mutex>
13
14
#include "llvm/ADT/DenseMap.h"
15
16
namespace lldb_private {
17
18
template <typename _KeyType, typename _ValueType> class ThreadSafeDenseMap {
19
public:
20
  typedef llvm::DenseMap<_KeyType, _ValueType> LLVMMapType;
21
22
  ThreadSafeDenseMap(unsigned map_initial_capacity = 0)
23
3.11k
      : m_map(map_initial_capacity), m_mutex() {}
lldb_private::ThreadSafeDenseMap<clang::ASTContext*, lldb_private::TypeSystemClang*>::ThreadSafeDenseMap(unsigned int)
Line
Count
Source
23
1.00k
      : m_map(map_initial_capacity), m_mutex() {}
lldb_private::ThreadSafeDenseMap<void*, unsigned long long>::ThreadSafeDenseMap(unsigned int)
Line
Count
Source
23
2.11k
      : m_map(map_initial_capacity), m_mutex() {}
24
25
19.4k
  void Insert(_KeyType k, _ValueType v) {
26
19.4k
    std::lock_guard<std::mutex> guard(m_mutex);
27
19.4k
    m_map.insert(std::make_pair(k, v));
28
19.4k
  }
lldb_private::ThreadSafeDenseMap<clang::ASTContext*, lldb_private::TypeSystemClang*>::Insert(clang::ASTContext*, lldb_private::TypeSystemClang*)
Line
Count
Source
25
19.3k
  void Insert(_KeyType k, _ValueType v) {
26
19.3k
    std::lock_guard<std::mutex> guard(m_mutex);
27
19.3k
    m_map.insert(std::make_pair(k, v));
28
19.3k
  }
lldb_private::ThreadSafeDenseMap<void*, unsigned long long>::Insert(void*, unsigned long long)
Line
Count
Source
25
57
  void Insert(_KeyType k, _ValueType v) {
26
57
    std::lock_guard<std::mutex> guard(m_mutex);
27
57
    m_map.insert(std::make_pair(k, v));
28
57
  }
29
30
21.1k
  void Erase(_KeyType k) {
31
21.1k
    std::lock_guard<std::mutex> guard(m_mutex);
32
21.1k
    m_map.erase(k);
33
21.1k
  }
34
35
2.19M
  _ValueType Lookup(_KeyType k) {
36
2.19M
    std::lock_guard<std::mutex> guard(m_mutex);
37
2.19M
    return m_map.lookup(k);
38
2.19M
  }
lldb_private::ThreadSafeDenseMap<clang::ASTContext*, lldb_private::TypeSystemClang*>::Lookup(clang::ASTContext*)
Line
Count
Source
35
2.19M
  _ValueType Lookup(_KeyType k) {
36
2.19M
    std::lock_guard<std::mutex> guard(m_mutex);
37
2.19M
    return m_map.lookup(k);
38
2.19M
  }
lldb_private::ThreadSafeDenseMap<void*, unsigned long long>::Lookup(void*)
Line
Count
Source
35
130
  _ValueType Lookup(_KeyType k) {
36
130
    std::lock_guard<std::mutex> guard(m_mutex);
37
130
    return m_map.lookup(k);
38
130
  }
39
40
  bool Lookup(_KeyType k, _ValueType &v) {
41
    std::lock_guard<std::mutex> guard(m_mutex);
42
    auto iter = m_map.find(k), end = m_map.end();
43
    if (iter == end)
44
      return false;
45
    v = iter->second;
46
    return true;
47
  }
48
49
  void Clear() {
50
    std::lock_guard<std::mutex> guard(m_mutex);
51
    m_map.clear();
52
  }
53
54
protected:
55
  LLVMMapType m_map;
56
  std::mutex m_mutex;
57
};
58
59
} // namespace lldb_private
60
61
#endif // LLDB_UTILITY_THREADSAFEDENSEMAP_H