Coverage Report

Created: 2026-11-06 11:29

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/workdir/UnpackedTarball/harfbuzz/src/hb-map.hh
Line
Count
Source
1
/*
2
 * Copyright © 2018  Google, Inc.
3
 *
4
 *  This is part of HarfBuzz, a text shaping library.
5
 *
6
 * Permission is hereby granted, without written agreement and without
7
 * license or royalty fees, to use, copy, modify, and distribute this
8
 * software and its documentation for any purpose, provided that the
9
 * above copyright notice and the following two paragraphs appear in
10
 * all copies of this software.
11
 *
12
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
13
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
14
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
15
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
16
 * DAMAGE.
17
 *
18
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
19
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
20
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
21
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
22
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
23
 *
24
 * Google Author(s): Behdad Esfahbod
25
 */
26
27
#ifndef HB_MAP_HH
28
#define HB_MAP_HH
29
30
#include "hb.hh"
31
32
#include "hb-set.hh"
33
34
35
/*
36
 * hb_hashmap_t
37
 */
38
39
extern HB_INTERNAL const hb_codepoint_t minus_1;
40
41
template <typename K, typename V,
42
    bool minus_one = false>
43
struct hb_hashmap_t
44
{
45
  static constexpr bool realloc_move = true;
46
47
1.02M
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::hb_hashmap_t()
Line
Count
Source
47
99.1k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, unsigned int, true>::hb_hashmap_t()
Line
Count
Source
47
401k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
40.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t()
Line
Count
Source
47
101k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::hb_hashmap_t()
Line
Count
Source
47
20.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
81.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::hb_hashmap_t()
Line
Count
Source
47
40.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::hb_hashmap_t()
Line
Count
Source
47
40.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::hb_hashmap_t()
Line
Count
Source
47
101k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::hb_hashmap_t()
Line
Count
Source
47
40.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::hb_hashmap_t()
Line
Count
Source
47
20.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, double, false>::hb_hashmap_t()
Line
Count
Source
47
20.3k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::hb_hashmap_t()
Line
Count
Source
47
20.3k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::hb_hashmap_t()
48
1.02M
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::~hb_hashmap_t()
Line
Count
Source
48
99.1k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, unsigned int, true>::~hb_hashmap_t()
Line
Count
Source
48
401k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::~hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
40.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, Triple, false>::~hb_hashmap_t()
Line
Count
Source
48
101k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::~hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
20.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
81.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::~hb_hashmap_t()
Line
Count
Source
48
40.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::~hb_hashmap_t()
Line
Count
Source
48
40.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::~hb_hashmap_t()
Line
Count
Source
48
101k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::~hb_hashmap_t()
Line
Count
Source
48
40.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::~hb_hashmap_t()
Line
Count
Source
48
20.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, double, false>::~hb_hashmap_t()
Line
Count
Source
48
20.3k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::~hb_hashmap_t()
Line
Count
Source
48
20.3k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::~hb_hashmap_t()
49
50
  void _copy (const hb_hashmap_t& o)
51
20.3k
  {
52
20.3k
    if (unlikely (!o.successful))
53
0
    {
54
0
      successful = false;
55
0
      return;
56
0
    }
57
20.3k
    if (unlikely (!o.mask)) return;
58
59
0
    if (hb_is_trivially_copy_assignable (item_t))
60
0
    {
61
0
      items = (item_t *) hb_malloc2 ((o.mask + 1), sizeof (item_t));
62
0
      if (unlikely (!items))
63
0
      {
64
0
  successful = false;
65
0
  return;
66
0
      }
67
0
      population = o.population;
68
0
      occupancy = o.occupancy;
69
0
      mask = o.mask;
70
0
      prime = o.prime;
71
0
      max_chain_length = o.max_chain_length;
72
0
      memcpy (items, o.items, sizeof (item_t) * (mask + 1));
73
0
      return;
74
0
    }
75
76
0
    alloc (o.population); hb_copy (o, *this);
77
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::_copy(hb_hashmap_t<unsigned int, unsigned int, true> const&)
hb_hashmap_t<unsigned int, Triple, false>::_copy(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
51
20.3k
  {
52
20.3k
    if (unlikely (!o.successful))
53
0
    {
54
0
      successful = false;
55
0
      return;
56
0
    }
57
20.3k
    if (unlikely (!o.mask)) return;
58
59
0
    if (hb_is_trivially_copy_assignable (item_t))
60
0
    {
61
0
      items = (item_t *) hb_malloc2 ((o.mask + 1), sizeof (item_t));
62
0
      if (unlikely (!items))
63
0
      {
64
0
  successful = false;
65
0
  return;
66
0
      }
67
0
      population = o.population;
68
0
      occupancy = o.occupancy;
69
0
      mask = o.mask;
70
0
      prime = o.prime;
71
0
      max_chain_length = o.max_chain_length;
72
0
      memcpy (items, o.items, sizeof (item_t) * (mask + 1));
73
0
      return;
74
0
    }
75
76
0
    alloc (o.population); hb_copy (o, *this);
77
0
  }
78
79
0
  hb_hashmap_t (const hb_hashmap_t& o) : hb_hashmap_t () { _copy (o); }
80
  hb_hashmap_t& operator= (const hb_hashmap_t& o)
81
20.3k
  {
82
20.3k
    reset ();
83
20.3k
    if (!items) { _copy (o); return *this; }
84
0
    alloc (o.population); hb_copy (o, *this); return *this;
85
20.3k
  }
hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
81
20.3k
  {
82
20.3k
    reset ();
83
20.3k
    if (!items) { _copy (o); return *this; }
84
0
    alloc (o.population); hb_copy (o, *this); return *this;
85
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator=(hb_hashmap_t<unsigned int, unsigned int, true> const&)
86
87
0
  hb_hashmap_t (hb_hashmap_t&& o)  noexcept : hb_hashmap_t () { hb_swap (*this, o); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, hb_set_t, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, Triple, false>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::hb_hashmap_t(hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::hb_hashmap_t(hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, graph::Lookup*, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::hb_hashmap_t(hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>&&)
88
0
  hb_hashmap_t& operator= (hb_hashmap_t&& o)   noexcept { hb_swap (*this, o); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator=(hb_hashmap_t<unsigned int, unsigned int, true>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::operator=(hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&&)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::operator=(hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::operator=(hb_hashmap_t<unsigned int, unsigned int, false>&&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::operator=(hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&&)
89
90
  hb_hashmap_t (std::initializer_list<hb_pair_t<K, V>> lst) : hb_hashmap_t ()
91
  {
92
    for (auto&& item : lst)
93
      set (item.first, item.second);
94
  }
95
  template <typename Iterable,
96
      hb_requires (hb_is_iterable (Iterable))>
97
0
  hb_hashmap_t (const Iterable &o) : hb_hashmap_t ()
98
0
  {
99
0
    auto iter = hb_iter (o);
100
0
    if (iter.is_random_access_iterator || iter.has_fast_len)
101
0
      alloc (hb_len (iter));
102
0
    hb_copy (iter, *this);
103
0
  }
104
105
  struct item_t
106
  {
107
    K key;
108
    uint32_t is_real_ : 1;
109
    uint32_t is_used_ : 1;
110
    uint32_t hash : 30;
111
    V value;
112
113
0
    item_t () : key (),
114
346k
    is_real_ (false), is_used_ (false),
115
346k
    hash (0),
116
346k
    value () {}
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::item_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::item_t()
Line
Count
Source
114
346k
    is_real_ (false), is_used_ (false),
115
346k
    hash (0),
116
346k
    value () {}
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::item_t()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::item_t()
117
118
    // Needed for https://github.com/harfbuzz/harfbuzz/issues/4138
119
0
    K& get_key () { return key; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::get_key()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::get_key()
120
718k
    V& get_value () { return value; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::get_value()
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_value()
Line
Count
Source
120
415k
    V& get_value () { return value; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::get_value()
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_value()
Line
Count
Source
120
302k
    V& get_value () { return value; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::get_value()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::get_value()
121
122
1.59G
    bool is_used () const { return is_used_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_used() const
Line
Count
Source
122
1.59G
    bool is_used () const { return is_used_; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::is_used() const
Line
Count
Source
122
393k
    bool is_used () const { return is_used_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::is_used() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::is_used() const
Line
Count
Source
122
1.23M
    bool is_used () const { return is_used_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::is_used() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::is_used() const
Line
Count
Source
122
507k
    bool is_used () const { return is_used_; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::is_used() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::is_used() const
123
423M
    void set_used (bool is_used) { is_used_ = is_used; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::set_used(bool)
Line
Count
Source
123
422M
    void set_used (bool is_used) { is_used_ = is_used; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::set_used(bool)
Line
Count
Source
123
127k
    void set_used (bool is_used) { is_used_ = is_used; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::set_used(bool)
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::set_used(bool)
Line
Count
Source
123
339k
    void set_used (bool is_used) { is_used_ = is_used; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::set_used(bool)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::set_used(bool)
Line
Count
Source
123
148k
    void set_used (bool is_used) { is_used_ = is_used; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::set_used(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::set_used(bool)
124
423M
    void set_real (bool is_real) { is_real_ = is_real; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::set_real(bool)
Line
Count
Source
124
422M
    void set_real (bool is_real) { is_real_ = is_real; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::set_real(bool)
Line
Count
Source
124
127k
    void set_real (bool is_real) { is_real_ = is_real; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::set_real(bool)
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::set_real(bool)
Line
Count
Source
124
339k
    void set_real (bool is_real) { is_real_ = is_real; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::set_real(bool)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::set_real(bool)
Line
Count
Source
124
148k
    void set_real (bool is_real) { is_real_ = is_real; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::set_real(bool)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::set_real(bool)
125
936M
    bool is_real () const { return is_real_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_real() const
Line
Count
Source
125
934M
    bool is_real () const { return is_real_; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::is_real() const
Line
Count
Source
125
130k
    bool is_real () const { return is_real_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::is_real() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::is_real() const
Line
Count
Source
125
1.60M
    bool is_real () const { return is_real_; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::is_real() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::is_real() const
Line
Count
Source
125
155k
    bool is_real () const { return is_real_; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::is_real() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::is_real() const
126
127
    template <bool v = minus_one,
128
        hb_enable_if (v == false)>
129
307k
    static inline const V& default_value () { return Null(V); };
_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKjv
Line
Count
Source
129
70.6k
    static inline const V& default_value () { return Null(V); };
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10shared_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj15TripleDistancesLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj6TripleLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
_ZN12hb_hashmap_tIj17face_table_info_tLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Line
Count
Source
129
236k
    static inline const V& default_value () { return Null(V); };
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10unique_ptrI9hb_blob_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjPN5graph6LookupELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS2_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj8hb_set_tLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjjLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKjv
Unexecuted instantiation: _ZN12hb_hashmap_tIj10hb_array_tIKcELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS2_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj9hb_pair_tIjiELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS1_v
130
    template <bool v = minus_one,
131
        hb_enable_if (v == true)>
132
    static inline const V& default_value ()
133
5.68M
    {
134
5.68M
      static_assert (hb_is_same (V, hb_codepoint_t), "");
135
5.68M
      return minus_1;
136
5.68M
    };
_ZN12hb_hashmap_tIjjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
Line
Count
Source
133
5.68M
    {
134
5.68M
      static_assert (hb_is_same (V, hb_codepoint_t), "");
135
5.68M
      return minus_1;
136
5.68M
    };
Unexecuted instantiation: _ZN12hb_hashmap_tI10hb_array_tIKcEjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
137
138
874M
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::operator==(unsigned int const&) const
Line
Count
Source
138
874M
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::operator==(hb_serialize_context_t::object_t const* const&) const
Line
Count
Source
138
9.70k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::operator==(unsigned long const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::item_t::operator==(hb::shared_ptr<hb_map_t> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::operator==(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::item_t::operator==(hb_hashmap_t<unsigned int, Triple, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::item_t::operator==(hb_vector_t<int, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::item_t::operator==(hb_set_t const* const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::item_t::operator==(unsigned long const&) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::item_t::operator==(OT::hb_depend_context_t::recurse_key_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::item_t::operator==(OT::hb_depend_context_t::glyph_set_cache_key_t const&) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::item_t::operator==(OT::hb_depend_context_t::context_set_cache_key_t const&) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::operator==(unsigned int const&) const
Line
Count
Source
138
314k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::item_t::operator==(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&) const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::item_t::operator==(OT::SVG::svg_id_span_t const&) const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::item_t::operator==(unsigned int const&) const
Line
Count
Source
138
139k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::item_t::operator==(graph::overflow_record_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::item_t::operator==(hb_array_t<char const> const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::operator==(hb_vector_t<bool, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::item_t::operator==(hb_vector_t<bool, false> const* const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::item_t::operator==(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::item_t::operator==(unsigned int const&) const
139
    bool operator == (const item_t &o) const { return *this == o.key; }
140
142k
    hb_pair_t<K, V> get_pair() const { return hb_pair_t<K, V> (key, value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::item_t::get_pair() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_pair() const
Line
Count
Source
140
142k
    hb_pair_t<K, V> get_pair() const { return hb_pair_t<K, V> (key, value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::get_pair() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::item_t::get_pair() const
141
0
    hb_pair_t<const K &, V &> get_pair_ref() { return hb_pair_t<const K &, V &> (key, value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::item_t::get_pair_ref()
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::item_t::get_pair_ref()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::get_pair_ref()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::item_t::get_pair_ref()
142
143
    uint32_t total_hash () const
144
0
    { return (hash * 31u) + hb_hash (value); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::item_t::total_hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::item_t::total_hash() const
145
146
    static constexpr bool is_trivially_constructible = (hb_is_trivially_constructible(K) && hb_is_trivially_constructible(V));
147
  };
148
149
  hb_object_header_t header;
150
  bool successful; /* Allocations successful */
151
  unsigned short max_chain_length;
152
  unsigned int population; /* Not including tombstones. */
153
  unsigned int occupancy; /* Including tombstones. */
154
  unsigned int mask;
155
  unsigned int prime;
156
  item_t *items;
157
158
  friend void swap (hb_hashmap_t& a, hb_hashmap_t& b) noexcept
159
0
  {
160
0
    if (unlikely (!a.successful || !b.successful))
161
0
      return;
162
0
    hb_swap (a.max_chain_length, b.max_chain_length);
163
0
    hb_swap (a.population, b.population);
164
0
    hb_swap (a.occupancy, b.occupancy);
165
0
    hb_swap (a.mask, b.mask);
166
0
    hb_swap (a.prime, b.prime);
167
0
    hb_swap (a.items, b.items);
168
0
  }
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, unsigned int, true>&, hb_hashmap_t<unsigned int, unsigned int, true>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, Triple, false>&, hb_hashmap_t<unsigned int, Triple, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&, hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&, hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, unsigned int, false>&, hb_hashmap_t<unsigned int, unsigned int, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, hb_set_t, false>&, hb_hashmap_t<unsigned int, hb_set_t, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&, hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, graph::Lookup*, false>&, hb_hashmap_t<unsigned int, graph::Lookup*, false>&)
Unexecuted instantiation: swap(hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>&, hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>&)
169
  void init ()
170
1.14M
  {
171
1.14M
    hb_object_init (this);
172
173
1.14M
    successful = true;
174
1.14M
    max_chain_length = 0;
175
1.14M
    population = occupancy = 0;
176
1.14M
    mask = 0;
177
1.14M
    prime = 0;
178
1.14M
    items = nullptr;
179
1.14M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::init()
Line
Count
Source
170
401k
  {
171
401k
    hb_object_init (this);
172
173
401k
    successful = true;
174
401k
    max_chain_length = 0;
175
401k
    population = occupancy = 0;
176
401k
    mask = 0;
177
401k
    prime = 0;
178
401k
    items = nullptr;
179
401k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::init()
Line
Count
Source
170
198k
  {
171
198k
    hb_object_init (this);
172
173
198k
    successful = true;
174
198k
    max_chain_length = 0;
175
198k
    population = occupancy = 0;
176
198k
    mask = 0;
177
198k
    prime = 0;
178
198k
    items = nullptr;
179
198k
  }
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::init()
Line
Count
Source
170
20.3k
  {
171
20.3k
    hb_object_init (this);
172
173
20.3k
    successful = true;
174
20.3k
    max_chain_length = 0;
175
20.3k
    population = occupancy = 0;
176
20.3k
    mask = 0;
177
20.3k
    prime = 0;
178
20.3k
    items = nullptr;
179
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::init()
hb_hashmap_t<unsigned int, Triple, false>::init()
Line
Count
Source
170
101k
  {
171
101k
    hb_object_init (this);
172
173
101k
    successful = true;
174
101k
    max_chain_length = 0;
175
101k
    population = occupancy = 0;
176
101k
    mask = 0;
177
101k
    prime = 0;
178
101k
    items = nullptr;
179
101k
  }
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::init()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::init()
Line
Count
Source
170
40.6k
  {
171
40.6k
    hb_object_init (this);
172
173
40.6k
    successful = true;
174
40.6k
    max_chain_length = 0;
175
40.6k
    population = occupancy = 0;
176
40.6k
    mask = 0;
177
40.6k
    prime = 0;
178
40.6k
    items = nullptr;
179
40.6k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::init()
Line
Count
Source
170
20.3k
  {
171
20.3k
    hb_object_init (this);
172
173
20.3k
    successful = true;
174
20.3k
    max_chain_length = 0;
175
20.3k
    population = occupancy = 0;
176
20.3k
    mask = 0;
177
20.3k
    prime = 0;
178
20.3k
    items = nullptr;
179
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::init()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::init()
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::init()
Line
Count
Source
170
81.3k
  {
171
81.3k
    hb_object_init (this);
172
173
81.3k
    successful = true;
174
81.3k
    max_chain_length = 0;
175
81.3k
    population = occupancy = 0;
176
81.3k
    mask = 0;
177
81.3k
    prime = 0;
178
81.3k
    items = nullptr;
179
81.3k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::init()
Line
Count
Source
170
40.6k
  {
171
40.6k
    hb_object_init (this);
172
173
40.6k
    successful = true;
174
40.6k
    max_chain_length = 0;
175
40.6k
    population = occupancy = 0;
176
40.6k
    mask = 0;
177
40.6k
    prime = 0;
178
40.6k
    items = nullptr;
179
40.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::init()
Line
Count
Source
170
40.6k
  {
171
40.6k
    hb_object_init (this);
172
173
40.6k
    successful = true;
174
40.6k
    max_chain_length = 0;
175
40.6k
    population = occupancy = 0;
176
40.6k
    mask = 0;
177
40.6k
    prime = 0;
178
40.6k
    items = nullptr;
179
40.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::init()
Line
Count
Source
170
101k
  {
171
101k
    hb_object_init (this);
172
173
101k
    successful = true;
174
101k
    max_chain_length = 0;
175
101k
    population = occupancy = 0;
176
101k
    mask = 0;
177
101k
    prime = 0;
178
101k
    items = nullptr;
179
101k
  }
hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::init()
Line
Count
Source
170
40.6k
  {
171
40.6k
    hb_object_init (this);
172
173
40.6k
    successful = true;
174
40.6k
    max_chain_length = 0;
175
40.6k
    population = occupancy = 0;
176
40.6k
    mask = 0;
177
40.6k
    prime = 0;
178
40.6k
    items = nullptr;
179
40.6k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::init()
Line
Count
Source
170
20.3k
  {
171
20.3k
    hb_object_init (this);
172
173
20.3k
    successful = true;
174
20.3k
    max_chain_length = 0;
175
20.3k
    population = occupancy = 0;
176
20.3k
    mask = 0;
177
20.3k
    prime = 0;
178
20.3k
    items = nullptr;
179
20.3k
  }
hb_hashmap_t<unsigned int, double, false>::init()
Line
Count
Source
170
20.3k
  {
171
20.3k
    hb_object_init (this);
172
173
20.3k
    successful = true;
174
20.3k
    max_chain_length = 0;
175
20.3k
    population = occupancy = 0;
176
20.3k
    mask = 0;
177
20.3k
    prime = 0;
178
20.3k
    items = nullptr;
179
20.3k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::init()
Line
Count
Source
170
20.3k
  {
171
20.3k
    hb_object_init (this);
172
173
20.3k
    successful = true;
174
20.3k
    max_chain_length = 0;
175
20.3k
    population = occupancy = 0;
176
20.3k
    mask = 0;
177
20.3k
    prime = 0;
178
20.3k
    items = nullptr;
179
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::init()
180
  void fini ()
181
1.24M
  {
182
1.24M
    hb_object_fini (this);
183
184
1.24M
    if (likely (items))
185
201k
    {
186
201k
      unsigned size = mask + 1;
187
1.27G
      for (unsigned i = 0; i < size; i++)
188
1.27G
  items[i].~item_t ();
189
201k
      hb_free (items);
190
201k
      items = nullptr;
191
201k
    }
192
1.24M
    population = occupancy = 0;
193
1.24M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::fini()
Line
Count
Source
181
401k
  {
182
401k
    hb_object_fini (this);
183
184
401k
    if (likely (items))
185
150k
    {
186
150k
      unsigned size = mask + 1;
187
1.27G
      for (unsigned i = 0; i < size; i++)
188
1.27G
  items[i].~item_t ();
189
150k
      hb_free (items);
190
150k
      items = nullptr;
191
150k
    }
192
401k
    population = occupancy = 0;
193
401k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fini()
Line
Count
Source
181
297k
  {
182
297k
    hb_object_fini (this);
183
184
297k
    if (likely (items))
185
11.7k
    {
186
11.7k
      unsigned size = mask + 1;
187
197k
      for (unsigned i = 0; i < size; i++)
188
185k
  items[i].~item_t ();
189
11.7k
      hb_free (items);
190
11.7k
      items = nullptr;
191
11.7k
    }
192
297k
    population = occupancy = 0;
193
297k
  }
hb_hashmap_t<unsigned int, Triple, false>::fini()
Line
Count
Source
181
101k
  {
182
101k
    hb_object_fini (this);
183
184
101k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
101k
    population = occupancy = 0;
193
101k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::fini()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::fini()
Line
Count
Source
181
20.3k
  {
182
20.3k
    hb_object_fini (this);
183
184
20.3k
    if (likely (items))
185
20.3k
    {
186
20.3k
      unsigned size = mask + 1;
187
274k
      for (unsigned i = 0; i < size; i++)
188
254k
  items[i].~item_t ();
189
20.3k
      hb_free (items);
190
20.3k
      items = nullptr;
191
20.3k
    }
192
20.3k
    population = occupancy = 0;
193
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::fini()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::fini()
Line
Count
Source
181
40.6k
  {
182
40.6k
    hb_object_fini (this);
183
184
40.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
40.6k
    population = occupancy = 0;
193
40.6k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::fini()
Line
Count
Source
181
20.3k
  {
182
20.3k
    hb_object_fini (this);
183
184
20.3k
    if (likely (items))
185
18.3k
    {
186
18.3k
      unsigned size = mask + 1;
187
452k
      for (unsigned i = 0; i < size; i++)
188
433k
  items[i].~item_t ();
189
18.3k
      hb_free (items);
190
18.3k
      items = nullptr;
191
18.3k
    }
192
20.3k
    population = occupancy = 0;
193
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::fini()
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::fini()
Line
Count
Source
181
81.3k
  {
182
81.3k
    hb_object_fini (this);
183
184
81.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
81.3k
    population = occupancy = 0;
193
81.3k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::fini()
Line
Count
Source
181
40.6k
  {
182
40.6k
    hb_object_fini (this);
183
184
40.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
40.6k
    population = occupancy = 0;
193
40.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fini()
Line
Count
Source
181
40.6k
  {
182
40.6k
    hb_object_fini (this);
183
184
40.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
40.6k
    population = occupancy = 0;
193
40.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fini()
Line
Count
Source
181
101k
  {
182
101k
    hb_object_fini (this);
183
184
101k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
101k
    population = occupancy = 0;
193
101k
  }
hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::fini()
Line
Count
Source
181
40.6k
  {
182
40.6k
    hb_object_fini (this);
183
184
40.6k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
40.6k
    population = occupancy = 0;
193
40.6k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::fini()
Line
Count
Source
181
20.3k
  {
182
20.3k
    hb_object_fini (this);
183
184
20.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
20.3k
    population = occupancy = 0;
193
20.3k
  }
hb_hashmap_t<unsigned int, double, false>::fini()
Line
Count
Source
181
20.3k
  {
182
20.3k
    hb_object_fini (this);
183
184
20.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
20.3k
    population = occupancy = 0;
193
20.3k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fini()
Line
Count
Source
181
20.3k
  {
182
20.3k
    hb_object_fini (this);
183
184
20.3k
    if (likely (items))
185
0
    {
186
0
      unsigned size = mask + 1;
187
0
      for (unsigned i = 0; i < size; i++)
188
0
  items[i].~item_t ();
189
0
      hb_free (items);
190
0
      items = nullptr;
191
0
    }
192
20.3k
    population = occupancy = 0;
193
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::fini()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::fini()
194
195
  hb_hashmap_t& reset ()
196
20.3k
  {
197
20.3k
    successful = true;
198
20.3k
    clear ();
199
20.3k
    return *this;
200
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::reset()
hb_hashmap_t<unsigned int, Triple, false>::reset()
Line
Count
Source
196
20.3k
  {
197
20.3k
    successful = true;
198
20.3k
    clear ();
199
20.3k
    return *this;
200
20.3k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::reset()
201
202
1.11M
  bool in_error () const { return !successful; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::in_error() const
Line
Count
Source
202
178k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, Triple, false>::in_error() const
Line
Count
Source
202
121k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, unsigned int, true>::in_error() const
Line
Count
Source
202
284k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::in_error() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::in_error() const
Line
Count
Source
202
111k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::in_error() const
Line
Count
Source
202
40.6k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::in_error() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::in_error() const
Line
Count
Source
202
40.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, face_table_info_t, false>::in_error() const
Line
Count
Source
202
12.5k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::in_error() const
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::in_error() const
Line
Count
Source
202
81.3k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_error() const
Line
Count
Source
202
40.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::in_error() const
Line
Count
Source
202
40.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_error() const
Line
Count
Source
202
101k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, TripleDistances, false>::in_error() const
Line
Count
Source
202
20.3k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, double, false>::in_error() const
Line
Count
Source
202
20.3k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_error() const
Line
Count
Source
202
20.3k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::in_error() const
203
204
  bool alloc (unsigned new_population = 0)
205
438k
  {
206
438k
    if (unlikely (!successful)) return false;
207
438k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
438k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
397k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
397k
    unsigned int new_size = 1u << power;
220
397k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
397k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
397k
    if (!item_t::is_trivially_constructible)
227
31.8k
      for (auto &_ : hb_iter (new_items, new_size))
228
346k
  new (&_) item_t ();
229
366k
    else
230
366k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
397k
    unsigned int old_size = size ();
233
397k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
397k
    population = occupancy = 0;
237
397k
    mask = new_size - 1;
238
397k
    prime = prime_for (power);
239
397k
    max_chain_length = power * 2;
240
397k
    items = new_items;
241
242
    /* Insert back old items. */
243
114M
    for (unsigned int i = 0; i < old_size; i++)
244
113M
    {
245
113M
      if (old_items[i].is_real ())
246
75.7M
      {
247
75.7M
  set_with_hash (std::move (old_items[i].key),
248
75.7M
           old_items[i].hash,
249
75.7M
           std::move (old_items[i].value));
250
75.7M
      }
251
113M
    }
252
114M
    for (unsigned int i = 0; i < old_size; i++)
253
113M
      old_items[i].~item_t ();
254
255
397k
    hb_free (old_items);
256
257
397k
    return true;
258
397k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::alloc(unsigned int)
Line
Count
Source
205
23.1k
  {
206
23.1k
    if (unlikely (!successful)) return false;
207
23.1k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
23.1k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
23.1k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
23.1k
    unsigned int new_size = 1u << power;
220
23.1k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
23.1k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
23.1k
    if (!item_t::is_trivially_constructible)
227
0
      for (auto &_ : hb_iter (new_items, new_size))
228
0
  new (&_) item_t ();
229
23.1k
    else
230
23.1k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
23.1k
    unsigned int old_size = size ();
233
23.1k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
23.1k
    population = occupancy = 0;
237
23.1k
    mask = new_size - 1;
238
23.1k
    prime = prime_for (power);
239
23.1k
    max_chain_length = power * 2;
240
23.1k
    items = new_items;
241
242
    /* Insert back old items. */
243
114k
    for (unsigned int i = 0; i < old_size; i++)
244
91.1k
    {
245
91.1k
      if (old_items[i].is_real ())
246
56.9k
      {
247
56.9k
  set_with_hash (std::move (old_items[i].key),
248
56.9k
           old_items[i].hash,
249
56.9k
           std::move (old_items[i].value));
250
56.9k
      }
251
91.1k
    }
252
114k
    for (unsigned int i = 0; i < old_size; i++)
253
91.1k
      old_items[i].~item_t ();
254
255
23.1k
    hb_free (old_items);
256
257
23.1k
    return true;
258
23.1k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, unsigned int, true>::alloc(unsigned int)
Line
Count
Source
205
340k
  {
206
340k
    if (unlikely (!successful)) return false;
207
340k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
340k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
300k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
300k
    unsigned int new_size = 1u << power;
220
300k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
300k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
300k
    if (!item_t::is_trivially_constructible)
227
0
      for (auto &_ : hb_iter (new_items, new_size))
228
0
  new (&_) item_t ();
229
300k
    else
230
300k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
300k
    unsigned int old_size = size ();
233
300k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
300k
    population = occupancy = 0;
237
300k
    mask = new_size - 1;
238
300k
    prime = prime_for (power);
239
300k
    max_chain_length = power * 2;
240
300k
    items = new_items;
241
242
    /* Insert back old items. */
243
113M
    for (unsigned int i = 0; i < old_size; i++)
244
113M
    {
245
113M
      if (old_items[i].is_real ())
246
75.4M
      {
247
75.4M
  set_with_hash (std::move (old_items[i].key),
248
75.4M
           old_items[i].hash,
249
75.4M
           std::move (old_items[i].value));
250
75.4M
      }
251
113M
    }
252
113M
    for (unsigned int i = 0; i < old_size; i++)
253
113M
      old_items[i].~item_t ();
254
255
300k
    hb_free (old_items);
256
257
300k
    return true;
258
300k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::alloc(unsigned int)
Line
Count
Source
205
42.8k
  {
206
42.8k
    if (unlikely (!successful)) return false;
207
42.8k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
42.8k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
42.8k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
42.8k
    unsigned int new_size = 1u << power;
220
42.8k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
42.8k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
42.8k
    if (!item_t::is_trivially_constructible)
227
0
      for (auto &_ : hb_iter (new_items, new_size))
228
0
  new (&_) item_t ();
229
42.8k
    else
230
42.8k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
42.8k
    unsigned int old_size = size ();
233
42.8k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
42.8k
    population = occupancy = 0;
237
42.8k
    mask = new_size - 1;
238
42.8k
    prime = prime_for (power);
239
42.8k
    max_chain_length = power * 2;
240
42.8k
    items = new_items;
241
242
    /* Insert back old items. */
243
329k
    for (unsigned int i = 0; i < old_size; i++)
244
286k
    {
245
286k
      if (old_items[i].is_real ())
246
179k
      {
247
179k
  set_with_hash (std::move (old_items[i].key),
248
179k
           old_items[i].hash,
249
179k
           std::move (old_items[i].value));
250
179k
      }
251
286k
    }
252
329k
    for (unsigned int i = 0; i < old_size; i++)
253
286k
      old_items[i].~item_t ();
254
255
42.8k
    hb_free (old_items);
256
257
42.8k
    return true;
258
42.8k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::alloc(unsigned int)
Line
Count
Source
205
31.8k
  {
206
31.8k
    if (unlikely (!successful)) return false;
207
31.8k
    if (unlikely (population > 0x3FFFFFFFu || new_population > 0x3FFFFFFFu))
208
0
    {
209
      // Population sizes >0x3FFFFFFF will result in power
210
      // being larger than 31, which in turn leads to a new size
211
      // that overflows u32.
212
0
      successful = false;
213
0
      return false;
214
0
    }
215
216
31.8k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
217
218
31.8k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
219
31.8k
    unsigned int new_size = 1u << power;
220
31.8k
    item_t *new_items = (item_t *) hb_malloc2 ((size_t) new_size, sizeof (item_t));
221
31.8k
    if (unlikely (!new_items))
222
0
    {
223
0
      successful = false;
224
0
      return false;
225
0
    }
226
31.8k
    if (!item_t::is_trivially_constructible)
227
31.8k
      for (auto &_ : hb_iter (new_items, new_size))
228
346k
  new (&_) item_t ();
229
0
    else
230
0
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
231
232
31.8k
    unsigned int old_size = size ();
233
31.8k
    item_t *old_items = items;
234
235
    /* Switch to new, empty, array. */
236
31.8k
    population = occupancy = 0;
237
31.8k
    mask = new_size - 1;
238
31.8k
    prime = prime_for (power);
239
31.8k
    max_chain_length = power * 2;
240
31.8k
    items = new_items;
241
242
    /* Insert back old items. */
243
123k
    for (unsigned int i = 0; i < old_size; i++)
244
91.8k
    {
245
91.8k
      if (old_items[i].is_real ())
246
57.3k
      {
247
57.3k
  set_with_hash (std::move (old_items[i].key),
248
57.3k
           old_items[i].hash,
249
57.3k
           std::move (old_items[i].value));
250
57.3k
      }
251
91.8k
    }
252
123k
    for (unsigned int i = 0; i < old_size; i++)
253
91.8k
      old_items[i].~item_t ();
254
255
31.8k
    hb_free (old_items);
256
257
31.8k
    return true;
258
31.8k
  }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::alloc(unsigned int)
259
260
  template <typename T>
261
  bool in_storage (const T &v) const
262
558k
  {
263
558k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
558k
    return items &&
265
391k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
558k
  }
bool hb_hashmap_t<unsigned int, unsigned int, true>::in_storage<unsigned int>(unsigned int const&) const
Line
Count
Source
262
363k
  {
263
363k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
363k
    return items &&
265
296k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
363k
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::in_storage<hb_serialize_context_t::object_t*>(hb_serialize_context_t::object_t* const&) const
Line
Count
Source
262
23.1k
  {
263
23.1k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
23.1k
    return items &&
265
11.3k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
23.1k
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Line
Count
Source
262
23.1k
  {
263
23.1k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
23.1k
    return items &&
265
11.3k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
23.1k
  }
Unexecuted instantiation: bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::in_storage<hb_serialize_context_t::object_t const*>(hb_serialize_context_t::object_t const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::in_storage<hb_vector_t<unsigned int, false> >(hb_vector_t<unsigned int, false> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::in_storage<hb::unique_ptr<hb_set_t> >(hb::unique_ptr<hb_set_t> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::in_storage<Triple>(Triple const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::in_storage<unsigned long>(unsigned long const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::in_storage<hb_pair_t<unsigned int, int> >(hb_pair_t<unsigned int, int> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::in_storage<hb::shared_ptr<hb_map_t> >(hb::shared_ptr<hb_map_t> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::in_storage<hb::shared_ptr<hb_set_t> >(hb::shared_ptr<hb_set_t> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_storage<OT::Feature const*>(OT::Feature const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::in_storage<hb_pair_t<unsigned int&, int&> >(hb_pair_t<unsigned int&, int&> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::in_storage<hb_hashmap_t<unsigned int, Triple, false> const*>(hb_hashmap_t<unsigned int, Triple, false> const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::in_storage<hb_vector_t<int, false> const*>(hb_vector_t<int, false> const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::in_storage<hb_vector_t<int, false> const*>(hb_vector_t<int, false> const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::in_storage<hb_set_t const*>(hb_set_t const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::in_storage<unsigned long>(unsigned long const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::in_storage<OT::hb_depend_context_t::recurse_key_t>(OT::hb_depend_context_t::recurse_key_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::in_storage<bool>(bool const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::in_storage<bool>(bool const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::in_storage<hb_set_t>(hb_set_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::in_storage<OT::hb_depend_context_t::glyph_set_cache_key_t>(OT::hb_depend_context_t::glyph_set_cache_key_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::in_storage<OT::hb_depend_context_t::context_set_cache_key_t>(OT::hb_depend_context_t::context_set_cache_key_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::in_storage<unsigned int>(unsigned int const&) const
Line
Count
Source
262
42.8k
  {
263
42.8k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
42.8k
    return items &&
265
24.4k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
42.8k
  }
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::in_storage<face_table_info_t>(face_table_info_t const&) const
Line
Count
Source
262
42.8k
  {
263
42.8k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
42.8k
    return items &&
265
24.4k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
42.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::in_storage<hb_array_t<OT::NumType<true, unsigned int, 4u> const> >(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::in_storage<OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> >(OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::in_storage<OT::SVG::svg_id_span_t>(OT::SVG::svg_id_span_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::in_storage<hb_pair_t<unsigned int, unsigned int> >(hb_pair_t<unsigned int, unsigned int> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_storage<hb_pair_t<unsigned int, int&> >(hb_pair_t<unsigned int, int&> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_storage<hb_pair_t<unsigned int, int> >(hb_pair_t<unsigned int, int> const&) const
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::in_storage<unsigned int>(unsigned int const&) const
Line
Count
Source
262
31.8k
  {
263
31.8k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
31.8k
    return items &&
265
11.4k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
31.8k
  }
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::in_storage<hb::unique_ptr<hb_blob_t> >(hb::unique_ptr<hb_blob_t> const&) const
Line
Count
Source
262
31.8k
  {
263
31.8k
    uintptr_t p = (uintptr_t) std::addressof (v);
264
31.8k
    return items &&
265
11.4k
     (uintptr_t) items <= p && p < (uintptr_t) (items + size ());
266
31.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::in_storage<graph::overflow_record_t>(graph::overflow_record_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::in_storage<bool>(bool const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::in_storage<graph::Lookup*>(graph::Lookup* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::in_storage<hb_array_t<char const> >(hb_array_t<char const> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::in_storage<hb_vector_t<bool, false> const*>(hb_vector_t<bool, false> const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::in_storage<hb_vector_t<bool, false> const*>(hb_vector_t<bool, false> const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::in_storage<hb_vector_t<unsigned char, false> >(hb_vector_t<unsigned char, false> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::in_storage<hb_pair_t<OT::Feature const*, void const*&> >(hb_pair_t<OT::Feature const*, void const*&> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::in_storage<hb_pair_t<void const*, void const*> >(hb_pair_t<void const*, void const*> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::in_storage<hb_pair_t<double&, double&> >(hb_pair_t<double&, double&> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::in_storage<hb_pair_t<double, double> >(hb_pair_t<double, double> const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::in_storage<double>(double const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::in_storage<TripleDistances>(TripleDistances const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_storage<contour_point_vector_t>(contour_point_vector_t const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::in_storage<unsigned int>(unsigned int const&) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::in_storage<hb_array_t<char const> >(hb_array_t<char const> const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::in_storage<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false>*>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false>* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::in_storage<int>(int const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::in_storage<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::in_storage<unsigned int>(unsigned int const&) const
267
268
  template <typename KK, typename VV>
269
  bool set_with_hash (KK&& key, uint32_t hash, VV&& value, bool overwrite = true)
270
423M
  {
271
423M
    if (unlikely (!successful)) return false;
272
423M
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
279k
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
279k
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
279k
      if (unlikely (!alloc ())) return false;
285
279k
    }
286
287
423M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
423M
    unsigned int tombstone = (unsigned int) -1;
289
423M
    unsigned int i = hash % prime;
290
423M
    unsigned length = 0;
291
423M
    unsigned step = 0;
292
903M
    while (items[i].is_used ())
293
609M
    {
294
609M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
609M
    items[i] == key)
296
129M
      {
297
129M
        if (!overwrite)
298
0
    return false;
299
129M
        else
300
129M
    break;
301
129M
      }
302
479M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
479M
      i = (i + ++step) & mask;
305
479M
      length++;
306
479M
    }
307
308
423M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
423M
    if (item.is_used ())
311
129M
    {
312
129M
      occupancy--;
313
129M
      population -= item.is_real ();
314
129M
    }
315
316
423M
    item.key = std::forward<KK> (key);
317
423M
    item.value = std::forward<VV> (value);
318
423M
    item.hash = hash;
319
423M
    item.set_used (true);
320
423M
    item.set_real (true);
321
322
423M
    occupancy++;
323
423M
    population++;
324
325
423M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
191
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
423M
    return true;
329
423M
  }
bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, unsigned int const&>(unsigned int const&, unsigned int, unsigned int const&, bool)
Line
Count
Source
270
802k
  {
271
802k
    if (unlikely (!successful)) return false;
272
802k
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
0
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
0
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
0
      if (unlikely (!alloc ())) return false;
285
0
    }
286
287
802k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
802k
    unsigned int tombstone = (unsigned int) -1;
289
802k
    unsigned int i = hash % prime;
290
802k
    unsigned length = 0;
291
802k
    unsigned step = 0;
292
860k
    while (items[i].is_used ())
293
57.1k
    {
294
57.1k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
57.1k
    items[i] == key)
296
0
      {
297
0
        if (!overwrite)
298
0
    return false;
299
0
        else
300
0
    break;
301
0
      }
302
57.1k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
57.1k
      i = (i + ++step) & mask;
305
57.1k
      length++;
306
57.1k
    }
307
308
802k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
802k
    if (item.is_used ())
311
0
    {
312
0
      occupancy--;
313
0
      population -= item.is_real ();
314
0
    }
315
316
802k
    item.key = std::forward<KK> (key);
317
802k
    item.value = std::forward<VV> (value);
318
802k
    item.hash = hash;
319
802k
    item.set_used (true);
320
802k
    item.set_real (true);
321
322
802k
    occupancy++;
323
802k
    population++;
324
325
802k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
802k
    return true;
329
802k
  }
bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int, unsigned int>(unsigned int&&, unsigned int, unsigned int&&, bool)
Line
Count
Source
270
75.4M
  {
271
75.4M
    if (unlikely (!successful)) return false;
272
75.4M
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
0
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
0
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
0
      if (unlikely (!alloc ())) return false;
285
0
    }
286
287
75.4M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
75.4M
    unsigned int tombstone = (unsigned int) -1;
289
75.4M
    unsigned int i = hash % prime;
290
75.4M
    unsigned length = 0;
291
75.4M
    unsigned step = 0;
292
126M
    while (items[i].is_used ())
293
51.4M
    {
294
51.4M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
51.4M
    items[i] == key)
296
0
      {
297
0
        if (!overwrite)
298
0
    return false;
299
0
        else
300
0
    break;
301
0
      }
302
51.4M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
51.4M
      i = (i + ++step) & mask;
305
51.4M
      length++;
306
51.4M
    }
307
308
75.4M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
75.4M
    if (item.is_used ())
311
0
    {
312
0
      occupancy--;
313
0
      population -= item.is_real ();
314
0
    }
315
316
75.4M
    item.key = std::forward<KK> (key);
317
75.4M
    item.value = std::forward<VV> (value);
318
75.4M
    item.hash = hash;
319
75.4M
    item.set_used (true);
320
75.4M
    item.set_real (true);
321
322
75.4M
    occupancy++;
323
75.4M
    population++;
324
325
75.4M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
75.4M
    return true;
329
75.4M
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::set_with_hash<hb_serialize_context_t::object_t*&, unsigned int&>(hb_serialize_context_t::object_t*&, unsigned int, unsigned int&, bool)
Line
Count
Source
270
70.6k
  {
271
70.6k
    if (unlikely (!successful)) return false;
272
70.6k
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
23.1k
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
23.1k
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
23.1k
      if (unlikely (!alloc ())) return false;
285
23.1k
    }
286
287
70.6k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
70.6k
    unsigned int tombstone = (unsigned int) -1;
289
70.6k
    unsigned int i = hash % prime;
290
70.6k
    unsigned length = 0;
291
70.6k
    unsigned step = 0;
292
99.8k
    while (items[i].is_used ())
293
29.2k
    {
294
29.2k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
0
    items[i] == key)
296
0
      {
297
0
        if (!overwrite)
298
0
    return false;
299
0
        else
300
0
    break;
301
0
      }
302
29.2k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
29.2k
      i = (i + ++step) & mask;
305
29.2k
      length++;
306
29.2k
    }
307
308
70.6k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
70.6k
    if (item.is_used ())
311
0
    {
312
0
      occupancy--;
313
0
      population -= item.is_real ();
314
0
    }
315
316
70.6k
    item.key = std::forward<KK> (key);
317
70.6k
    item.value = std::forward<VV> (value);
318
70.6k
    item.hash = hash;
319
70.6k
    item.set_used (true);
320
70.6k
    item.set_real (true);
321
322
70.6k
    occupancy++;
323
70.6k
    population++;
324
325
70.6k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
70.6k
    return true;
329
70.6k
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::set_with_hash<hb_serialize_context_t::object_t const*, unsigned int>(hb_serialize_context_t::object_t const*&&, unsigned int, unsigned int&&, bool)
Line
Count
Source
270
56.9k
  {
271
56.9k
    if (unlikely (!successful)) return false;
272
56.9k
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
0
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
0
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
0
      if (unlikely (!alloc ())) return false;
285
0
    }
286
287
56.9k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
56.9k
    unsigned int tombstone = (unsigned int) -1;
289
56.9k
    unsigned int i = hash % prime;
290
56.9k
    unsigned length = 0;
291
56.9k
    unsigned step = 0;
292
56.9k
    while (items[i].is_used ())
293
51
    {
294
51
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
0
    items[i] == key)
296
0
      {
297
0
        if (!overwrite)
298
0
    return false;
299
0
        else
300
0
    break;
301
0
      }
302
51
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
51
      i = (i + ++step) & mask;
305
51
      length++;
306
51
    }
307
308
56.9k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
56.9k
    if (item.is_used ())
311
0
    {
312
0
      occupancy--;
313
0
      population -= item.is_real ();
314
0
    }
315
316
56.9k
    item.key = std::forward<KK> (key);
317
56.9k
    item.value = std::forward<VV> (value);
318
56.9k
    item.hash = hash;
319
56.9k
    item.set_used (true);
320
56.9k
    item.set_real (true);
321
322
56.9k
    occupancy++;
323
56.9k
    population++;
324
325
56.9k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
56.9k
    return true;
329
56.9k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set_with_hash<unsigned int const&, hb_vector_t<unsigned int, false> >(unsigned int const&, unsigned int, hb_vector_t<unsigned int, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set_with_hash<unsigned int, hb_vector_t<unsigned int, false> >(unsigned int&&, unsigned int, hb_vector_t<unsigned int, false>&&, bool)
bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, unsigned int&>(unsigned int const&, unsigned int, unsigned int&, bool)
Line
Count
Source
270
346M
  {
271
346M
    if (unlikely (!successful)) return false;
272
346M
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
181k
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
181k
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
181k
      if (unlikely (!alloc ())) return false;
285
181k
    }
286
287
346M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
346M
    unsigned int tombstone = (unsigned int) -1;
289
346M
    unsigned int i = hash % prime;
290
346M
    unsigned length = 0;
291
346M
    unsigned step = 0;
292
774M
    while (items[i].is_used ())
293
557M
    {
294
557M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
557M
    items[i] == key)
296
129M
      {
297
129M
        if (!overwrite)
298
0
    return false;
299
129M
        else
300
129M
    break;
301
129M
      }
302
427M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
427M
      i = (i + ++step) & mask;
305
427M
      length++;
306
427M
    }
307
308
346M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
346M
    if (item.is_used ())
311
129M
    {
312
129M
      occupancy--;
313
129M
      population -= item.is_real ();
314
129M
    }
315
316
346M
    item.key = std::forward<KK> (key);
317
346M
    item.value = std::forward<VV> (value);
318
346M
    item.hash = hash;
319
346M
    item.set_used (true);
320
346M
    item.set_real (true);
321
322
346M
    occupancy++;
323
346M
    population++;
324
325
346M
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
191
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
346M
    return true;
329
346M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int, unsigned int&>(unsigned int&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, unsigned int>(unsigned int const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set_with_hash<unsigned int const&, hb::unique_ptr<hb_set_t> >(unsigned int const&, unsigned int, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set_with_hash<unsigned int, hb::unique_ptr<hb_set_t> >(unsigned int&&, unsigned int, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int, int>(unsigned int&&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int const&, Triple>(unsigned int const&, unsigned int, Triple&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int, Triple>(unsigned int&&, unsigned int, Triple&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned long, hb_pair_t<unsigned int, int> >(unsigned long&&, unsigned int, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::set_with_hash<hb::shared_ptr<hb_map_t> const&, int>(hb::shared_ptr<hb_map_t> const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::set_with_hash<hb::shared_ptr<hb_map_t>, unsigned int>(hb::shared_ptr<hb_map_t>&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::set_with_hash<unsigned int const&, hb::shared_ptr<hb_set_t>&>(unsigned int const&, unsigned int, hb::shared_ptr<hb_set_t>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::set_with_hash<unsigned int, hb::shared_ptr<hb_set_t> >(unsigned int&&, unsigned int, hb::shared_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::set_with_hash<unsigned int, OT::Feature const*>(unsigned int&&, unsigned int, OT::Feature const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int const&, Triple const&>(unsigned int const&, unsigned int, Triple const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set_with_hash<unsigned int const&, Triple&>(unsigned int const&, unsigned int, Triple&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned long const&, hb_pair_t<unsigned int, int> >(unsigned long const&, unsigned int, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned long const&, hb_pair_t<unsigned int&, int&> >(unsigned long const&, unsigned int, hb_pair_t<unsigned int&, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const* const&, int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set_with_hash<hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::set_with_hash<unsigned int, hb_vector_t<int, false> const*>(unsigned int&&, unsigned int, hb_vector_t<int, false> const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<int, false> const*, int>(hb_vector_t<int, false> const*&&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<int, false> const*, unsigned int>(hb_vector_t<int, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<int, false> const* const&, unsigned int>(hb_vector_t<int, false> const* const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::set_with_hash<hb_set_t const*, unsigned int&>(hb_set_t const*&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::set_with_hash<hb_set_t const*, unsigned int>(hb_set_t const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set_with_hash<unsigned long const&, unsigned int&>(unsigned long const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set_with_hash<unsigned long, unsigned int>(unsigned long&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::set_with_hash<OT::hb_depend_context_t::recurse_key_t const&, bool>(OT::hb_depend_context_t::recurse_key_t const&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::set_with_hash<OT::hb_depend_context_t::recurse_key_t, bool>(OT::hb_depend_context_t::recurse_key_t&&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, bool&>(unsigned int const&, unsigned int, bool&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::set_with_hash<unsigned int const&, hb_set_t>(unsigned int const&, unsigned int, hb_set_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::set_with_hash<unsigned int, hb_set_t>(unsigned int&&, unsigned int, hb_set_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int&>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int>(OT::hb_depend_context_t::glyph_set_cache_key_t&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int&>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::set_with_hash<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int>(OT::hb_depend_context_t::context_set_cache_key_t&&, unsigned int, unsigned int&&, bool)
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::set_with_hash<unsigned int const&, face_table_info_t>(unsigned int const&, unsigned int, face_table_info_t&&, bool)
Line
Count
Source
270
160k
  {
271
160k
    if (unlikely (!successful)) return false;
272
160k
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
42.8k
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
42.8k
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
42.8k
      if (unlikely (!alloc ())) return false;
285
42.8k
    }
286
287
160k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
160k
    unsigned int tombstone = (unsigned int) -1;
289
160k
    unsigned int i = hash % prime;
290
160k
    unsigned length = 0;
291
160k
    unsigned step = 0;
292
185k
    while (items[i].is_used ())
293
25.1k
    {
294
25.1k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
25.1k
    items[i] == key)
296
29
      {
297
29
        if (!overwrite)
298
0
    return false;
299
29
        else
300
29
    break;
301
29
      }
302
25.1k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
25.1k
      i = (i + ++step) & mask;
305
25.1k
      length++;
306
25.1k
    }
307
308
160k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
160k
    if (item.is_used ())
311
29
    {
312
29
      occupancy--;
313
29
      population -= item.is_real ();
314
29
    }
315
316
160k
    item.key = std::forward<KK> (key);
317
160k
    item.value = std::forward<VV> (value);
318
160k
    item.hash = hash;
319
160k
    item.set_used (true);
320
160k
    item.set_real (true);
321
322
160k
    occupancy++;
323
160k
    population++;
324
325
160k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
160k
    return true;
329
160k
  }
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::set_with_hash<unsigned int, face_table_info_t>(unsigned int&&, unsigned int, face_table_info_t&&, bool)
Line
Count
Source
270
179k
  {
271
179k
    if (unlikely (!successful)) return false;
272
179k
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
0
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
0
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
0
      if (unlikely (!alloc ())) return false;
285
0
    }
286
287
179k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
179k
    unsigned int tombstone = (unsigned int) -1;
289
179k
    unsigned int i = hash % prime;
290
179k
    unsigned length = 0;
291
179k
    unsigned step = 0;
292
235k
    while (items[i].is_used ())
293
56.7k
    {
294
56.7k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
56.7k
    items[i] == key)
296
0
      {
297
0
        if (!overwrite)
298
0
    return false;
299
0
        else
300
0
    break;
301
0
      }
302
56.7k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
56.7k
      i = (i + ++step) & mask;
305
56.7k
      length++;
306
56.7k
    }
307
308
179k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
179k
    if (item.is_used ())
311
0
    {
312
0
      occupancy--;
313
0
      population -= item.is_real ();
314
0
    }
315
316
179k
    item.key = std::forward<KK> (key);
317
179k
    item.value = std::forward<VV> (value);
318
179k
    item.hash = hash;
319
179k
    item.set_used (true);
320
179k
    item.set_real (true);
321
322
179k
    occupancy++;
323
179k
    population++;
324
325
179k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
179k
    return true;
329
179k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, int>(unsigned int const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int, unsigned int>(unsigned int&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set_with_hash<unsigned long const&, unsigned int>(unsigned long const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::set_with_hash<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int&>(hb_array_t<OT::NumType<true, unsigned int, 4u> const>&&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::set_with_hash<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int>(hb_array_t<OT::NumType<true, unsigned int, 4u> const>&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&>(unsigned int const&, unsigned int, OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::set_with_hash<OT::SVG::svg_id_span_t const&, hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, unsigned int, hb_pair_t<unsigned int, unsigned int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::set_with_hash<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t&&, unsigned int, hb_pair_t<unsigned int, unsigned int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int&, hb_pair_t<unsigned int, int&> >(unsigned int&, unsigned int, hb_pair_t<unsigned int, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int, hb_pair_t<unsigned int, int> >(unsigned int&&, unsigned int, hb_pair_t<unsigned int, int>&&, bool)
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::set_with_hash<unsigned int, hb::unique_ptr<hb_blob_t> >(unsigned int&&, unsigned int, hb::unique_ptr<hb_blob_t>&&, bool)
Line
Count
Source
270
148k
  {
271
148k
    if (unlikely (!successful)) return false;
272
148k
    if (unlikely ((occupancy + occupancy / 2) >= mask))
273
31.8k
    {
274
      /* key or value may live in our own storage, eg. m.set (k, m.get (j)).
275
       * alloc() frees that storage, so copy them out first. */
276
31.8k
      if (unlikely (in_storage (key) || in_storage (value)))
277
0
      {
278
0
  K key_copy;
279
0
  key_copy = std::forward<KK> (key);
280
0
  V value_copy;
281
0
  value_copy = std::forward<VV> (value);
282
0
  return set_with_hash (std::move (key_copy), hash, std::move (value_copy), overwrite);
283
0
      }
284
31.8k
      if (unlikely (!alloc ())) return false;
285
31.8k
    }
286
287
148k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
288
148k
    unsigned int tombstone = (unsigned int) -1;
289
148k
    unsigned int i = hash % prime;
290
148k
    unsigned length = 0;
291
148k
    unsigned step = 0;
292
212k
    while (items[i].is_used ())
293
64.0k
    {
294
64.0k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
295
64.0k
    items[i] == key)
296
0
      {
297
0
        if (!overwrite)
298
0
    return false;
299
0
        else
300
0
    break;
301
0
      }
302
64.0k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
303
0
        tombstone = i;
304
64.0k
      i = (i + ++step) & mask;
305
64.0k
      length++;
306
64.0k
    }
307
308
148k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
309
310
148k
    if (item.is_used ())
311
0
    {
312
0
      occupancy--;
313
0
      population -= item.is_real ();
314
0
    }
315
316
148k
    item.key = std::forward<KK> (key);
317
148k
    item.value = std::forward<VV> (value);
318
148k
    item.hash = hash;
319
148k
    item.set_used (true);
320
148k
    item.set_real (true);
321
322
148k
    occupancy++;
323
148k
    population++;
324
325
148k
    if (unlikely (length > max_chain_length) && occupancy > mask / 8)
326
0
      alloc (mask - 8); // This ensures we jump to next larger size
327
328
148k
    return true;
329
148k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::set_with_hash<graph::overflow_record_t const&, bool>(graph::overflow_record_t const&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::set_with_hash<graph::overflow_record_t, bool>(graph::overflow_record_t&&, unsigned int, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set_with_hash<unsigned int const&, int>(unsigned int const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, unsigned int&>(unsigned int const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, unsigned int const&>(unsigned int const&, unsigned int, unsigned int const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set_with_hash<unsigned int const&, hb_vector_t<unsigned int, false>&>(unsigned int const&, unsigned int, hb_vector_t<unsigned int, false>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::set_with_hash<unsigned int const&, graph::Lookup*&>(unsigned int const&, unsigned int, graph::Lookup*&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::set_with_hash<unsigned int, graph::Lookup*>(unsigned int&&, unsigned int, graph::Lookup*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::set_with_hash<hb_array_t<char const>, unsigned int>(hb_array_t<char const>&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::set_with_hash<hb_array_t<char const> const&, unsigned int&>(hb_array_t<char const> const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<bool, false> const* const&, unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<bool, false> const*, unsigned int>(hb_vector_t<bool, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::set_with_hash<hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, unsigned int, hb_vector_t<unsigned char, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::set_with_hash<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const*&&, unsigned int, hb_vector_t<unsigned char, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<bool, false> const* const&, int>(hb_vector_t<bool, false> const* const&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::set_with_hash<unsigned int const&, hb_pair_t<OT::Feature const*, void const*&> >(unsigned int const&, unsigned int, hb_pair_t<OT::Feature const*, void const*&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::set_with_hash<unsigned int, hb_pair_t<void const*, void const*> >(unsigned int&&, unsigned int, hb_pair_t<void const*, void const*>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::set_with_hash<unsigned int const&, hb_pair_t<double&, double&> >(unsigned int const&, unsigned int, hb_pair_t<double&, double&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::set_with_hash<unsigned int, hb_pair_t<double, double> >(unsigned int&&, unsigned int, hb_pair_t<double, double>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::set_with_hash<unsigned int const&, double>(unsigned int const&, unsigned int, double&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::set_with_hash<unsigned int, double>(unsigned int&&, unsigned int, double&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int const&, hb_pair_t<unsigned int, int> >(unsigned int const&, unsigned int, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::set_with_hash<unsigned int const&, TripleDistances>(unsigned int const&, unsigned int, TripleDistances&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::set_with_hash<unsigned int, TripleDistances>(unsigned int&&, unsigned int, TripleDistances&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set_with_hash<unsigned int const&, hb_pair_t<unsigned int, int&> >(unsigned int const&, unsigned int, hb_pair_t<unsigned int, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::set_with_hash<unsigned int const&, contour_point_vector_t&>(unsigned int const&, unsigned int, contour_point_vector_t&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::set_with_hash<unsigned int, contour_point_vector_t>(unsigned int&&, unsigned int, contour_point_vector_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set_with_hash<unsigned int, hb_array_t<char const> >(unsigned int&&, unsigned int, hb_array_t<char const>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set_with_hash<unsigned int const&, hb_array_t<char const>&>(unsigned int const&, unsigned int, hb_array_t<char const>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false>*, int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false>*&&, unsigned int, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*&&, unsigned int, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set_with_hash<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int&>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set_with_hash<unsigned int const&, unsigned int>(unsigned int const&, unsigned int, unsigned int&&, bool)
330
331
  template <typename VV>
332
347M
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int const&>(unsigned int const&, unsigned int const&, bool)
Line
Count
Source
332
802k
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set<hb_vector_t<unsigned int, false> >(unsigned int const&, hb_vector_t<unsigned int, false>&&, bool)
bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int&>(unsigned int const&, unsigned int&, bool)
Line
Count
Source
332
346M
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int>(unsigned int const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set<hb::unique_ptr<hb_set_t> >(unsigned int const&, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set<Triple>(unsigned int const&, Triple&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::set<int>(hb::shared_ptr<hb_map_t> const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::set<hb::shared_ptr<hb_set_t>&>(unsigned int const&, hb::shared_ptr<hb_set_t>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set<Triple const&>(unsigned int const&, Triple const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::set<Triple&>(unsigned int const&, Triple&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int, int> >(unsigned long const&, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int&, int&> >(unsigned long const&, hb_pair_t<unsigned int&, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set<unsigned int>(hb_vector_t<int, false> const* const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set<unsigned int&>(unsigned long const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::set<bool>(OT::hb_depend_context_t::recurse_key_t const&, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<bool&>(unsigned int const&, bool&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::set<hb_set_t>(unsigned int const&, hb_set_t&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::set<unsigned int&>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::set<unsigned int&>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int&, bool)
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::set<face_table_info_t>(unsigned int const&, face_table_info_t&&, bool)
Line
Count
Source
332
160k
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<int>(unsigned int const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::set<unsigned int>(unsigned long const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&>(unsigned int const&, OT::OffsetTo<OT::ClipBox, OT::NumType<true, unsigned int, 3u>, void, true> const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::set<hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, hb_pair_t<unsigned int, unsigned int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::set<bool>(graph::overflow_record_t const&, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<int>(unsigned int const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<unsigned int&>(unsigned int const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<unsigned int const&>(unsigned int const&, unsigned int const&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::set<hb_vector_t<unsigned int, false>&>(unsigned int const&, hb_vector_t<unsigned int, false>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, graph::Lookup*, false>::set<graph::Lookup*&>(unsigned int const&, graph::Lookup*&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::set<unsigned int&>(hb_array_t<char const> const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::set<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::set<int>(hb_vector_t<bool, false> const* const&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::set<hb_pair_t<OT::Feature const*, void const*&> >(unsigned int const&, hb_pair_t<OT::Feature const*, void const*&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::set<hb_pair_t<double&, double&> >(unsigned int const&, hb_pair_t<double&, double&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::set<double>(unsigned int const&, double&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int, int> >(unsigned int const&, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::set<TripleDistances>(unsigned int const&, TripleDistances&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int, int&> >(unsigned int const&, hb_pair_t<unsigned int, int&>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::set<contour_point_vector_t&>(unsigned int const&, contour_point_vector_t&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set<hb_array_t<char const>&>(unsigned int const&, hb_array_t<char const>&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::set<unsigned int&>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::set<unsigned int>(unsigned int const&, unsigned int&&, bool)
333
  template <typename VV>
334
  bool set (K &&key, VV&& value, bool overwrite = true)
335
91.1k
  {
336
91.1k
    uint32_t hash = hb_hash (key);
337
91.1k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
338
91.1k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int&>(unsigned int&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<int>(unsigned int&&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int>(unsigned int&&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::set<hb_pair_t<unsigned int, int> >(unsigned long&&, hb_pair_t<unsigned int, int>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::set<OT::Feature const*>(unsigned int&&, OT::Feature const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::set<hb_vector_t<int, false> const*>(unsigned int&&, hb_vector_t<int, false> const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set<int>(hb_vector_t<int, false> const*&&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::set<unsigned int&>(hb_set_t const*&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set<hb::unique_ptr<hb_set_t> >(unsigned int&&, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::set<unsigned int&>(hb_array_t<OT::NumType<true, unsigned int, 4u> const>&&, unsigned int&, bool)
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::set<hb::unique_ptr<hb_blob_t> >(unsigned int&&, hb::unique_ptr<hb_blob_t>&&, bool)
Line
Count
Source
335
91.1k
  {
336
91.1k
    uint32_t hash = hb_hash (key);
337
91.1k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
338
91.1k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set<hb_array_t<char const> >(unsigned int&&, hb_array_t<char const>&&, bool)
339
  bool add (const K &key)
340
  {
341
    uint32_t hash = hb_hash (key);
342
    return set_with_hash (key, hash, item_t::default_value ());
343
  }
344
345
  const V& get_with_hash (const K &key, uint32_t hash) const
346
216M
  {
347
216M
    if (!items) return item_t::default_value ();
348
216M
    auto *item = fetch_item (key, hash);
349
216M
    if (item)
350
210M
      return item->value;
351
5.95M
    return item_t::default_value ();
352
216M
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::get_with_hash(hb_serialize_context_t::object_t const* const&, unsigned int) const
Line
Count
Source
346
80.3k
  {
347
80.3k
    if (!items) return item_t::default_value ();
348
68.5k
    auto *item = fetch_item (key, hash);
349
68.5k
    if (item)
350
9.70k
      return item->value;
351
58.8k
    return item_t::default_value ();
352
68.5k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
346
216M
  {
347
216M
    if (!items) return item_t::default_value ();
348
216M
    auto *item = fetch_item (key, hash);
349
216M
    if (item)
350
210M
      return item->value;
351
5.68M
    return item_t::default_value ();
352
216M
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get_with_hash(unsigned int const&, unsigned int) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
346
267k
  {
347
267k
    if (!items) return item_t::default_value ();
348
267k
    auto *item = fetch_item (key, hash);
349
267k
    if (item)
350
48.8k
      return item->value;
351
218k
    return item_t::default_value ();
352
267k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::get_with_hash(hb_array_t<char const> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::get_with_hash(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::get_with_hash(unsigned int const&, unsigned int) const
353
  const V& get (const K &key) const
354
216M
  {
355
216M
    if (!items) return item_t::default_value ();
356
216M
    return get_with_hash (key, hb_hash (key));
357
216M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get(unsigned int const&) const
Line
Count
Source
354
216M
  {
355
216M
    if (!items) return item_t::default_value ();
356
216M
    return get_with_hash (key, hb_hash (key));
357
216M
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get(unsigned int const&) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get(unsigned int const&) const
Line
Count
Source
354
285k
  {
355
285k
    if (!items) return item_t::default_value ();
356
267k
    return get_with_hash (key, hb_hash (key));
357
285k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::get(hb_array_t<char const> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::get(unsigned int const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::get(unsigned int const&) const
358
359
  void del (const K &key)
360
0
  {
361
0
    if (!items) return;
362
0
    auto *item = fetch_item (key, hb_hash (key));
363
0
    if (item)
364
0
    {
365
0
      item->set_real (false);
366
0
      population--;
367
0
    }
368
0
  }
Unexecuted instantiation: hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::del(hb_serialize_context_t::object_t const* const&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::del(unsigned int const&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::del(unsigned int const&)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::del(hb_hashmap_t<unsigned int, Triple, false> const* const&)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::del(hb_set_t const* const&)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::del(unsigned int const&)
369
370
  /* Has interface. */
371
208M
  const V& operator [] (K k) const { return get (k); }
hb_hashmap_t<unsigned int, unsigned int, true>::operator[](unsigned int) const
Line
Count
Source
371
208M
  const V& operator [] (K k) const { return get (k); }
hb_hashmap_t<unsigned int, face_table_info_t, false>::operator[](unsigned int) const
Line
Count
Source
371
125k
  const V& operator [] (K k) const { return get (k); }
372
  template <typename VV=V>
373
  bool has (const K &key, VV **vp = nullptr) const
374
1.84M
  {
375
1.84M
    if (!items) return false;
376
1.39M
    return has_with_hash (key, hb_hash (key), vp);
377
1.84M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::has<hb_vector_t<unsigned int, false> >(unsigned int const&, hb_vector_t<unsigned int, false>**) const
bool hb_hashmap_t<unsigned int, unsigned int, true>::has<unsigned int>(unsigned int const&, unsigned int**) const
Line
Count
Source
374
1.30M
  {
375
1.30M
    if (!items) return false;
376
1.30M
    return has_with_hash (key, hb_hash (key), vp);
377
1.30M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::has<unsigned int const>(unsigned int const&, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::has<hb::shared_ptr<hb_set_t> >(unsigned int const&, hb::shared_ptr<hb_set_t>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::has<OT::Feature const*>(unsigned int const&, OT::Feature const***) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::has<hb::unique_ptr<hb_set_t> >(unsigned int const&, hb::unique_ptr<hb_set_t>**) const
bool hb_hashmap_t<unsigned int, Triple, false>::has<Triple>(unsigned int const&, Triple**) const
Line
Count
Source
374
42.6k
  {
375
42.6k
    if (!items) return false;
376
0
    return has_with_hash (key, hb_hash (key), vp);
377
42.6k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::has<TripleDistances>(unsigned int const&, TripleDistances**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::has<hb_pair_t<unsigned int, int> >(unsigned long const&, hb_pair_t<unsigned int, int>**) const
bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::has<hb_pair_t<unsigned int, int> >(unsigned int const&, hb_pair_t<unsigned int, int>**) const
Line
Count
Source
374
381k
  {
375
381k
    if (!items) return false;
376
0
    return has_with_hash (key, hb_hash (key), vp);
377
381k
  }
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::has<unsigned int>(hb::shared_ptr<hb_map_t> const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::has<hb_pair_t<void const*, void const*> >(unsigned int const&, hb_pair_t<void const*, void const*>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::has<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<int, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::has<unsigned int>(hb_set_t const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::has<unsigned int>(unsigned long const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::has<bool>(OT::hb_depend_context_t::recurse_key_t const&, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::has<hb_set_t>(unsigned int const&, hb_set_t**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::has<unsigned int>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::has<unsigned int>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int**) const
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::has<face_table_info_t>(unsigned int const&, face_table_info_t**) const
Line
Count
Source
374
25.0k
  {
375
25.0k
    if (!items) return false;
376
25.0k
    return has_with_hash (key, hb_hash (key), vp);
377
25.0k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has<unsigned int>(unsigned int const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::has<unsigned int>(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::has<hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, hb_pair_t<unsigned int, unsigned int>**) const
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::has<hb::unique_ptr<hb_blob_t> >(unsigned int const&, hb::unique_ptr<hb_blob_t>**) const
Line
Count
Source
374
91.1k
  {
375
91.1k
    if (!items) return false;
376
70.8k
    return has_with_hash (key, hb_hash (key), vp);
377
91.1k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::has<bool>(graph::overflow_record_t const&, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has<unsigned int const>(unsigned int const&, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::has<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::has<hb_pair_t<double, double> >(unsigned int const&, hb_pair_t<double, double>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::has<Triple const>(unsigned int const&, Triple const**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::has<double>(unsigned int const&, double**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::has<hb_array_t<char const> >(unsigned int const&, hb_array_t<char const>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::has<contour_point_vector_t>(unsigned int const&, contour_point_vector_t**) const
378
  template <typename VV=V>
379
  bool has_with_hash (const K &key, uint32_t hash, VV **vp = nullptr) const
380
1.39M
  {
381
1.39M
    if (!items) return false;
382
1.39M
    auto *item = fetch_item (key, hash);
383
1.39M
    if (item)
384
367k
    {
385
367k
      if (vp) *vp = std::addressof (item->value);
386
367k
      return true;
387
367k
    }
388
1.02M
    return false;
389
1.39M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::has_with_hash<hb_vector_t<unsigned int, false> >(unsigned int const&, unsigned int, hb_vector_t<unsigned int, false>**) const
bool hb_hashmap_t<unsigned int, unsigned int, true>::has_with_hash<unsigned int>(unsigned int const&, unsigned int, unsigned int**) const
Line
Count
Source
380
1.30M
  {
381
1.30M
    if (!items) return false;
382
1.30M
    auto *item = fetch_item (key, hash);
383
1.30M
    if (item)
384
367k
    {
385
367k
      if (vp) *vp = std::addressof (item->value);
386
367k
      return true;
387
367k
    }
388
933k
    return false;
389
1.30M
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::has_with_hash<unsigned int const>(unsigned int const&, unsigned int, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::has_with_hash<hb::shared_ptr<hb_set_t> >(unsigned int const&, unsigned int, hb::shared_ptr<hb_set_t>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::has_with_hash<OT::Feature const*>(unsigned int const&, unsigned int, OT::Feature const***) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::has_with_hash<hb::unique_ptr<hb_set_t> >(unsigned int const&, unsigned int, hb::unique_ptr<hb_set_t>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::has_with_hash<Triple>(unsigned int const&, unsigned int, Triple**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::has_with_hash<TripleDistances>(unsigned int const&, unsigned int, TripleDistances**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::has_with_hash<hb_pair_t<unsigned int, int> >(unsigned long const&, unsigned int, hb_pair_t<unsigned int, int>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::has_with_hash<hb_pair_t<unsigned int, int> >(unsigned int const&, unsigned int, hb_pair_t<unsigned int, int>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::has_with_hash<unsigned int>(hb::shared_ptr<hb_map_t> const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::has_with_hash<hb_pair_t<void const*, void const*> >(unsigned int const&, unsigned int, hb_pair_t<void const*, void const*>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<int, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_set_t const*, unsigned int, false>::has_with_hash<unsigned int>(hb_set_t const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned long, unsigned int, false>::has_with_hash<unsigned int>(unsigned long const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::has_with_hash<bool>(OT::hb_depend_context_t::recurse_key_t const&, unsigned int, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_set_t, false>::has_with_hash<hb_set_t>(unsigned int const&, unsigned int, hb_set_t**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::has_with_hash<unsigned int>(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::has_with_hash<unsigned int>(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int, unsigned int**) const
bool hb_hashmap_t<unsigned int, face_table_info_t, false>::has_with_hash<face_table_info_t>(unsigned int const&, unsigned int, face_table_info_t**) const
Line
Count
Source
380
25.0k
  {
381
25.0k
    if (!items) return false;
382
25.0k
    auto *item = fetch_item (key, hash);
383
25.0k
    if (item)
384
0
    {
385
0
      if (vp) *vp = std::addressof (item->value);
386
0
      return true;
387
0
    }
388
25.0k
    return false;
389
25.0k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int>(unsigned int const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::has_with_hash<unsigned int>(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::has_with_hash<hb_pair_t<unsigned int, unsigned int> >(OT::SVG::svg_id_span_t const&, unsigned int, hb_pair_t<unsigned int, unsigned int>**) const
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::has_with_hash<hb::unique_ptr<hb_blob_t> >(unsigned int const&, unsigned int, hb::unique_ptr<hb_blob_t>**) const
Line
Count
Source
380
70.8k
  {
381
70.8k
    if (!items) return false;
382
70.8k
    auto *item = fetch_item (key, hash);
383
70.8k
    if (item)
384
0
    {
385
0
      if (vp) *vp = std::addressof (item->value);
386
0
      return true;
387
0
    }
388
70.8k
    return false;
389
70.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t, bool, false>::has_with_hash<bool>(graph::overflow_record_t const&, unsigned int, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int const>(unsigned int const&, unsigned int, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::has_with_hash<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, unsigned int, hb_vector_t<unsigned char, false>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::has_with_hash<hb_pair_t<double, double> >(unsigned int const&, unsigned int, hb_pair_t<double, double>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, Triple, false>::has_with_hash<Triple const>(unsigned int const&, unsigned int, Triple const**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, double, false>::has_with_hash<double>(unsigned int const&, unsigned int, double**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::has_with_hash<hb_array_t<char const> >(unsigned int const&, unsigned int, hb_array_t<char const>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::has_with_hash<contour_point_vector_t>(unsigned int const&, unsigned int, contour_point_vector_t**) const
390
  item_t *fetch_item (const K &key, uint32_t hash) const
391
218M
  {
392
218M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
393
218M
    unsigned int i = hash % prime;
394
218M
    unsigned step = 0;
395
272M
    while (items[i].is_used ())
396
265M
    {
397
265M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
398
265M
    items[i] == key)
399
211M
      {
400
211M
  if (items[i].is_real ())
401
211M
    return &items[i];
402
0
  else
403
0
    return nullptr;
404
211M
      }
405
54.1M
      i = (i + ++step) & mask;
406
54.1M
    }
407
6.98M
    return nullptr;
408
218M
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fetch_item(hb_serialize_context_t::object_t const* const&, unsigned int) const
Line
Count
Source
391
68.5k
  {
392
68.5k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
393
68.5k
    unsigned int i = hash % prime;
394
68.5k
    unsigned step = 0;
395
109k
    while (items[i].is_used ())
396
50.3k
    {
397
50.3k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
398
9.70k
    items[i] == key)
399
9.70k
      {
400
9.70k
  if (items[i].is_real ())
401
9.70k
    return &items[i];
402
0
  else
403
0
    return nullptr;
404
9.70k
      }
405
40.6k
      i = (i + ++step) & mask;
406
40.6k
    }
407
58.8k
    return nullptr;
408
68.5k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::fetch_item(unsigned int const&, unsigned int) const
hb_hashmap_t<unsigned int, unsigned int, true>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
391
217M
  {
392
217M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
393
217M
    unsigned int i = hash % prime;
394
217M
    unsigned step = 0;
395
271M
    while (items[i].is_used ())
396
264M
    {
397
264M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
398
264M
    items[i] == key)
399
211M
      {
400
211M
  if (items[i].is_real ())
401
211M
    return &items[i];
402
0
  else
403
0
    return nullptr;
404
211M
      }
405
53.8M
      i = (i + ++step) & mask;
406
53.8M
    }
407
6.61M
    return nullptr;
408
217M
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::fetch_item(unsigned long const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::fetch_item(hb::shared_ptr<hb_map_t> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::fetch_item(hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::fetch_item(hb_hashmap_t<unsigned int, Triple, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::fetch_item(hb_vector_t<int, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::fetch_item(hb_set_t const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::fetch_item(unsigned long const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::fetch_item(OT::hb_depend_context_t::recurse_key_t const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::fetch_item(OT::hb_depend_context_t::glyph_set_cache_key_t const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::fetch_item(OT::hb_depend_context_t::context_set_cache_key_t const&, unsigned int) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
391
292k
  {
392
292k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
393
292k
    unsigned int i = hash % prime;
394
292k
    unsigned step = 0;
395
476k
    while (items[i].is_used ())
396
232k
    {
397
232k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
398
232k
    items[i] == key)
399
48.8k
      {
400
48.8k
  if (items[i].is_real ())
401
48.8k
    return &items[i];
402
0
  else
403
0
    return nullptr;
404
48.8k
      }
405
183k
      i = (i + ++step) & mask;
406
183k
    }
407
243k
    return nullptr;
408
292k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::fetch_item(hb_array_t<OT::NumType<true, unsigned int, 4u> const> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::fetch_item(OT::SVG::svg_id_span_t const&, unsigned int) const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
391
70.8k
  {
392
70.8k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
393
70.8k
    unsigned int i = hash % prime;
394
70.8k
    unsigned step = 0;
395
146k
    while (items[i].is_used ())
396
75.5k
    {
397
75.5k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
398
75.5k
    items[i] == key)
399
0
      {
400
0
  if (items[i].is_real ())
401
0
    return &items[i];
402
0
  else
403
0
    return nullptr;
404
0
      }
405
75.5k
      i = (i + ++step) & mask;
406
75.5k
    }
407
70.8k
    return nullptr;
408
70.8k
  }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::fetch_item(graph::overflow_record_t const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::fetch_item(hb_array_t<char const> const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::fetch_item(hb_vector_t<bool, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::fetch_item(hb_vector_t<bool, false> const* const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::fetch_item(unsigned int const&, unsigned int) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fetch_item(unsigned int const&, unsigned int) const
409
  /* Projection. */
410
  const V& operator () (K k) const { return get (k); }
411
412
854k
  unsigned size () const { return mask ? mask + 1 : 0; }
hb_hashmap_t<unsigned int, unsigned int, true>::size() const
Line
Count
Source
412
616k
  unsigned size () const { return mask ? mask + 1 : 0; }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::size() const
Line
Count
Source
412
45.9k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::size() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::size() const
Line
Count
Source
412
137k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::size() const
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::size() const
Line
Count
Source
412
54.7k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::size() const
413
414
  void clear ()
415
20.3k
  {
416
    /* Early-out on already-empty.  Protects the Null singleton
417
     * (zero-initialized) from any writes.  Any non-empty hashmap
418
     * is a real heap instance with writable items, so clearing
419
     * under !successful is safe. */
420
20.3k
    if (!population && !occupancy) return;
421
422
0
    for (auto &_ : hb_iter (items, size ()))
423
0
    {
424
      /* Reconstruct items. */
425
0
      _.~item_t ();
426
0
      new (&_) item_t ();
427
0
    }
428
429
0
    population = occupancy = 0;
430
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::clear()
hb_hashmap_t<unsigned int, Triple, false>::clear()
Line
Count
Source
415
20.3k
  {
416
    /* Early-out on already-empty.  Protects the Null singleton
417
     * (zero-initialized) from any writes.  Any non-empty hashmap
418
     * is a real heap instance with writable items, so clearing
419
     * under !successful is safe. */
420
20.3k
    if (!population && !occupancy) return;
421
422
0
    for (auto &_ : hb_iter (items, size ()))
423
0
    {
424
      /* Reconstruct items. */
425
0
      _.~item_t ();
426
0
      new (&_) item_t ();
427
0
    }
428
429
0
    population = occupancy = 0;
430
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::clear()
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::clear()
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::clear()
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::clear()
431
432
115k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, unsigned int, true>::is_empty() const
Line
Count
Source
432
20.3k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, Triple, false>::is_empty() const
Line
Count
Source
432
60.9k
  bool is_empty () const { return population == 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::is_empty() const
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::is_empty() const
Line
Count
Source
432
34.4k
  bool is_empty () const { return population == 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::is_empty() const
433
20.3k
  explicit operator bool () const { return !is_empty (); }
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::operator bool() const
hb_hashmap_t<unsigned int, unsigned int, true>::operator bool() const
Line
Count
Source
433
20.3k
  explicit operator bool () const { return !is_empty (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::operator bool() const
434
435
  uint32_t hash () const
436
0
  {
437
0
    return
438
0
    + iter_items ()
439
0
    | hb_reduce ([] (uint32_t h, const item_t &_) { return h ^ _.total_hash (); }, (uint32_t) 0u)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const::{lambda(unsigned int, hb_hashmap_t<unsigned int, unsigned int, true>::item_t const&)#1}::operator()(unsigned int, hb_hashmap_t<unsigned int, unsigned int, true>::item_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const::{lambda(unsigned int, hb_hashmap_t<unsigned int, Triple, false>::item_t const&)#1}::operator()(unsigned int, hb_hashmap_t<unsigned int, Triple, false>::item_t const&) const
440
0
    ;
441
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const
442
443
  bool is_equal (const hb_hashmap_t &other) const
444
0
  {
445
0
    if (population != other.population) return false;
446
447
0
    for (auto pair : iter ())
448
0
      if (other.get (pair.first) != pair.second)
449
0
        return false;
450
451
0
    return true;
452
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::is_equal(hb_hashmap_t<unsigned int, unsigned int, true> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::is_equal(hb_hashmap_t<unsigned int, Triple, false> const&) const
453
0
  bool operator == (const hb_hashmap_t &other) const { return is_equal (other); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator==(hb_hashmap_t<unsigned int, unsigned int, true> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator==(hb_hashmap_t<unsigned int, Triple, false> const&) const
454
  bool operator != (const hb_hashmap_t &other) const { return !is_equal (other); }
455
456
74.4k
  unsigned int get_population () const { return population; }
hb_hashmap_t<unsigned int, unsigned int, true>::get_population() const
Line
Count
Source
456
61.8k
  unsigned int get_population () const { return population; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::get_population() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get_population() const
Line
Count
Source
456
12.5k
  unsigned int get_population () const { return population; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::get_population() const
457
458
  void update (const hb_hashmap_t &other)
459
0
  {
460
0
    if (unlikely (!successful)) return;
461
462
0
    hb_copy (other, *this);
463
0
  }
464
465
  /*
466
   * Iterator
467
   */
468
469
  auto iter_items () const HB_AUTO_RETURN
470
  (
471
    + hb_iter (items, this->size ())
472
    | hb_filter (&item_t::is_real)
473
  )
474
  auto iter_ref () const HB_AUTO_RETURN
475
  (
476
    + this->iter_items ()
477
    | hb_map (&item_t::get_pair_ref)
478
  )
479
  auto iter () const HB_AUTO_RETURN
480
  (
481
    + this->iter_items ()
482
    | hb_map (&item_t::get_pair)
483
  )
484
  auto keys_ref () const HB_AUTO_RETURN
485
  (
486
    + this->iter_items ()
487
    | hb_map (&item_t::get_key)
488
  )
489
  auto keys () const HB_AUTO_RETURN
490
  (
491
    + this->keys_ref ()
492
    | hb_map (hb_ridentity)
493
  )
494
  auto values_ref () const HB_AUTO_RETURN
495
  (
496
    + this->iter_items ()
497
    | hb_map (&item_t::get_value)
498
  )
499
  auto values () const HB_AUTO_RETURN
500
  (
501
    + this->values_ref ()
502
    | hb_map (hb_ridentity)
503
  )
504
505
  /* C iterator. */
506
  bool next (int *idx,
507
       K *key,
508
       V *value) const
509
0
  {
510
0
    unsigned i = (unsigned) (*idx + 1);
511
512
0
    unsigned count = size ();
513
0
    while (i < count && !items[i].is_real ())
514
0
      i++;
515
516
0
    if (i >= count)
517
0
    {
518
0
      *idx = -1;
519
0
      return false;
520
0
    }
521
522
0
    *key = items[i].key;
523
0
    *value = items[i].value;
524
525
0
    *idx = (signed) i;
526
0
    return true;
527
0
  }
528
529
  /* Sink interface. */
530
  hb_hashmap_t& operator << (const hb_pair_t<K, V>& v)
531
802k
  { set (v.first, v.second); return *this; }
hb_hashmap_t<unsigned int, unsigned int, true>::operator<<(hb_pair_t<unsigned int, unsigned int> const&)
Line
Count
Source
531
802k
  { set (v.first, v.second); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator<<(hb_pair_t<unsigned int, Triple> const&)
532
  template <typename V2 = V,
533
      hb_enable_if (!hb_is_trivially_copyable (V2))>
534
  hb_hashmap_t& operator << (const hb_pair_t<K, V&&>& v)
535
  { set (v.first, std::move (v.second)); return *this; }
536
  template <typename K2 = K,
537
      hb_enable_if (!hb_is_trivially_copyable (K2))>
538
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V>& v)
539
  { set (std::move (v.first), v.second); return *this; }
540
  template <typename K2 = K, typename V2 = V,
541
      hb_enable_if (!hb_is_trivially_copyable (K2) &&
542
        !hb_is_trivially_copyable (V2))>
543
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V&&>& v)
544
  { set (std::move (v.first), std::move (v.second)); return *this; }
545
546
  static unsigned int prime_for (unsigned int shift)
547
397k
  {
548
    /* Following comment and table copied from glib. */
549
    /* Each table size has an associated prime modulo (the first prime
550
     * lower than the table size) used to find the initial bucket. Probing
551
     * then works modulo 2^n. The prime modulo is necessary to get a
552
     * good distribution with poor hash functions.
553
     */
554
    /* Not declaring static to make all kinds of compilers happy... */
555
397k
    /*static*/ const unsigned int prime_mod [32] =
556
397k
    {
557
397k
      1,          /* For 1 << 0 */
558
397k
      2,
559
397k
      3,
560
397k
      7,
561
397k
      13,
562
397k
      31,
563
397k
      61,
564
397k
      127,
565
397k
      251,
566
397k
      509,
567
397k
      1021,
568
397k
      2039,
569
397k
      4093,
570
397k
      8191,
571
397k
      16381,
572
397k
      32749,
573
397k
      65521,      /* For 1 << 16 */
574
397k
      131071,
575
397k
      262139,
576
397k
      524287,
577
397k
      1048573,
578
397k
      2097143,
579
397k
      4194301,
580
397k
      8388593,
581
397k
      16777213,
582
397k
      33554393,
583
397k
      67108859,
584
397k
      134217689,
585
397k
      268435399,
586
397k
      536870909,
587
397k
      1073741789,
588
397k
      2147483647  /* For 1 << 31 */
589
397k
    };
590
591
397k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
592
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
593
594
397k
    return prime_mod[shift];
595
397k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::prime_for(unsigned int)
Line
Count
Source
547
23.1k
  {
548
    /* Following comment and table copied from glib. */
549
    /* Each table size has an associated prime modulo (the first prime
550
     * lower than the table size) used to find the initial bucket. Probing
551
     * then works modulo 2^n. The prime modulo is necessary to get a
552
     * good distribution with poor hash functions.
553
     */
554
    /* Not declaring static to make all kinds of compilers happy... */
555
23.1k
    /*static*/ const unsigned int prime_mod [32] =
556
23.1k
    {
557
23.1k
      1,          /* For 1 << 0 */
558
23.1k
      2,
559
23.1k
      3,
560
23.1k
      7,
561
23.1k
      13,
562
23.1k
      31,
563
23.1k
      61,
564
23.1k
      127,
565
23.1k
      251,
566
23.1k
      509,
567
23.1k
      1021,
568
23.1k
      2039,
569
23.1k
      4093,
570
23.1k
      8191,
571
23.1k
      16381,
572
23.1k
      32749,
573
23.1k
      65521,      /* For 1 << 16 */
574
23.1k
      131071,
575
23.1k
      262139,
576
23.1k
      524287,
577
23.1k
      1048573,
578
23.1k
      2097143,
579
23.1k
      4194301,
580
23.1k
      8388593,
581
23.1k
      16777213,
582
23.1k
      33554393,
583
23.1k
      67108859,
584
23.1k
      134217689,
585
23.1k
      268435399,
586
23.1k
      536870909,
587
23.1k
      1073741789,
588
23.1k
      2147483647  /* For 1 << 31 */
589
23.1k
    };
590
591
23.1k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
592
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
593
594
23.1k
    return prime_mod[shift];
595
23.1k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, unsigned int, true>::prime_for(unsigned int)
Line
Count
Source
547
300k
  {
548
    /* Following comment and table copied from glib. */
549
    /* Each table size has an associated prime modulo (the first prime
550
     * lower than the table size) used to find the initial bucket. Probing
551
     * then works modulo 2^n. The prime modulo is necessary to get a
552
     * good distribution with poor hash functions.
553
     */
554
    /* Not declaring static to make all kinds of compilers happy... */
555
300k
    /*static*/ const unsigned int prime_mod [32] =
556
300k
    {
557
300k
      1,          /* For 1 << 0 */
558
300k
      2,
559
300k
      3,
560
300k
      7,
561
300k
      13,
562
300k
      31,
563
300k
      61,
564
300k
      127,
565
300k
      251,
566
300k
      509,
567
300k
      1021,
568
300k
      2039,
569
300k
      4093,
570
300k
      8191,
571
300k
      16381,
572
300k
      32749,
573
300k
      65521,      /* For 1 << 16 */
574
300k
      131071,
575
300k
      262139,
576
300k
      524287,
577
300k
      1048573,
578
300k
      2097143,
579
300k
      4194301,
580
300k
      8388593,
581
300k
      16777213,
582
300k
      33554393,
583
300k
      67108859,
584
300k
      134217689,
585
300k
      268435399,
586
300k
      536870909,
587
300k
      1073741789,
588
300k
      2147483647  /* For 1 << 31 */
589
300k
    };
590
591
300k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
592
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
593
594
300k
    return prime_mod[shift];
595
300k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned long, hb_pair_t<unsigned int, int>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_set_t const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned long, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::recurse_key_t, bool, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::glyph_set_cache_key_t, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::hb_depend_context_t::context_set_cache_key_t, unsigned int, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::prime_for(unsigned int)
Line
Count
Source
547
42.8k
  {
548
    /* Following comment and table copied from glib. */
549
    /* Each table size has an associated prime modulo (the first prime
550
     * lower than the table size) used to find the initial bucket. Probing
551
     * then works modulo 2^n. The prime modulo is necessary to get a
552
     * good distribution with poor hash functions.
553
     */
554
    /* Not declaring static to make all kinds of compilers happy... */
555
42.8k
    /*static*/ const unsigned int prime_mod [32] =
556
42.8k
    {
557
42.8k
      1,          /* For 1 << 0 */
558
42.8k
      2,
559
42.8k
      3,
560
42.8k
      7,
561
42.8k
      13,
562
42.8k
      31,
563
42.8k
      61,
564
42.8k
      127,
565
42.8k
      251,
566
42.8k
      509,
567
42.8k
      1021,
568
42.8k
      2039,
569
42.8k
      4093,
570
42.8k
      8191,
571
42.8k
      16381,
572
42.8k
      32749,
573
42.8k
      65521,      /* For 1 << 16 */
574
42.8k
      131071,
575
42.8k
      262139,
576
42.8k
      524287,
577
42.8k
      1048573,
578
42.8k
      2097143,
579
42.8k
      4194301,
580
42.8k
      8388593,
581
42.8k
      16777213,
582
42.8k
      33554393,
583
42.8k
      67108859,
584
42.8k
      134217689,
585
42.8k
      268435399,
586
42.8k
      536870909,
587
42.8k
      1073741789,
588
42.8k
      2147483647  /* For 1 << 31 */
589
42.8k
    };
590
591
42.8k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
592
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
593
594
42.8k
    return prime_mod[shift];
595
42.8k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<OT::NumType<true, unsigned int, 4u> const>, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::prime_for(unsigned int)
Line
Count
Source
547
31.8k
  {
548
    /* Following comment and table copied from glib. */
549
    /* Each table size has an associated prime modulo (the first prime
550
     * lower than the table size) used to find the initial bucket. Probing
551
     * then works modulo 2^n. The prime modulo is necessary to get a
552
     * good distribution with poor hash functions.
553
     */
554
    /* Not declaring static to make all kinds of compilers happy... */
555
31.8k
    /*static*/ const unsigned int prime_mod [32] =
556
31.8k
    {
557
31.8k
      1,          /* For 1 << 0 */
558
31.8k
      2,
559
31.8k
      3,
560
31.8k
      7,
561
31.8k
      13,
562
31.8k
      31,
563
31.8k
      61,
564
31.8k
      127,
565
31.8k
      251,
566
31.8k
      509,
567
31.8k
      1021,
568
31.8k
      2039,
569
31.8k
      4093,
570
31.8k
      8191,
571
31.8k
      16381,
572
31.8k
      32749,
573
31.8k
      65521,      /* For 1 << 16 */
574
31.8k
      131071,
575
31.8k
      262139,
576
31.8k
      524287,
577
31.8k
      1048573,
578
31.8k
      2097143,
579
31.8k
      4194301,
580
31.8k
      8388593,
581
31.8k
      16777213,
582
31.8k
      33554393,
583
31.8k
      67108859,
584
31.8k
      134217689,
585
31.8k
      268435399,
586
31.8k
      536870909,
587
31.8k
      1073741789,
588
31.8k
      2147483647  /* For 1 << 31 */
589
31.8k
    };
590
591
31.8k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
592
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
593
594
31.8k
    return prime_mod[shift];
595
31.8k
  }
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t, bool, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<double, double>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, double, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::prime_for(unsigned int)
596
};
597
598
/*
599
 * hb_map_t
600
 */
601
602
struct hb_map_t : hb_hashmap_t<hb_codepoint_t,
603
             hb_codepoint_t,
604
             true>
605
{
606
  using hashmap = hb_hashmap_t<hb_codepoint_t,
607
             hb_codepoint_t,
608
             true>;
609
610
  ~hb_map_t () = default;
611
401k
  hb_map_t () : hashmap () {}
612
0
  hb_map_t (const hb_map_t &o) : hashmap ((hashmap &) o) {}
613
0
  hb_map_t (hb_map_t &&o)  noexcept : hashmap (std::move ((hashmap &) o)) {}
614
0
  hb_map_t& operator= (const hb_map_t&) = default;
615
0
  hb_map_t& operator= (hb_map_t&&) = default;
616
0
  hb_map_t (std::initializer_list<hb_codepoint_pair_t> lst) : hashmap (lst) {}
617
  template <typename Iterable,
618
      hb_requires (hb_is_iterable (Iterable))>
619
0
  hb_map_t (const Iterable &o) : hashmap (o) {}
620
};
621
622
623
#endif /* HB_MAP_HH */