Coverage Report

Created: 2026-04-09 11:41

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
299k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::hb_hashmap_t()
Line
Count
Source
47
43.7k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, unsigned int, true>::hb_hashmap_t()
Line
Count
Source
47
137k
  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
12.4k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t()
Line
Count
Source
47
18.7k
  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
6.24k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
12.4k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::hb_hashmap_t()
Line
Count
Source
47
12.4k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::hb_hashmap_t()
Line
Count
Source
47
12.4k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::hb_hashmap_t()
Line
Count
Source
47
31.2k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::hb_hashmap_t()
Line
Count
Source
47
6.24k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::hb_hashmap_t()
Line
Count
Source
47
6.24k
  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<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<unsigned int, graph::Lookup*, false>::hb_hashmap_t()
48
299k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::~hb_hashmap_t()
Line
Count
Source
48
43.7k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, unsigned int, true>::~hb_hashmap_t()
Line
Count
Source
48
137k
  ~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
12.4k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, Triple, false>::~hb_hashmap_t()
Line
Count
Source
48
18.7k
  ~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
6.24k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
12.4k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::~hb_hashmap_t()
Line
Count
Source
48
12.4k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::~hb_hashmap_t()
Line
Count
Source
48
12.4k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::~hb_hashmap_t()
Line
Count
Source
48
31.2k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::~hb_hashmap_t()
Line
Count
Source
48
6.24k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::~hb_hashmap_t()
Line
Count
Source
48
6.24k
  ~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<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()
49
50
  void _copy (const hb_hashmap_t& o)
51
6.24k
  {
52
6.24k
    if (unlikely (!o.mask)) return;
53
54
0
    if (hb_is_trivially_copy_assignable (item_t))
55
0
    {
56
0
      items = (item_t *) hb_malloc (sizeof (item_t) * (o.mask + 1));
57
0
      if (unlikely (!items))
58
0
      {
59
0
  successful = false;
60
0
  return;
61
0
      }
62
0
      population = o.population;
63
0
      occupancy = o.occupancy;
64
0
      mask = o.mask;
65
0
      prime = o.prime;
66
0
      max_chain_length = o.max_chain_length;
67
0
      memcpy (items, o.items, sizeof (item_t) * (mask + 1));
68
0
      return;
69
0
    }
70
71
0
    alloc (o.population); hb_copy (o, *this);
72
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
6.24k
  {
52
6.24k
    if (unlikely (!o.mask)) return;
53
54
0
    if (hb_is_trivially_copy_assignable (item_t))
55
0
    {
56
0
      items = (item_t *) hb_malloc (sizeof (item_t) * (o.mask + 1));
57
0
      if (unlikely (!items))
58
0
      {
59
0
  successful = false;
60
0
  return;
61
0
      }
62
0
      population = o.population;
63
0
      occupancy = o.occupancy;
64
0
      mask = o.mask;
65
0
      prime = o.prime;
66
0
      max_chain_length = o.max_chain_length;
67
0
      memcpy (items, o.items, sizeof (item_t) * (mask + 1));
68
0
      return;
69
0
    }
70
71
0
    alloc (o.population); hb_copy (o, *this);
72
0
  }
73
74
0
  hb_hashmap_t (const hb_hashmap_t& o) : hb_hashmap_t () { _copy (o); }
75
  hb_hashmap_t& operator= (const hb_hashmap_t& o)
76
6.24k
  {
77
6.24k
    reset ();
78
6.24k
    if (!items) { _copy (o); return *this; }
79
0
    alloc (o.population); hb_copy (o, *this); return *this;
80
6.24k
  }
hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
76
6.24k
  {
77
6.24k
    reset ();
78
6.24k
    if (!items) { _copy (o); return *this; }
79
0
    alloc (o.population); hb_copy (o, *this); return *this;
80
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator=(hb_hashmap_t<unsigned int, unsigned int, true> const&)
81
82
0
  hb_hashmap_t (hb_hashmap_t&& o)  noexcept : hb_hashmap_t () { hb_swap (*this, o); }
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>&&)
83
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, unsigned int, false>::operator=(hb_hashmap_t<unsigned int, 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, hb_pair_t<unsigned int, int>, false>::operator=(hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&&)
84
85
  hb_hashmap_t (std::initializer_list<hb_pair_t<K, V>> lst) : hb_hashmap_t ()
86
  {
87
    for (auto&& item : lst)
88
      set (item.first, item.second);
89
  }
90
  template <typename Iterable,
91
      hb_requires (hb_is_iterable (Iterable))>
92
0
  hb_hashmap_t (const Iterable &o) : hb_hashmap_t ()
93
0
  {
94
0
    auto iter = hb_iter (o);
95
0
    if (iter.is_random_access_iterator || iter.has_fast_len)
96
0
      alloc (hb_len (iter));
97
0
    hb_copy (iter, *this);
98
0
  }
99
100
  struct item_t
101
  {
102
    K key;
103
    uint32_t is_real_ : 1;
104
    uint32_t is_used_ : 1;
105
    uint32_t hash : 30;
106
    V value;
107
108
0
    item_t () : key (),
109
149k
    is_real_ (false), is_used_ (false),
110
149k
    hash (0),
111
149k
    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<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
109
149k
    is_real_ (false), is_used_ (false),
110
149k
    hash (0),
111
149k
    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 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<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()
112
113
    // Needed for https://github.com/harfbuzz/harfbuzz/issues/4138
114
74.9k
    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()
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::get_key()
Line
Count
Source
114
74.9k
    K& get_key () { return key; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, 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, hb_set_t, false>::item_t::get_key()
115
442k
    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
115
205k
    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
115
237k
    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()
116
117
90.1M
    bool is_used () const { return is_used_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_used() const
Line
Count
Source
117
88.4M
    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
117
214k
    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, 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<hb::shared_ptr<hb_map_t>, unsigned int, 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, hb_pair_t<void const*, void const*>, 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_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<unsigned int, hb_set_t, false>::item_t::is_used() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::is_used() const
Line
Count
Source
117
1.24M
    bool is_used () const { return is_used_; }
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
117
237k
    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<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, 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
118
33.3M
    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
118
32.8M
    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
118
69.4k
    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<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<unsigned int, hb_set_t, false>::item_t::set_used(bool)
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::set_used(bool)
Line
Count
Source
118
343k
    void set_used (bool is_used) { is_used_ = is_used; }
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
118
68.7k
    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<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, 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)
119
33.3M
    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
119
32.8M
    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
119
69.4k
    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<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<unsigned int, hb_set_t, false>::item_t::set_real(bool)
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::set_real(bool)
Line
Count
Source
119
343k
    void set_real (bool is_real) { is_real_ = is_real; }
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
119
68.7k
    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<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, 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)
120
48.3M
    bool is_real () const { return is_real_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_real() const
Line
Count
Source
120
46.6M
    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
120
71.3k
    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, 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<hb::shared_ptr<hb_map_t>, unsigned int, 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, hb_pair_t<void const*, void const*>, 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_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<unsigned int, hb_set_t, false>::item_t::is_real() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::is_real() const
Line
Count
Source
120
1.50M
    bool is_real () const { return is_real_; }
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
120
81.2k
    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<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, 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
121
122
    template <bool v = minus_one,
123
        hb_enable_if (v == false)>
124
219k
    static inline const V& default_value () { return Null(V); };
_ZN12hb_hashmap_tIPKN22hb_serialize_context_t8object_tEjLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKjv
Line
Count
Source
124
38.2k
    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
124
181k
    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
125
    template <bool v = minus_one,
126
        hb_enable_if (v == true)>
127
    static inline const V& default_value ()
128
37
    {
129
37
      static_assert (hb_is_same (V, hb_codepoint_t), "");
130
37
      return minus_1;
131
37
    };
_ZN12hb_hashmap_tIjjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
Line
Count
Source
128
37
    {
129
37
      static_assert (hb_is_same (V, hb_codepoint_t), "");
130
37
      return minus_1;
131
37
    };
Unexecuted instantiation: _ZN12hb_hashmap_tI10hb_array_tIKcEjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
132
133
22.4M
    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
133
22.0M
    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
133
5.51k
    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, 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<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::shared_ptr<hb_set_t>, false>::item_t::operator==(unsigned int 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<unsigned int, hb_pair_t<unsigned int, int>, 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<unsigned int, hb_set_t, false>::item_t::operator==(unsigned int const&) const
hb_hashmap_t<unsigned int, face_table_info_t, false>::item_t::operator==(unsigned int const&) const
Line
Count
Source
133
374k
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
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
133
68.7k
    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<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, 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
134
    bool operator == (const item_t &o) const { return *this == o.key; }
135
81.2k
    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 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
135
81.2k
    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, 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
136
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 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()
137
138
    uint32_t total_hash () const
139
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
140
141
    static constexpr bool is_trivially_constructible = (hb_is_trivially_constructible(K) && hb_is_trivially_constructible(V));
142
  };
143
144
  hb_object_header_t header;
145
  bool successful; /* Allocations successful */
146
  unsigned short max_chain_length;
147
  unsigned int population; /* Not including tombstones. */
148
  unsigned int occupancy; /* Including tombstones. */
149
  unsigned int mask;
150
  unsigned int prime;
151
  item_t *items;
152
153
  friend void swap (hb_hashmap_t& a, hb_hashmap_t& b) noexcept
154
0
  {
155
0
    if (unlikely (!a.successful || !b.successful))
156
0
      return;
157
0
    hb_swap (a.max_chain_length, b.max_chain_length);
158
0
    hb_swap (a.population, b.population);
159
0
    hb_swap (a.occupancy, b.occupancy);
160
0
    hb_swap (a.mask, b.mask);
161
0
    hb_swap (a.prime, b.prime);
162
0
    hb_swap (a.items, b.items);
163
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_pair_t<unsigned int, int>, false>&, hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>&)
164
  void init ()
165
355k
  {
166
355k
    hb_object_init (this);
167
168
355k
    successful = true;
169
355k
    max_chain_length = 0;
170
355k
    population = occupancy = 0;
171
355k
    mask = 0;
172
355k
    prime = 0;
173
355k
    items = nullptr;
174
355k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::init()
Line
Count
Source
165
137k
  {
166
137k
    hb_object_init (this);
167
168
137k
    successful = true;
169
137k
    max_chain_length = 0;
170
137k
    population = occupancy = 0;
171
137k
    mask = 0;
172
137k
    prime = 0;
173
137k
    items = nullptr;
174
137k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::init()
Line
Count
Source
165
87.4k
  {
166
87.4k
    hb_object_init (this);
167
168
87.4k
    successful = true;
169
87.4k
    max_chain_length = 0;
170
87.4k
    population = occupancy = 0;
171
87.4k
    mask = 0;
172
87.4k
    prime = 0;
173
87.4k
    items = nullptr;
174
87.4k
  }
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::init()
Line
Count
Source
165
6.24k
  {
166
6.24k
    hb_object_init (this);
167
168
6.24k
    successful = true;
169
6.24k
    max_chain_length = 0;
170
6.24k
    population = occupancy = 0;
171
6.24k
    mask = 0;
172
6.24k
    prime = 0;
173
6.24k
    items = nullptr;
174
6.24k
  }
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
165
18.7k
  {
166
18.7k
    hb_object_init (this);
167
168
18.7k
    successful = true;
169
18.7k
    max_chain_length = 0;
170
18.7k
    population = occupancy = 0;
171
18.7k
    mask = 0;
172
18.7k
    prime = 0;
173
18.7k
    items = nullptr;
174
18.7k
  }
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<unsigned int, hb_set_t, false>::init()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::init()
Line
Count
Source
165
12.4k
  {
166
12.4k
    hb_object_init (this);
167
168
12.4k
    successful = true;
169
12.4k
    max_chain_length = 0;
170
12.4k
    population = occupancy = 0;
171
12.4k
    mask = 0;
172
12.4k
    prime = 0;
173
12.4k
    items = nullptr;
174
12.4k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::init()
Line
Count
Source
165
12.4k
  {
166
12.4k
    hb_object_init (this);
167
168
12.4k
    successful = true;
169
12.4k
    max_chain_length = 0;
170
12.4k
    population = occupancy = 0;
171
12.4k
    mask = 0;
172
12.4k
    prime = 0;
173
12.4k
    items = nullptr;
174
12.4k
  }
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<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
165
12.4k
  {
166
12.4k
    hb_object_init (this);
167
168
12.4k
    successful = true;
169
12.4k
    max_chain_length = 0;
170
12.4k
    population = occupancy = 0;
171
12.4k
    mask = 0;
172
12.4k
    prime = 0;
173
12.4k
    items = nullptr;
174
12.4k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::init()
Line
Count
Source
165
12.4k
  {
166
12.4k
    hb_object_init (this);
167
168
12.4k
    successful = true;
169
12.4k
    max_chain_length = 0;
170
12.4k
    population = occupancy = 0;
171
12.4k
    mask = 0;
172
12.4k
    prime = 0;
173
12.4k
    items = nullptr;
174
12.4k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::init()
Line
Count
Source
165
12.4k
  {
166
12.4k
    hb_object_init (this);
167
168
12.4k
    successful = true;
169
12.4k
    max_chain_length = 0;
170
12.4k
    population = occupancy = 0;
171
12.4k
    mask = 0;
172
12.4k
    prime = 0;
173
12.4k
    items = nullptr;
174
12.4k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::init()
Line
Count
Source
165
31.2k
  {
166
31.2k
    hb_object_init (this);
167
168
31.2k
    successful = true;
169
31.2k
    max_chain_length = 0;
170
31.2k
    population = occupancy = 0;
171
31.2k
    mask = 0;
172
31.2k
    prime = 0;
173
31.2k
    items = nullptr;
174
31.2k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::init()
Line
Count
Source
165
6.24k
  {
166
6.24k
    hb_object_init (this);
167
168
6.24k
    successful = true;
169
6.24k
    max_chain_length = 0;
170
6.24k
    population = occupancy = 0;
171
6.24k
    mask = 0;
172
6.24k
    prime = 0;
173
6.24k
    items = nullptr;
174
6.24k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::init()
Line
Count
Source
165
6.24k
  {
166
6.24k
    hb_object_init (this);
167
168
6.24k
    successful = true;
169
6.24k
    max_chain_length = 0;
170
6.24k
    population = occupancy = 0;
171
6.24k
    mask = 0;
172
6.24k
    prime = 0;
173
6.24k
    items = nullptr;
174
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, 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()
175
  void fini ()
176
399k
  {
177
399k
    hb_object_fini (this);
178
179
399k
    if (likely (items))
180
87.1k
    {
181
87.1k
      unsigned size = mask + 1;
182
79.9M
      for (unsigned i = 0; i < size; i++)
183
79.8M
  items[i].~item_t ();
184
87.1k
      hb_free (items);
185
87.1k
      items = nullptr;
186
87.1k
    }
187
399k
    population = occupancy = 0;
188
399k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::fini()
Line
Count
Source
176
137k
  {
177
137k
    hb_object_fini (this);
178
179
137k
    if (likely (items))
180
62.1k
    {
181
62.1k
      unsigned size = mask + 1;
182
79.3M
      for (unsigned i = 0; i < size; i++)
183
79.2M
  items[i].~item_t ();
184
62.1k
      hb_free (items);
185
62.1k
      items = nullptr;
186
62.1k
    }
187
137k
    population = occupancy = 0;
188
137k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fini()
Line
Count
Source
176
131k
  {
177
131k
    hb_object_fini (this);
178
179
131k
    if (likely (items))
180
6.24k
    {
181
6.24k
      unsigned size = mask + 1;
182
106k
      for (unsigned i = 0; i < size; i++)
183
99.9k
  items[i].~item_t ();
184
6.24k
      hb_free (items);
185
6.24k
      items = nullptr;
186
6.24k
    }
187
131k
    population = occupancy = 0;
188
131k
  }
hb_hashmap_t<unsigned int, Triple, false>::fini()
Line
Count
Source
176
18.7k
  {
177
18.7k
    hb_object_fini (this);
178
179
18.7k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
18.7k
    population = occupancy = 0;
188
18.7k
  }
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
176
6.24k
  {
177
6.24k
    hb_object_fini (this);
178
179
6.24k
    if (likely (items))
180
6.24k
    {
181
6.24k
      unsigned size = mask + 1;
182
106k
      for (unsigned i = 0; i < size; i++)
183
99.9k
  items[i].~item_t ();
184
6.24k
      hb_free (items);
185
6.24k
      items = nullptr;
186
6.24k
    }
187
6.24k
    population = occupancy = 0;
188
6.24k
  }
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<unsigned int, hb_set_t, false>::fini()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::fini()
Line
Count
Source
176
12.4k
  {
177
12.4k
    hb_object_fini (this);
178
179
12.4k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
12.4k
    population = occupancy = 0;
188
12.4k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::fini()
Line
Count
Source
176
12.4k
  {
177
12.4k
    hb_object_fini (this);
178
179
12.4k
    if (likely (items))
180
12.4k
    {
181
12.4k
      unsigned size = mask + 1;
182
412k
      for (unsigned i = 0; i < size; i++)
183
399k
  items[i].~item_t ();
184
12.4k
      hb_free (items);
185
12.4k
      items = nullptr;
186
12.4k
    }
187
12.4k
    population = occupancy = 0;
188
12.4k
  }
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<unsigned int, 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
176
12.4k
  {
177
12.4k
    hb_object_fini (this);
178
179
12.4k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
12.4k
    population = occupancy = 0;
188
12.4k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::fini()
Line
Count
Source
176
12.4k
  {
177
12.4k
    hb_object_fini (this);
178
179
12.4k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
12.4k
    population = occupancy = 0;
188
12.4k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fini()
Line
Count
Source
176
12.4k
  {
177
12.4k
    hb_object_fini (this);
178
179
12.4k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
12.4k
    population = occupancy = 0;
188
12.4k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fini()
Line
Count
Source
176
31.2k
  {
177
31.2k
    hb_object_fini (this);
178
179
31.2k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
31.2k
    population = occupancy = 0;
188
31.2k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::fini()
Line
Count
Source
176
6.24k
  {
177
6.24k
    hb_object_fini (this);
178
179
6.24k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
6.24k
    population = occupancy = 0;
188
6.24k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fini()
Line
Count
Source
176
6.24k
  {
177
6.24k
    hb_object_fini (this);
178
179
6.24k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
6.24k
    population = occupancy = 0;
188
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, 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()
189
190
  hb_hashmap_t& reset ()
191
6.24k
  {
192
6.24k
    successful = true;
193
6.24k
    clear ();
194
6.24k
    return *this;
195
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::reset()
hb_hashmap_t<unsigned int, Triple, false>::reset()
Line
Count
Source
191
6.24k
  {
192
6.24k
    successful = true;
193
6.24k
    clear ();
194
6.24k
    return *this;
195
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::reset()
196
197
338k
  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
197
88.2k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, Triple, false>::in_error() const
Line
Count
Source
197
24.9k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, unsigned int, true>::in_error() const
Line
Count
Source
197
81.2k
  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
197
43.7k
  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
197
12.4k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, face_table_info_t, false>::in_error() const
Line
Count
Source
197
6.24k
  bool in_error () const { return !successful; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::in_error() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::in_error() const
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::in_error() const
Line
Count
Source
197
12.4k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_error() const
Line
Count
Source
197
12.4k
  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
197
12.4k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_error() const
Line
Count
Source
197
31.2k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, TripleDistances, false>::in_error() const
Line
Count
Source
197
6.24k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_error() const
Line
Count
Source
197
6.24k
  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
198
199
  bool alloc (unsigned new_population = 0)
200
209k
  {
201
209k
    if (unlikely (!successful)) return false;
202
203
209k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
196k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
196k
    unsigned int new_size = 1u << power;
207
196k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
196k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
196k
    if (!item_t::is_trivially_constructible)
214
12.4k
      for (auto &_ : hb_iter (new_items, new_size))
215
149k
  new (&_) item_t ();
216
184k
    else
217
184k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
196k
    unsigned int old_size = size ();
220
196k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
196k
    population = occupancy = 0;
224
196k
    mask = new_size - 1;
225
196k
    prime = prime_for (power);
226
196k
    max_chain_length = power * 2;
227
196k
    items = new_items;
228
229
    /* Insert back old items. */
230
26.5M
    for (unsigned int i = 0; i < old_size; i++)
231
26.3M
    {
232
26.3M
      if (old_items[i].is_real ())
233
17.5M
      {
234
17.5M
  set_with_hash (std::move (old_items[i].key),
235
17.5M
           old_items[i].hash,
236
17.5M
           std::move (old_items[i].value));
237
17.5M
      }
238
26.3M
    }
239
26.5M
    for (unsigned int i = 0; i < old_size; i++)
240
26.3M
      old_items[i].~item_t ();
241
242
196k
    hb_free (old_items);
243
244
196k
    return true;
245
196k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::alloc(unsigned int)
Line
Count
Source
200
12.4k
  {
201
12.4k
    if (unlikely (!successful)) return false;
202
203
12.4k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
12.4k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
12.4k
    unsigned int new_size = 1u << power;
207
12.4k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
12.4k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
12.4k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
12.4k
    else
217
12.4k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
12.4k
    unsigned int old_size = size ();
220
12.4k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
12.4k
    population = occupancy = 0;
224
12.4k
    mask = new_size - 1;
225
12.4k
    prime = prime_for (power);
226
12.4k
    max_chain_length = power * 2;
227
12.4k
    items = new_items;
228
229
    /* Insert back old items. */
230
62.4k
    for (unsigned int i = 0; i < old_size; i++)
231
49.9k
    {
232
49.9k
      if (old_items[i].is_real ())
233
31.2k
      {
234
31.2k
  set_with_hash (std::move (old_items[i].key),
235
31.2k
           old_items[i].hash,
236
31.2k
           std::move (old_items[i].value));
237
31.2k
      }
238
49.9k
    }
239
62.4k
    for (unsigned int i = 0; i < old_size; i++)
240
49.9k
      old_items[i].~item_t ();
241
242
12.4k
    hb_free (old_items);
243
244
12.4k
    return true;
245
12.4k
  }
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
200
146k
  {
201
146k
    if (unlikely (!successful)) return false;
202
203
146k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
134k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
134k
    unsigned int new_size = 1u << power;
207
134k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
134k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
134k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
134k
    else
217
134k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
134k
    unsigned int old_size = size ();
220
134k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
134k
    population = occupancy = 0;
224
134k
    mask = new_size - 1;
225
134k
    prime = prime_for (power);
226
134k
    max_chain_length = power * 2;
227
134k
    items = new_items;
228
229
    /* Insert back old items. */
230
26.0M
    for (unsigned int i = 0; i < old_size; i++)
231
25.9M
    {
232
25.9M
      if (old_items[i].is_real ())
233
17.2M
      {
234
17.2M
  set_with_hash (std::move (old_items[i].key),
235
17.2M
           old_items[i].hash,
236
17.2M
           std::move (old_items[i].value));
237
17.2M
      }
238
25.9M
    }
239
26.0M
    for (unsigned int i = 0; i < old_size; i++)
240
25.9M
      old_items[i].~item_t ();
241
242
134k
    hb_free (old_items);
243
244
134k
    return true;
245
134k
  }
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<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<unsigned int, hb_set_t, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::alloc(unsigned int)
Line
Count
Source
200
37.4k
  {
201
37.4k
    if (unlikely (!successful)) return false;
202
203
37.4k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
37.4k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
37.4k
    unsigned int new_size = 1u << power;
207
37.4k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
37.4k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
37.4k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
37.4k
    else
217
37.4k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
37.4k
    unsigned int old_size = size ();
220
37.4k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
37.4k
    population = occupancy = 0;
224
37.4k
    mask = new_size - 1;
225
37.4k
    prime = prime_for (power);
226
37.4k
    max_chain_length = power * 2;
227
37.4k
    items = new_items;
228
229
    /* Insert back old items. */
230
337k
    for (unsigned int i = 0; i < old_size; i++)
231
299k
    {
232
299k
      if (old_items[i].is_real ())
233
187k
      {
234
187k
  set_with_hash (std::move (old_items[i].key),
235
187k
           old_items[i].hash,
236
187k
           std::move (old_items[i].value));
237
187k
      }
238
299k
    }
239
337k
    for (unsigned int i = 0; i < old_size; i++)
240
299k
      old_items[i].~item_t ();
241
242
37.4k
    hb_free (old_items);
243
244
37.4k
    return true;
245
37.4k
  }
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
200
12.4k
  {
201
12.4k
    if (unlikely (!successful)) return false;
202
203
12.4k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
12.4k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
12.4k
    unsigned int new_size = 1u << power;
207
12.4k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
12.4k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
12.4k
    if (!item_t::is_trivially_constructible)
214
12.4k
      for (auto &_ : hb_iter (new_items, new_size))
215
149k
  new (&_) item_t ();
216
0
    else
217
0
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
12.4k
    unsigned int old_size = size ();
220
12.4k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
12.4k
    population = occupancy = 0;
224
12.4k
    mask = new_size - 1;
225
12.4k
    prime = prime_for (power);
226
12.4k
    max_chain_length = power * 2;
227
12.4k
    items = new_items;
228
229
    /* Insert back old items. */
230
62.4k
    for (unsigned int i = 0; i < old_size; i++)
231
49.9k
    {
232
49.9k
      if (old_items[i].is_real ())
233
31.2k
      {
234
31.2k
  set_with_hash (std::move (old_items[i].key),
235
31.2k
           old_items[i].hash,
236
31.2k
           std::move (old_items[i].value));
237
31.2k
      }
238
49.9k
    }
239
62.4k
    for (unsigned int i = 0; i < old_size; i++)
240
49.9k
      old_items[i].~item_t ();
241
242
12.4k
    hb_free (old_items);
243
244
12.4k
    return true;
245
12.4k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::alloc(unsigned int)
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, 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)
246
247
  template <typename KK, typename VV>
248
  bool set_with_hash (KK&& key, uint32_t hash, VV&& value, bool overwrite = true)
249
33.3M
  {
250
33.3M
    if (unlikely (!successful)) return false;
251
33.3M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
33.3M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
33.3M
    unsigned int tombstone = (unsigned int) -1;
255
33.3M
    unsigned int i = hash % prime;
256
33.3M
    unsigned length = 0;
257
33.3M
    unsigned step = 0;
258
38.5M
    while (items[i].is_used ())
259
5.20M
    {
260
5.20M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
5.18M
    items[i] == key)
262
1.77k
      {
263
1.77k
        if (!overwrite)
264
0
    return false;
265
1.77k
        else
266
1.77k
    break;
267
1.77k
      }
268
5.19M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
5.19M
      i = (i + ++step) & mask;
271
5.19M
      length++;
272
5.19M
    }
273
274
33.3M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
33.3M
    if (item.is_used ())
277
1.77k
    {
278
1.77k
      occupancy--;
279
1.77k
      population -= item.is_real ();
280
1.77k
    }
281
282
33.3M
    item.key = std::forward<KK> (key);
283
33.3M
    item.value = std::forward<VV> (value);
284
33.3M
    item.hash = hash;
285
33.3M
    item.set_used (true);
286
33.3M
    item.set_real (true);
287
288
33.3M
    occupancy++;
289
33.3M
    population++;
290
291
33.3M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
23
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
33.3M
    return true;
295
33.3M
  }
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
249
642k
  {
250
642k
    if (unlikely (!successful)) return false;
251
642k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
642k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
642k
    unsigned int tombstone = (unsigned int) -1;
255
642k
    unsigned int i = hash % prime;
256
642k
    unsigned length = 0;
257
642k
    unsigned step = 0;
258
685k
    while (items[i].is_used ())
259
43.4k
    {
260
43.4k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
43.4k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
43.4k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
43.4k
      i = (i + ++step) & mask;
271
43.4k
      length++;
272
43.4k
    }
273
274
642k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
642k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
642k
    item.key = std::forward<KK> (key);
283
642k
    item.value = std::forward<VV> (value);
284
642k
    item.hash = hash;
285
642k
    item.set_used (true);
286
642k
    item.set_real (true);
287
288
642k
    occupancy++;
289
642k
    population++;
290
291
642k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
642k
    return true;
295
642k
  }
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
249
38.2k
  {
250
38.2k
    if (unlikely (!successful)) return false;
251
38.2k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
38.2k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
38.2k
    unsigned int tombstone = (unsigned int) -1;
255
38.2k
    unsigned int i = hash % prime;
256
38.2k
    unsigned length = 0;
257
38.2k
    unsigned step = 0;
258
54.1k
    while (items[i].is_used ())
259
15.8k
    {
260
15.8k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
0
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
15.8k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
15.8k
      i = (i + ++step) & mask;
271
15.8k
      length++;
272
15.8k
    }
273
274
38.2k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
38.2k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
38.2k
    item.key = std::forward<KK> (key);
283
38.2k
    item.value = std::forward<VV> (value);
284
38.2k
    item.hash = hash;
285
38.2k
    item.set_used (true);
286
38.2k
    item.set_real (true);
287
288
38.2k
    occupancy++;
289
38.2k
    population++;
290
291
38.2k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
38.2k
    return true;
295
38.2k
  }
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
249
31.2k
  {
250
31.2k
    if (unlikely (!successful)) return false;
251
31.2k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
31.2k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
31.2k
    unsigned int tombstone = (unsigned int) -1;
255
31.2k
    unsigned int i = hash % prime;
256
31.2k
    unsigned length = 0;
257
31.2k
    unsigned step = 0;
258
31.2k
    while (items[i].is_used ())
259
0
    {
260
0
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
0
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
0
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
0
      i = (i + ++step) & mask;
271
0
      length++;
272
0
    }
273
274
31.2k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
31.2k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
31.2k
    item.key = std::forward<KK> (key);
283
31.2k
    item.value = std::forward<VV> (value);
284
31.2k
    item.hash = hash;
285
31.2k
    item.set_used (true);
286
31.2k
    item.set_real (true);
287
288
31.2k
    occupancy++;
289
31.2k
    population++;
290
291
31.2k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
31.2k
    return true;
295
31.2k
  }
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
249
14.9M
  {
250
14.9M
    if (unlikely (!successful)) return false;
251
14.9M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
14.9M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
14.9M
    unsigned int tombstone = (unsigned int) -1;
255
14.9M
    unsigned int i = hash % prime;
256
14.9M
    unsigned length = 0;
257
14.9M
    unsigned step = 0;
258
19.7M
    while (items[i].is_used ())
259
4.82M
    {
260
4.82M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
4.82M
    items[i] == key)
262
1.77k
      {
263
1.77k
        if (!overwrite)
264
0
    return false;
265
1.77k
        else
266
1.77k
    break;
267
1.77k
      }
268
4.81M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
4.81M
      i = (i + ++step) & mask;
271
4.81M
      length++;
272
4.81M
    }
273
274
14.9M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
14.9M
    if (item.is_used ())
277
1.77k
    {
278
1.77k
      occupancy--;
279
1.77k
      population -= item.is_real ();
280
1.77k
    }
281
282
14.9M
    item.key = std::forward<KK> (key);
283
14.9M
    item.value = std::forward<VV> (value);
284
14.9M
    item.hash = hash;
285
14.9M
    item.set_used (true);
286
14.9M
    item.set_real (true);
287
288
14.9M
    occupancy++;
289
14.9M
    population++;
290
291
14.9M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
23
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
14.9M
    return true;
295
14.9M
  }
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
249
17.2M
  {
250
17.2M
    if (unlikely (!successful)) return false;
251
17.2M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
17.2M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
17.2M
    unsigned int tombstone = (unsigned int) -1;
255
17.2M
    unsigned int i = hash % prime;
256
17.2M
    unsigned length = 0;
257
17.2M
    unsigned step = 0;
258
17.4M
    while (items[i].is_used ())
259
183k
    {
260
183k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
183k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
183k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
183k
      i = (i + ++step) & mask;
271
183k
      length++;
272
183k
    }
273
274
17.2M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
17.2M
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
17.2M
    item.key = std::forward<KK> (key);
283
17.2M
    item.value = std::forward<VV> (value);
284
17.2M
    item.hash = hash;
285
17.2M
    item.set_used (true);
286
17.2M
    item.set_real (true);
287
288
17.2M
    occupancy++;
289
17.2M
    population++;
290
291
17.2M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
17.2M
    return true;
295
17.2M
  }
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<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<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<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)
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
249
156k
  {
250
156k
    if (unlikely (!successful)) return false;
251
156k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
156k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
156k
    unsigned int tombstone = (unsigned int) -1;
255
156k
    unsigned int i = hash % prime;
256
156k
    unsigned length = 0;
257
156k
    unsigned step = 0;
258
199k
    while (items[i].is_used ())
259
43.7k
    {
260
43.7k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
43.7k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
43.7k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
43.7k
      i = (i + ++step) & mask;
271
43.7k
      length++;
272
43.7k
    }
273
274
156k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
156k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
156k
    item.key = std::forward<KK> (key);
283
156k
    item.value = std::forward<VV> (value);
284
156k
    item.hash = hash;
285
156k
    item.set_used (true);
286
156k
    item.set_real (true);
287
288
156k
    occupancy++;
289
156k
    population++;
290
291
156k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
156k
    return true;
295
156k
  }
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
249
187k
  {
250
187k
    if (unlikely (!successful)) return false;
251
187k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
187k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
187k
    unsigned int tombstone = (unsigned int) -1;
255
187k
    unsigned int i = hash % prime;
256
187k
    unsigned length = 0;
257
187k
    unsigned step = 0;
258
249k
    while (items[i].is_used ())
259
62.4k
    {
260
62.4k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
62.4k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
62.4k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
62.4k
      i = (i + ++step) & mask;
271
62.4k
      length++;
272
62.4k
    }
273
274
187k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
187k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
187k
    item.key = std::forward<KK> (key);
283
187k
    item.value = std::forward<VV> (value);
284
187k
    item.hash = hash;
285
187k
    item.set_used (true);
286
187k
    item.set_real (true);
287
288
187k
    occupancy++;
289
187k
    population++;
290
291
187k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
187k
    return true;
295
187k
  }
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
249
68.7k
  {
250
68.7k
    if (unlikely (!successful)) return false;
251
68.7k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
68.7k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
68.7k
    unsigned int tombstone = (unsigned int) -1;
255
68.7k
    unsigned int i = hash % prime;
256
68.7k
    unsigned length = 0;
257
68.7k
    unsigned step = 0;
258
99.9k
    while (items[i].is_used ())
259
31.2k
    {
260
31.2k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
31.2k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
31.2k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
31.2k
      i = (i + ++step) & mask;
271
31.2k
      length++;
272
31.2k
    }
273
274
68.7k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
68.7k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
68.7k
    item.key = std::forward<KK> (key);
283
68.7k
    item.value = std::forward<VV> (value);
284
68.7k
    item.hash = hash;
285
68.7k
    item.set_used (true);
286
68.7k
    item.set_real (true);
287
288
68.7k
    occupancy++;
289
68.7k
    population++;
290
291
68.7k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
68.7k
    return true;
295
68.7k
  }
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<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, 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<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<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<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)
296
297
  template <typename VV>
298
15.7M
  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
298
642k
  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
298
14.9M
  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<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 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)
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
298
156k
  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<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<unsigned int, unsigned int, false>::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<unsigned int, unsigned int, true>::set<int>(unsigned int const&, int&&, 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<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)
299
  template <typename VV>
300
  bool set (K &&key, VV&& value, bool overwrite = true)
301
37.4k
  {
302
37.4k
    uint32_t hash = hb_hash (key);
303
37.4k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
304
37.4k
  }
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, 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<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<unsigned int, unsigned int, true>::set<unsigned int>(unsigned int&&, 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
301
37.4k
  {
302
37.4k
    uint32_t hash = hb_hash (key);
303
37.4k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
304
37.4k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t*, bool, false>::set<bool>(graph::overflow_record_t*&&, bool&&, bool)
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)
305
  bool add (const K &key)
306
  {
307
    uint32_t hash = hb_hash (key);
308
    return set_with_hash (key, hash, item_t::default_value ());
309
  }
310
311
  const V& get_with_hash (const K &key, uint32_t hash) const
312
15.2M
  {
313
15.2M
    if (!items) return item_t::default_value ();
314
15.2M
    auto *item = fetch_item (key, hash);
315
15.2M
    if (item)
316
15.0M
      return item->value;
317
200k
    return item_t::default_value ();
318
15.2M
  }
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
312
43.7k
  {
313
43.7k
    if (!items) return item_t::default_value ();
314
37.4k
    auto *item = fetch_item (key, hash);
315
37.4k
    if (item)
316
5.51k
      return item->value;
317
31.9k
    return item_t::default_value ();
318
37.4k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
312
14.9M
  {
313
14.9M
    if (!items) return item_t::default_value ();
314
14.9M
    auto *item = fetch_item (key, hash);
315
14.9M
    if (item)
316
14.9M
      return item->value;
317
37
    return item_t::default_value ();
318
14.9M
  }
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
312
268k
  {
313
268k
    if (!items) return item_t::default_value ();
314
268k
    auto *item = fetch_item (key, hash);
315
268k
    if (item)
316
99.9k
      return item->value;
317
168k
    return item_t::default_value ();
318
268k
  }
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
319
  const V& get (const K &key) const
320
15.2M
  {
321
15.2M
    if (!items) return item_t::default_value ();
322
15.2M
    return get_with_hash (key, hb_hash (key));
323
15.2M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get(unsigned int const&) const
Line
Count
Source
320
14.9M
  {
321
14.9M
    if (!items) return item_t::default_value ();
322
14.9M
    return get_with_hash (key, hb_hash (key));
323
14.9M
  }
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
320
281k
  {
321
281k
    if (!items) return item_t::default_value ();
322
268k
    return get_with_hash (key, hb_hash (key));
323
281k
  }
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
324
325
  void del (const K &key)
326
0
  {
327
0
    if (!items) return;
328
0
    auto *item = fetch_item (key, hb_hash (key));
329
0
    if (item)
330
0
    {
331
0
      item->set_real (false);
332
0
      population--;
333
0
    }
334
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<unsigned int, unsigned int, false>::del(unsigned int const&)
335
336
  /* Has interface. */
337
14.6M
  const V& operator [] (K k) const { return get (k); }
hb_hashmap_t<unsigned int, unsigned int, true>::operator[](unsigned int) const
Line
Count
Source
337
14.5M
  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
337
124k
  const V& operator [] (K k) const { return get (k); }
338
  template <typename VV=V>
339
  bool has (const K &key, VV **vp = nullptr) const
340
1.11M
  {
341
1.11M
    if (!items) return false;
342
873k
    return has_with_hash (key, hb_hash (key), vp);
343
1.11M
  }
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
340
829k
  {
341
829k
    if (!items) return false;
342
829k
    return has_with_hash (key, hb_hash (key), vp);
343
829k
  }
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, 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
340
18.7k
  {
341
18.7k
    if (!items) return false;
342
0
    return has_with_hash (key, hb_hash (key), vp);
343
18.7k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::has<TripleDistances>(unsigned int const&, TripleDistances**) const
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<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
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
340
218k
  {
341
218k
    if (!items) return false;
342
0
    return has_with_hash (key, hb_hash (key), vp);
343
218k
  }
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<unsigned int, hb_set_t, false>::has<hb_set_t>(unsigned int const&, hb_set_t**) 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
340
12.4k
  {
341
12.4k
    if (!items) return false;
342
12.4k
    return has_with_hash (key, hb_hash (key), vp);
343
12.4k
  }
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
340
37.4k
  {
341
37.4k
    if (!items) return false;
342
31.2k
    return has_with_hash (key, hb_hash (key), vp);
343
37.4k
  }
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<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_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
344
  template <typename VV=V>
345
  bool has_with_hash (const K &key, uint32_t hash, VV **vp = nullptr) const
346
873k
  {
347
873k
    if (!items) return false;
348
873k
    auto *item = fetch_item (key, hash);
349
873k
    if (item)
350
206k
    {
351
206k
      if (vp) *vp = std::addressof (item->value);
352
206k
      return true;
353
206k
    }
354
667k
    return false;
355
873k
  }
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
346
829k
  {
347
829k
    if (!items) return false;
348
829k
    auto *item = fetch_item (key, hash);
349
829k
    if (item)
350
206k
    {
351
206k
      if (vp) *vp = std::addressof (item->value);
352
206k
      return true;
353
206k
    }
354
623k
    return false;
355
829k
  }
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, 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<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<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, 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_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<unsigned int, hb_set_t, false>::has_with_hash<hb_set_t>(unsigned int const&, unsigned int, hb_set_t**) 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
346
12.4k
  {
347
12.4k
    if (!items) return false;
348
12.4k
    auto *item = fetch_item (key, hash);
349
12.4k
    if (item)
350
0
    {
351
0
      if (vp) *vp = std::addressof (item->value);
352
0
      return true;
353
0
    }
354
12.4k
    return false;
355
12.4k
  }
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
346
31.2k
  {
347
31.2k
    if (!items) return false;
348
31.2k
    auto *item = fetch_item (key, hash);
349
31.2k
    if (item)
350
0
    {
351
0
      if (vp) *vp = std::addressof (item->value);
352
0
      return true;
353
0
    }
354
31.2k
    return false;
355
31.2k
  }
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<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_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
356
  item_t *fetch_item (const K &key, uint32_t hash) const
357
16.1M
  {
358
16.1M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
16.1M
    unsigned int i = hash % prime;
360
16.1M
    unsigned step = 0;
361
18.1M
    while (items[i].is_used ())
362
17.3M
    {
363
17.3M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
17.2M
    items[i] == key)
365
15.2M
      {
366
15.2M
  if (items[i].is_real ())
367
15.2M
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
15.2M
      }
371
2.01M
      i = (i + ++step) & mask;
372
2.01M
    }
373
868k
    return nullptr;
374
16.1M
  }
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
357
37.4k
  {
358
37.4k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
37.4k
    unsigned int i = hash % prime;
360
37.4k
    unsigned step = 0;
361
59.6k
    while (items[i].is_used ())
362
27.6k
    {
363
27.6k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
5.51k
    items[i] == key)
365
5.51k
      {
366
5.51k
  if (items[i].is_real ())
367
5.51k
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
5.51k
      }
371
22.1k
      i = (i + ++step) & mask;
372
22.1k
    }
373
31.9k
    return nullptr;
374
37.4k
  }
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
357
15.8M
  {
358
15.8M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
15.8M
    unsigned int i = hash % prime;
360
15.8M
    unsigned step = 0;
361
17.5M
    while (items[i].is_used ())
362
16.9M
    {
363
16.9M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
16.9M
    items[i] == key)
365
15.1M
      {
366
15.1M
  if (items[i].is_real ())
367
15.1M
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
15.1M
      }
371
1.78M
      i = (i + ++step) & mask;
372
1.78M
    }
373
623k
    return nullptr;
374
15.8M
  }
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<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::shared_ptr<hb_set_t>, false>::fetch_item(unsigned int 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<unsigned int, hb_pair_t<unsigned int, int>, 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<unsigned int, hb_set_t, false>::fetch_item(unsigned int 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
357
281k
  {
358
281k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
281k
    unsigned int i = hash % prime;
360
281k
    unsigned step = 0;
361
449k
    while (items[i].is_used ())
362
268k
    {
363
268k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
268k
    items[i] == key)
365
99.9k
      {
366
99.9k
  if (items[i].is_real ())
367
99.9k
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
99.9k
      }
371
168k
      i = (i + ++step) & mask;
372
168k
    }
373
181k
    return nullptr;
374
281k
  }
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
357
31.2k
  {
358
31.2k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
31.2k
    unsigned int i = hash % prime;
360
31.2k
    unsigned step = 0;
361
68.7k
    while (items[i].is_used ())
362
37.4k
    {
363
37.4k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
37.4k
    items[i] == key)
365
0
      {
366
0
  if (items[i].is_real ())
367
0
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
0
      }
371
37.4k
      i = (i + ++step) & mask;
372
37.4k
    }
373
31.2k
    return nullptr;
374
31.2k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::fetch_item(unsigned int const&, unsigned int) const
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_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
375
  /* Projection. */
376
  const V& operator () (K k) const { return get (k); }
377
378
240k
  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
378
12.4k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::size() const
hb_hashmap_t<unsigned int, unsigned int, true>::size() const
Line
Count
Source
378
140k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::size() const
hb_hashmap_t<unsigned int, Triple, false>::size() const
Line
Count
Source
378
6.24k
  unsigned size () const { return mask ? mask + 1 : 0; }
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<unsigned int, hb_set_t, false>::size() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::size() const
Line
Count
Source
378
68.7k
  unsigned size () const { return mask ? mask + 1 : 0; }
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
378
12.4k
  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<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, 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
379
380
  void clear ()
381
6.24k
  {
382
6.24k
    if (unlikely (!successful)) return;
383
384
6.24k
    for (auto &_ : hb_iter (items, size ()))
385
0
    {
386
      /* Reconstruct items. */
387
0
      _.~item_t ();
388
0
      new (&_) item_t ();
389
0
    }
390
391
6.24k
    population = occupancy = 0;
392
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::clear()
hb_hashmap_t<unsigned int, Triple, false>::clear()
Line
Count
Source
381
6.24k
  {
382
6.24k
    if (unlikely (!successful)) return;
383
384
6.24k
    for (auto &_ : hb_iter (items, size ()))
385
0
    {
386
      /* Reconstruct items. */
387
0
      _.~item_t ();
388
0
      new (&_) item_t ();
389
0
    }
390
391
6.24k
    population = occupancy = 0;
392
6.24k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::clear()
393
394
32.8k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, unsigned int, true>::is_empty() const
Line
Count
Source
394
6.24k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, Triple, false>::is_empty() const
Line
Count
Source
394
12.4k
  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<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
394
14.0k
  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
395
6.24k
  explicit operator bool () const { return !is_empty (); }
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
395
6.24k
  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
396
397
  uint32_t hash () const
398
0
  {
399
0
    return
400
0
    + iter_items ()
401
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
402
0
    ;
403
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const
404
405
  bool is_equal (const hb_hashmap_t &other) const
406
0
  {
407
0
    if (population != other.population) return false;
408
409
0
    for (auto pair : iter ())
410
0
      if (other.get (pair.first) != pair.second)
411
0
        return false;
412
413
0
    return true;
414
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
415
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
416
  bool operator != (const hb_hashmap_t &other) const { return !is_equal (other); }
417
418
37.4k
  unsigned int get_population () const { return population; }
hb_hashmap_t<unsigned int, unsigned int, true>::get_population() const
Line
Count
Source
418
18.7k
  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
hb_hashmap_t<unsigned int, face_table_info_t, false>::get_population() const
Line
Count
Source
418
18.7k
  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
419
420
  void update (const hb_hashmap_t &other)
421
0
  {
422
0
    if (unlikely (!successful)) return;
423
424
0
    hb_copy (other, *this);
425
0
  }
426
427
  /*
428
   * Iterator
429
   */
430
431
  auto iter_items () const HB_AUTO_RETURN
432
  (
433
    + hb_iter (items, this->size ())
434
    | hb_filter (&item_t::is_real)
435
  )
436
  auto iter_ref () const HB_AUTO_RETURN
437
  (
438
    + this->iter_items ()
439
    | hb_map (&item_t::get_pair_ref)
440
  )
441
  auto iter () const HB_AUTO_RETURN
442
  (
443
    + this->iter_items ()
444
    | hb_map (&item_t::get_pair)
445
  )
446
  auto keys_ref () const HB_AUTO_RETURN
447
  (
448
    + this->iter_items ()
449
    | hb_map (&item_t::get_key)
450
  )
451
  auto keys () const HB_AUTO_RETURN
452
  (
453
    + this->keys_ref ()
454
    | hb_map (hb_ridentity)
455
  )
456
  auto values_ref () const HB_AUTO_RETURN
457
  (
458
    + this->iter_items ()
459
    | hb_map (&item_t::get_value)
460
  )
461
  auto values () const HB_AUTO_RETURN
462
  (
463
    + this->values_ref ()
464
    | hb_map (hb_ridentity)
465
  )
466
467
  /* C iterator. */
468
  bool next (int *idx,
469
       K *key,
470
       V *value) const
471
0
  {
472
0
    unsigned i = (unsigned) (*idx + 1);
473
474
0
    unsigned count = size ();
475
0
    while (i < count && !items[i].is_real ())
476
0
      i++;
477
478
0
    if (i >= count)
479
0
    {
480
0
      *idx = -1;
481
0
      return false;
482
0
    }
483
484
0
    *key = items[i].key;
485
0
    *value = items[i].value;
486
487
0
    *idx = (signed) i;
488
0
    return true;
489
0
  }
490
491
  /* Sink interface. */
492
  hb_hashmap_t& operator << (const hb_pair_t<K, V>& v)
493
642k
  { 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
493
642k
  { set (v.first, v.second); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator<<(hb_pair_t<unsigned int, Triple> const&)
494
  template <typename V2 = V,
495
      hb_enable_if (!hb_is_trivially_copyable (V2))>
496
  hb_hashmap_t& operator << (const hb_pair_t<K, V&&>& v)
497
  { set (v.first, std::move (v.second)); return *this; }
498
  template <typename K2 = K,
499
      hb_enable_if (!hb_is_trivially_copyable (K2))>
500
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V>& v)
501
  { set (std::move (v.first), v.second); return *this; }
502
  template <typename K2 = K, typename V2 = V,
503
      hb_enable_if (!hb_is_trivially_copyable (K2) &&
504
        !hb_is_trivially_copyable (V2))>
505
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V&&>& v)
506
  { set (std::move (v.first), std::move (v.second)); return *this; }
507
508
  static unsigned int prime_for (unsigned int shift)
509
196k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
196k
    /*static*/ const unsigned int prime_mod [32] =
518
196k
    {
519
196k
      1,          /* For 1 << 0 */
520
196k
      2,
521
196k
      3,
522
196k
      7,
523
196k
      13,
524
196k
      31,
525
196k
      61,
526
196k
      127,
527
196k
      251,
528
196k
      509,
529
196k
      1021,
530
196k
      2039,
531
196k
      4093,
532
196k
      8191,
533
196k
      16381,
534
196k
      32749,
535
196k
      65521,      /* For 1 << 16 */
536
196k
      131071,
537
196k
      262139,
538
196k
      524287,
539
196k
      1048573,
540
196k
      2097143,
541
196k
      4194301,
542
196k
      8388593,
543
196k
      16777213,
544
196k
      33554393,
545
196k
      67108859,
546
196k
      134217689,
547
196k
      268435399,
548
196k
      536870909,
549
196k
      1073741789,
550
196k
      2147483647  /* For 1 << 31 */
551
196k
    };
552
553
196k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
196k
    return prime_mod[shift];
557
196k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::prime_for(unsigned int)
Line
Count
Source
509
12.4k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
12.4k
    /*static*/ const unsigned int prime_mod [32] =
518
12.4k
    {
519
12.4k
      1,          /* For 1 << 0 */
520
12.4k
      2,
521
12.4k
      3,
522
12.4k
      7,
523
12.4k
      13,
524
12.4k
      31,
525
12.4k
      61,
526
12.4k
      127,
527
12.4k
      251,
528
12.4k
      509,
529
12.4k
      1021,
530
12.4k
      2039,
531
12.4k
      4093,
532
12.4k
      8191,
533
12.4k
      16381,
534
12.4k
      32749,
535
12.4k
      65521,      /* For 1 << 16 */
536
12.4k
      131071,
537
12.4k
      262139,
538
12.4k
      524287,
539
12.4k
      1048573,
540
12.4k
      2097143,
541
12.4k
      4194301,
542
12.4k
      8388593,
543
12.4k
      16777213,
544
12.4k
      33554393,
545
12.4k
      67108859,
546
12.4k
      134217689,
547
12.4k
      268435399,
548
12.4k
      536870909,
549
12.4k
      1073741789,
550
12.4k
      2147483647  /* For 1 << 31 */
551
12.4k
    };
552
553
12.4k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
12.4k
    return prime_mod[shift];
557
12.4k
  }
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
509
134k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
134k
    /*static*/ const unsigned int prime_mod [32] =
518
134k
    {
519
134k
      1,          /* For 1 << 0 */
520
134k
      2,
521
134k
      3,
522
134k
      7,
523
134k
      13,
524
134k
      31,
525
134k
      61,
526
134k
      127,
527
134k
      251,
528
134k
      509,
529
134k
      1021,
530
134k
      2039,
531
134k
      4093,
532
134k
      8191,
533
134k
      16381,
534
134k
      32749,
535
134k
      65521,      /* For 1 << 16 */
536
134k
      131071,
537
134k
      262139,
538
134k
      524287,
539
134k
      1048573,
540
134k
      2097143,
541
134k
      4194301,
542
134k
      8388593,
543
134k
      16777213,
544
134k
      33554393,
545
134k
      67108859,
546
134k
      134217689,
547
134k
      268435399,
548
134k
      536870909,
549
134k
      1073741789,
550
134k
      2147483647  /* For 1 << 31 */
551
134k
    };
552
553
134k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
134k
    return prime_mod[shift];
557
134k
  }
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<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<unsigned int, hb_set_t, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::prime_for(unsigned int)
Line
Count
Source
509
37.4k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
37.4k
    /*static*/ const unsigned int prime_mod [32] =
518
37.4k
    {
519
37.4k
      1,          /* For 1 << 0 */
520
37.4k
      2,
521
37.4k
      3,
522
37.4k
      7,
523
37.4k
      13,
524
37.4k
      31,
525
37.4k
      61,
526
37.4k
      127,
527
37.4k
      251,
528
37.4k
      509,
529
37.4k
      1021,
530
37.4k
      2039,
531
37.4k
      4093,
532
37.4k
      8191,
533
37.4k
      16381,
534
37.4k
      32749,
535
37.4k
      65521,      /* For 1 << 16 */
536
37.4k
      131071,
537
37.4k
      262139,
538
37.4k
      524287,
539
37.4k
      1048573,
540
37.4k
      2097143,
541
37.4k
      4194301,
542
37.4k
      8388593,
543
37.4k
      16777213,
544
37.4k
      33554393,
545
37.4k
      67108859,
546
37.4k
      134217689,
547
37.4k
      268435399,
548
37.4k
      536870909,
549
37.4k
      1073741789,
550
37.4k
      2147483647  /* For 1 << 31 */
551
37.4k
    };
552
553
37.4k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
37.4k
    return prime_mod[shift];
557
37.4k
  }
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
509
12.4k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
12.4k
    /*static*/ const unsigned int prime_mod [32] =
518
12.4k
    {
519
12.4k
      1,          /* For 1 << 0 */
520
12.4k
      2,
521
12.4k
      3,
522
12.4k
      7,
523
12.4k
      13,
524
12.4k
      31,
525
12.4k
      61,
526
12.4k
      127,
527
12.4k
      251,
528
12.4k
      509,
529
12.4k
      1021,
530
12.4k
      2039,
531
12.4k
      4093,
532
12.4k
      8191,
533
12.4k
      16381,
534
12.4k
      32749,
535
12.4k
      65521,      /* For 1 << 16 */
536
12.4k
      131071,
537
12.4k
      262139,
538
12.4k
      524287,
539
12.4k
      1048573,
540
12.4k
      2097143,
541
12.4k
      4194301,
542
12.4k
      8388593,
543
12.4k
      16777213,
544
12.4k
      33554393,
545
12.4k
      67108859,
546
12.4k
      134217689,
547
12.4k
      268435399,
548
12.4k
      536870909,
549
12.4k
      1073741789,
550
12.4k
      2147483647  /* For 1 << 31 */
551
12.4k
    };
552
553
12.4k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
12.4k
    return prime_mod[shift];
557
12.4k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::prime_for(unsigned int)
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, 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)
558
};
559
560
/*
561
 * hb_map_t
562
 */
563
564
struct hb_map_t : hb_hashmap_t<hb_codepoint_t,
565
             hb_codepoint_t,
566
             true>
567
{
568
  using hashmap = hb_hashmap_t<hb_codepoint_t,
569
             hb_codepoint_t,
570
             true>;
571
572
  ~hb_map_t () = default;
573
137k
  hb_map_t () : hashmap () {}
574
0
  hb_map_t (const hb_map_t &o) : hashmap ((hashmap &) o) {}
575
0
  hb_map_t (hb_map_t &&o)  noexcept : hashmap (std::move ((hashmap &) o)) {}
576
0
  hb_map_t& operator= (const hb_map_t&) = default;
577
0
  hb_map_t& operator= (hb_map_t&&) = default;
578
0
  hb_map_t (std::initializer_list<hb_codepoint_pair_t> lst) : hashmap (lst) {}
579
  template <typename Iterable,
580
      hb_requires (hb_is_iterable (Iterable))>
581
0
  hb_map_t (const Iterable &o) : hashmap (o) {}
582
};
583
584
585
#endif /* HB_MAP_HH */