Coverage Report

Created: 2026-07-10 11:04

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
320k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::hb_hashmap_t()
Line
Count
Source
47
47.7k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, unsigned int, true>::hb_hashmap_t()
Line
Count
Source
47
142k
  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
13.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t()
Line
Count
Source
47
20.4k
  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.81k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
13.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::hb_hashmap_t()
Line
Count
Source
47
13.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::hb_hashmap_t()
Line
Count
Source
47
13.6k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::hb_hashmap_t()
Line
Count
Source
47
34.0k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::hb_hashmap_t()
Line
Count
Source
47
6.81k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::hb_hashmap_t()
Line
Count
Source
47
6.81k
  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
320k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::~hb_hashmap_t()
Line
Count
Source
48
47.7k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, unsigned int, true>::~hb_hashmap_t()
Line
Count
Source
48
142k
  ~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
13.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, Triple, false>::~hb_hashmap_t()
Line
Count
Source
48
20.4k
  ~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.81k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
13.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::~hb_hashmap_t()
Line
Count
Source
48
13.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::~hb_hashmap_t()
Line
Count
Source
48
13.6k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::~hb_hashmap_t()
Line
Count
Source
48
34.0k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::~hb_hashmap_t()
Line
Count
Source
48
6.81k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::~hb_hashmap_t()
Line
Count
Source
48
6.81k
  ~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.81k
  {
52
6.81k
    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.81k
  {
52
6.81k
    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.81k
  {
77
6.81k
    reset ();
78
6.81k
    if (!items) { _copy (o); return *this; }
79
0
    alloc (o.population); hb_copy (o, *this); return *this;
80
6.81k
  }
hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
76
6.81k
  {
77
6.81k
    reset ();
78
6.81k
    if (!items) { _copy (o); return *this; }
79
0
    alloc (o.population); hb_copy (o, *this); return *this;
80
6.81k
  }
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
163k
    is_real_ (false), is_used_ (false),
110
163k
    hash (0),
111
163k
    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
163k
    is_real_ (false), is_used_ (false),
110
163k
    hash (0),
111
163k
    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
81.8k
    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
81.8k
    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
474k
    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
215k
    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
259k
    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
97.9M
    bool is_used () const { return is_used_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_used() const
Line
Count
Source
117
96.0M
    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
233k
    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.35M
    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
259k
    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
36.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
35.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
75.7k
    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
374k
    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
74.9k
    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
36.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
35.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
75.7k
    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
374k
    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
74.9k
    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
52.5M
    bool is_real () const { return is_real_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_real() const
Line
Count
Source
120
50.7M
    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
77.6k
    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.64M
    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
88.6k
    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
239k
    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
41.6k
    static inline const V& default_value () { return Null(V); };
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10shared_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj15TripleDistancesLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj6TripleLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
_ZN12hb_hashmap_tIj17face_table_info_tLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Line
Count
Source
124
197k
    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
40
    {
129
40
      static_assert (hb_is_same (V, hb_codepoint_t), "");
130
40
      return minus_1;
131
40
    };
_ZN12hb_hashmap_tIjjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
Line
Count
Source
128
40
    {
129
40
      static_assert (hb_is_same (V, hb_codepoint_t), "");
130
40
      return minus_1;
131
40
    };
Unexecuted instantiation: _ZN12hb_hashmap_tI10hb_array_tIKcEjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
132
133
24.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
23.9M
    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
6.08k
    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
409k
    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
74.9k
    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
88.6k
    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
88.6k
    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
381k
  {
166
381k
    hb_object_init (this);
167
168
381k
    successful = true;
169
381k
    max_chain_length = 0;
170
381k
    population = occupancy = 0;
171
381k
    mask = 0;
172
381k
    prime = 0;
173
381k
    items = nullptr;
174
381k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::init()
Line
Count
Source
165
142k
  {
166
142k
    hb_object_init (this);
167
168
142k
    successful = true;
169
142k
    max_chain_length = 0;
170
142k
    population = occupancy = 0;
171
142k
    mask = 0;
172
142k
    prime = 0;
173
142k
    items = nullptr;
174
142k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::init()
Line
Count
Source
165
95.4k
  {
166
95.4k
    hb_object_init (this);
167
168
95.4k
    successful = true;
169
95.4k
    max_chain_length = 0;
170
95.4k
    population = occupancy = 0;
171
95.4k
    mask = 0;
172
95.4k
    prime = 0;
173
95.4k
    items = nullptr;
174
95.4k
  }
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::init()
Line
Count
Source
165
6.81k
  {
166
6.81k
    hb_object_init (this);
167
168
6.81k
    successful = true;
169
6.81k
    max_chain_length = 0;
170
6.81k
    population = occupancy = 0;
171
6.81k
    mask = 0;
172
6.81k
    prime = 0;
173
6.81k
    items = nullptr;
174
6.81k
  }
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
20.4k
  {
166
20.4k
    hb_object_init (this);
167
168
20.4k
    successful = true;
169
20.4k
    max_chain_length = 0;
170
20.4k
    population = occupancy = 0;
171
20.4k
    mask = 0;
172
20.4k
    prime = 0;
173
20.4k
    items = nullptr;
174
20.4k
  }
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
13.6k
  {
166
13.6k
    hb_object_init (this);
167
168
13.6k
    successful = true;
169
13.6k
    max_chain_length = 0;
170
13.6k
    population = occupancy = 0;
171
13.6k
    mask = 0;
172
13.6k
    prime = 0;
173
13.6k
    items = nullptr;
174
13.6k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::init()
Line
Count
Source
165
13.6k
  {
166
13.6k
    hb_object_init (this);
167
168
13.6k
    successful = true;
169
13.6k
    max_chain_length = 0;
170
13.6k
    population = occupancy = 0;
171
13.6k
    mask = 0;
172
13.6k
    prime = 0;
173
13.6k
    items = nullptr;
174
13.6k
  }
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
13.6k
  {
166
13.6k
    hb_object_init (this);
167
168
13.6k
    successful = true;
169
13.6k
    max_chain_length = 0;
170
13.6k
    population = occupancy = 0;
171
13.6k
    mask = 0;
172
13.6k
    prime = 0;
173
13.6k
    items = nullptr;
174
13.6k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::init()
Line
Count
Source
165
13.6k
  {
166
13.6k
    hb_object_init (this);
167
168
13.6k
    successful = true;
169
13.6k
    max_chain_length = 0;
170
13.6k
    population = occupancy = 0;
171
13.6k
    mask = 0;
172
13.6k
    prime = 0;
173
13.6k
    items = nullptr;
174
13.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::init()
Line
Count
Source
165
13.6k
  {
166
13.6k
    hb_object_init (this);
167
168
13.6k
    successful = true;
169
13.6k
    max_chain_length = 0;
170
13.6k
    population = occupancy = 0;
171
13.6k
    mask = 0;
172
13.6k
    prime = 0;
173
13.6k
    items = nullptr;
174
13.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::init()
Line
Count
Source
165
34.0k
  {
166
34.0k
    hb_object_init (this);
167
168
34.0k
    successful = true;
169
34.0k
    max_chain_length = 0;
170
34.0k
    population = occupancy = 0;
171
34.0k
    mask = 0;
172
34.0k
    prime = 0;
173
34.0k
    items = nullptr;
174
34.0k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::init()
Line
Count
Source
165
6.81k
  {
166
6.81k
    hb_object_init (this);
167
168
6.81k
    successful = true;
169
6.81k
    max_chain_length = 0;
170
6.81k
    population = occupancy = 0;
171
6.81k
    mask = 0;
172
6.81k
    prime = 0;
173
6.81k
    items = nullptr;
174
6.81k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::init()
Line
Count
Source
165
6.81k
  {
166
6.81k
    hb_object_init (this);
167
168
6.81k
    successful = true;
169
6.81k
    max_chain_length = 0;
170
6.81k
    population = occupancy = 0;
171
6.81k
    mask = 0;
172
6.81k
    prime = 0;
173
6.81k
    items = nullptr;
174
6.81k
  }
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
429k
  {
177
429k
    hb_object_fini (this);
178
179
429k
    if (likely (items))
180
88.2k
    {
181
88.2k
      unsigned size = mask + 1;
182
87.0M
      for (unsigned i = 0; i < size; i++)
183
86.9M
  items[i].~item_t ();
184
88.2k
      hb_free (items);
185
88.2k
      items = nullptr;
186
88.2k
    }
187
429k
    population = occupancy = 0;
188
429k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::fini()
Line
Count
Source
176
142k
  {
177
142k
    hb_object_fini (this);
178
179
142k
    if (likely (items))
180
61.0k
    {
181
61.0k
      unsigned size = mask + 1;
182
86.3M
      for (unsigned i = 0; i < size; i++)
183
86.3M
  items[i].~item_t ();
184
61.0k
      hb_free (items);
185
61.0k
      items = nullptr;
186
61.0k
    }
187
142k
    population = occupancy = 0;
188
142k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fini()
Line
Count
Source
176
143k
  {
177
143k
    hb_object_fini (this);
178
179
143k
    if (likely (items))
180
6.81k
    {
181
6.81k
      unsigned size = mask + 1;
182
115k
      for (unsigned i = 0; i < size; i++)
183
109k
  items[i].~item_t ();
184
6.81k
      hb_free (items);
185
6.81k
      items = nullptr;
186
6.81k
    }
187
143k
    population = occupancy = 0;
188
143k
  }
hb_hashmap_t<unsigned int, Triple, false>::fini()
Line
Count
Source
176
20.4k
  {
177
20.4k
    hb_object_fini (this);
178
179
20.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
20.4k
    population = occupancy = 0;
188
20.4k
  }
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.81k
  {
177
6.81k
    hb_object_fini (this);
178
179
6.81k
    if (likely (items))
180
6.81k
    {
181
6.81k
      unsigned size = mask + 1;
182
115k
      for (unsigned i = 0; i < size; i++)
183
109k
  items[i].~item_t ();
184
6.81k
      hb_free (items);
185
6.81k
      items = nullptr;
186
6.81k
    }
187
6.81k
    population = occupancy = 0;
188
6.81k
  }
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
13.6k
  {
177
13.6k
    hb_object_fini (this);
178
179
13.6k
    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
13.6k
    population = occupancy = 0;
188
13.6k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::fini()
Line
Count
Source
176
13.6k
  {
177
13.6k
    hb_object_fini (this);
178
179
13.6k
    if (likely (items))
180
13.6k
    {
181
13.6k
      unsigned size = mask + 1;
182
449k
      for (unsigned i = 0; i < size; i++)
183
436k
  items[i].~item_t ();
184
13.6k
      hb_free (items);
185
13.6k
      items = nullptr;
186
13.6k
    }
187
13.6k
    population = occupancy = 0;
188
13.6k
  }
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
13.6k
  {
177
13.6k
    hb_object_fini (this);
178
179
13.6k
    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
13.6k
    population = occupancy = 0;
188
13.6k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::fini()
Line
Count
Source
176
13.6k
  {
177
13.6k
    hb_object_fini (this);
178
179
13.6k
    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
13.6k
    population = occupancy = 0;
188
13.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fini()
Line
Count
Source
176
13.6k
  {
177
13.6k
    hb_object_fini (this);
178
179
13.6k
    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
13.6k
    population = occupancy = 0;
188
13.6k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fini()
Line
Count
Source
176
34.0k
  {
177
34.0k
    hb_object_fini (this);
178
179
34.0k
    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
34.0k
    population = occupancy = 0;
188
34.0k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::fini()
Line
Count
Source
176
6.81k
  {
177
6.81k
    hb_object_fini (this);
178
179
6.81k
    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.81k
    population = occupancy = 0;
188
6.81k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fini()
Line
Count
Source
176
6.81k
  {
177
6.81k
    hb_object_fini (this);
178
179
6.81k
    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.81k
    population = occupancy = 0;
188
6.81k
  }
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.81k
  {
192
6.81k
    successful = true;
193
6.81k
    clear ();
194
6.81k
    return *this;
195
6.81k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::reset()
hb_hashmap_t<unsigned int, Triple, false>::reset()
Line
Count
Source
191
6.81k
  {
192
6.81k
    successful = true;
193
6.81k
    clear ();
194
6.81k
    return *this;
195
6.81k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::reset()
196
197
368k
  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
96.1k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, Triple, false>::in_error() const
Line
Count
Source
197
27.2k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, unsigned int, true>::in_error() const
Line
Count
Source
197
88.6k
  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
47.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
13.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, face_table_info_t, false>::in_error() const
Line
Count
Source
197
6.81k
  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
13.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_error() const
Line
Count
Source
197
13.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::in_error() const
Line
Count
Source
197
13.6k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::in_error() const
Line
Count
Source
197
34.0k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, TripleDistances, false>::in_error() const
Line
Count
Source
197
6.81k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_error() const
Line
Count
Source
197
6.81k
  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
220k
  {
201
220k
    if (unlikely (!successful)) return false;
202
203
220k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
207k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
207k
    unsigned int new_size = 1u << power;
207
207k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
207k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
207k
    if (!item_t::is_trivially_constructible)
214
13.6k
      for (auto &_ : hb_iter (new_items, new_size))
215
163k
  new (&_) item_t ();
216
193k
    else
217
193k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
207k
    unsigned int old_size = size ();
220
207k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
207k
    population = occupancy = 0;
224
207k
    mask = new_size - 1;
225
207k
    prime = prime_for (power);
226
207k
    max_chain_length = power * 2;
227
207k
    items = new_items;
228
229
    /* Insert back old items. */
230
28.9M
    for (unsigned int i = 0; i < old_size; i++)
231
28.7M
    {
232
28.7M
      if (old_items[i].is_real ())
233
19.0M
      {
234
19.0M
  set_with_hash (std::move (old_items[i].key),
235
19.0M
           old_items[i].hash,
236
19.0M
           std::move (old_items[i].value));
237
19.0M
      }
238
28.7M
    }
239
28.9M
    for (unsigned int i = 0; i < old_size; i++)
240
28.7M
      old_items[i].~item_t ();
241
242
207k
    hb_free (old_items);
243
244
207k
    return true;
245
207k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::alloc(unsigned int)
Line
Count
Source
200
13.6k
  {
201
13.6k
    if (unlikely (!successful)) return false;
202
203
13.6k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
13.6k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
13.6k
    unsigned int new_size = 1u << power;
207
13.6k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
13.6k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
13.6k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
13.6k
    else
217
13.6k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
13.6k
    unsigned int old_size = size ();
220
13.6k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
13.6k
    population = occupancy = 0;
224
13.6k
    mask = new_size - 1;
225
13.6k
    prime = prime_for (power);
226
13.6k
    max_chain_length = power * 2;
227
13.6k
    items = new_items;
228
229
    /* Insert back old items. */
230
68.1k
    for (unsigned int i = 0; i < old_size; i++)
231
54.5k
    {
232
54.5k
      if (old_items[i].is_real ())
233
34.0k
      {
234
34.0k
  set_with_hash (std::move (old_items[i].key),
235
34.0k
           old_items[i].hash,
236
34.0k
           std::move (old_items[i].value));
237
34.0k
      }
238
54.5k
    }
239
68.1k
    for (unsigned int i = 0; i < old_size; i++)
240
54.5k
      old_items[i].~item_t ();
241
242
13.6k
    hb_free (old_items);
243
244
13.6k
    return true;
245
13.6k
  }
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
152k
  {
201
152k
    if (unlikely (!successful)) return false;
202
203
152k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
138k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
138k
    unsigned int new_size = 1u << power;
207
138k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
138k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
138k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
138k
    else
217
138k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
138k
    unsigned int old_size = size ();
220
138k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
138k
    population = occupancy = 0;
224
138k
    mask = new_size - 1;
225
138k
    prime = prime_for (power);
226
138k
    max_chain_length = power * 2;
227
138k
    items = new_items;
228
229
    /* Insert back old items. */
230
28.4M
    for (unsigned int i = 0; i < old_size; i++)
231
28.2M
    {
232
28.2M
      if (old_items[i].is_real ())
233
18.8M
      {
234
18.8M
  set_with_hash (std::move (old_items[i].key),
235
18.8M
           old_items[i].hash,
236
18.8M
           std::move (old_items[i].value));
237
18.8M
      }
238
28.2M
    }
239
28.4M
    for (unsigned int i = 0; i < old_size; i++)
240
28.2M
      old_items[i].~item_t ();
241
242
138k
    hb_free (old_items);
243
244
138k
    return true;
245
138k
  }
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
40.9k
  {
201
40.9k
    if (unlikely (!successful)) return false;
202
203
40.9k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
40.9k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
40.9k
    unsigned int new_size = 1u << power;
207
40.9k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
40.9k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
40.9k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
40.9k
    else
217
40.9k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
40.9k
    unsigned int old_size = size ();
220
40.9k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
40.9k
    population = occupancy = 0;
224
40.9k
    mask = new_size - 1;
225
40.9k
    prime = prime_for (power);
226
40.9k
    max_chain_length = power * 2;
227
40.9k
    items = new_items;
228
229
    /* Insert back old items. */
230
368k
    for (unsigned int i = 0; i < old_size; i++)
231
327k
    {
232
327k
      if (old_items[i].is_real ())
233
204k
      {
234
204k
  set_with_hash (std::move (old_items[i].key),
235
204k
           old_items[i].hash,
236
204k
           std::move (old_items[i].value));
237
204k
      }
238
327k
    }
239
368k
    for (unsigned int i = 0; i < old_size; i++)
240
327k
      old_items[i].~item_t ();
241
242
40.9k
    hb_free (old_items);
243
244
40.9k
    return true;
245
40.9k
  }
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
13.6k
  {
201
13.6k
    if (unlikely (!successful)) return false;
202
203
13.6k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
13.6k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
13.6k
    unsigned int new_size = 1u << power;
207
13.6k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
13.6k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
13.6k
    if (!item_t::is_trivially_constructible)
214
13.6k
      for (auto &_ : hb_iter (new_items, new_size))
215
163k
  new (&_) item_t ();
216
0
    else
217
0
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
13.6k
    unsigned int old_size = size ();
220
13.6k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
13.6k
    population = occupancy = 0;
224
13.6k
    mask = new_size - 1;
225
13.6k
    prime = prime_for (power);
226
13.6k
    max_chain_length = power * 2;
227
13.6k
    items = new_items;
228
229
    /* Insert back old items. */
230
68.1k
    for (unsigned int i = 0; i < old_size; i++)
231
54.5k
    {
232
54.5k
      if (old_items[i].is_real ())
233
34.0k
      {
234
34.0k
  set_with_hash (std::move (old_items[i].key),
235
34.0k
           old_items[i].hash,
236
34.0k
           std::move (old_items[i].value));
237
34.0k
      }
238
54.5k
    }
239
68.1k
    for (unsigned int i = 0; i < old_size; i++)
240
54.5k
      old_items[i].~item_t ();
241
242
13.6k
    hb_free (old_items);
243
244
13.6k
    return true;
245
13.6k
  }
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
36.3M
  {
250
36.3M
    if (unlikely (!successful)) return false;
251
36.3M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
36.3M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
36.3M
    unsigned int tombstone = (unsigned int) -1;
255
36.3M
    unsigned int i = hash % prime;
256
36.3M
    unsigned length = 0;
257
36.3M
    unsigned step = 0;
258
41.9M
    while (items[i].is_used ())
259
5.65M
    {
260
5.65M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
5.64M
    items[i] == key)
262
1.91k
      {
263
1.91k
        if (!overwrite)
264
0
    return false;
265
1.91k
        else
266
1.91k
    break;
267
1.91k
      }
268
5.65M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
5.65M
      i = (i + ++step) & mask;
271
5.65M
      length++;
272
5.65M
    }
273
274
36.3M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
36.3M
    if (item.is_used ())
277
1.91k
    {
278
1.91k
      occupancy--;
279
1.91k
      population -= item.is_real ();
280
1.91k
    }
281
282
36.3M
    item.key = std::forward<KK> (key);
283
36.3M
    item.value = std::forward<VV> (value);
284
36.3M
    item.hash = hash;
285
36.3M
    item.set_used (true);
286
36.3M
    item.set_real (true);
287
288
36.3M
    occupancy++;
289
36.3M
    population++;
290
291
36.3M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
20
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
36.3M
    return true;
295
36.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
671k
  {
250
671k
    if (unlikely (!successful)) return false;
251
671k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
671k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
671k
    unsigned int tombstone = (unsigned int) -1;
255
671k
    unsigned int i = hash % prime;
256
671k
    unsigned length = 0;
257
671k
    unsigned step = 0;
258
716k
    while (items[i].is_used ())
259
44.8k
    {
260
44.8k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
44.8k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
44.8k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
44.8k
      i = (i + ++step) & mask;
271
44.8k
      length++;
272
44.8k
    }
273
274
671k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
671k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
671k
    item.key = std::forward<KK> (key);
283
671k
    item.value = std::forward<VV> (value);
284
671k
    item.hash = hash;
285
671k
    item.set_used (true);
286
671k
    item.set_real (true);
287
288
671k
    occupancy++;
289
671k
    population++;
290
291
671k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
671k
    return true;
295
671k
  }
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
41.6k
  {
250
41.6k
    if (unlikely (!successful)) return false;
251
41.6k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
41.6k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
41.6k
    unsigned int tombstone = (unsigned int) -1;
255
41.6k
    unsigned int i = hash % prime;
256
41.6k
    unsigned length = 0;
257
41.6k
    unsigned step = 0;
258
58.6k
    while (items[i].is_used ())
259
16.9k
    {
260
16.9k
      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
16.9k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
16.9k
      i = (i + ++step) & mask;
271
16.9k
      length++;
272
16.9k
    }
273
274
41.6k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
41.6k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
41.6k
    item.key = std::forward<KK> (key);
283
41.6k
    item.value = std::forward<VV> (value);
284
41.6k
    item.hash = hash;
285
41.6k
    item.set_used (true);
286
41.6k
    item.set_real (true);
287
288
41.6k
    occupancy++;
289
41.6k
    population++;
290
291
41.6k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
41.6k
    return true;
295
41.6k
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::set_with_hash<hb_serialize_context_t::object_t const*, unsigned int>(hb_serialize_context_t::object_t const*&&, unsigned int, unsigned int&&, bool)
Line
Count
Source
249
34.0k
  {
250
34.0k
    if (unlikely (!successful)) return false;
251
34.0k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
34.0k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
34.0k
    unsigned int tombstone = (unsigned int) -1;
255
34.0k
    unsigned int i = hash % prime;
256
34.0k
    unsigned length = 0;
257
34.0k
    unsigned step = 0;
258
34.0k
    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
34.0k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
34.0k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
34.0k
    item.key = std::forward<KK> (key);
283
34.0k
    item.value = std::forward<VV> (value);
284
34.0k
    item.hash = hash;
285
34.0k
    item.set_used (true);
286
34.0k
    item.set_real (true);
287
288
34.0k
    occupancy++;
289
34.0k
    population++;
290
291
34.0k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
34.0k
    return true;
295
34.0k
  }
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
16.3M
  {
250
16.3M
    if (unlikely (!successful)) return false;
251
16.3M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
16.3M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
16.3M
    unsigned int tombstone = (unsigned int) -1;
255
16.3M
    unsigned int i = hash % prime;
256
16.3M
    unsigned length = 0;
257
16.3M
    unsigned step = 0;
258
21.5M
    while (items[i].is_used ())
259
5.24M
    {
260
5.24M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
5.24M
    items[i] == key)
262
1.91k
      {
263
1.91k
        if (!overwrite)
264
0
    return false;
265
1.91k
        else
266
1.91k
    break;
267
1.91k
      }
268
5.24M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
5.24M
      i = (i + ++step) & mask;
271
5.24M
      length++;
272
5.24M
    }
273
274
16.3M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
16.3M
    if (item.is_used ())
277
1.91k
    {
278
1.91k
      occupancy--;
279
1.91k
      population -= item.is_real ();
280
1.91k
    }
281
282
16.3M
    item.key = std::forward<KK> (key);
283
16.3M
    item.value = std::forward<VV> (value);
284
16.3M
    item.hash = hash;
285
16.3M
    item.set_used (true);
286
16.3M
    item.set_real (true);
287
288
16.3M
    occupancy++;
289
16.3M
    population++;
290
291
16.3M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
20
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
16.3M
    return true;
295
16.3M
  }
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
18.8M
  {
250
18.8M
    if (unlikely (!successful)) return false;
251
18.8M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
18.8M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
18.8M
    unsigned int tombstone = (unsigned int) -1;
255
18.8M
    unsigned int i = hash % prime;
256
18.8M
    unsigned length = 0;
257
18.8M
    unsigned step = 0;
258
19.0M
    while (items[i].is_used ())
259
197k
    {
260
197k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
197k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
197k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
197k
      i = (i + ++step) & mask;
271
197k
      length++;
272
197k
    }
273
274
18.8M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
18.8M
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
18.8M
    item.key = std::forward<KK> (key);
283
18.8M
    item.value = std::forward<VV> (value);
284
18.8M
    item.hash = hash;
285
18.8M
    item.set_used (true);
286
18.8M
    item.set_real (true);
287
288
18.8M
    occupancy++;
289
18.8M
    population++;
290
291
18.8M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
18.8M
    return true;
295
18.8M
  }
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
170k
  {
250
170k
    if (unlikely (!successful)) return false;
251
170k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
170k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
170k
    unsigned int tombstone = (unsigned int) -1;
255
170k
    unsigned int i = hash % prime;
256
170k
    unsigned length = 0;
257
170k
    unsigned step = 0;
258
218k
    while (items[i].is_used ())
259
47.7k
    {
260
47.7k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
47.7k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
47.7k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
47.7k
      i = (i + ++step) & mask;
271
47.7k
      length++;
272
47.7k
    }
273
274
170k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
170k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
170k
    item.key = std::forward<KK> (key);
283
170k
    item.value = std::forward<VV> (value);
284
170k
    item.hash = hash;
285
170k
    item.set_used (true);
286
170k
    item.set_real (true);
287
288
170k
    occupancy++;
289
170k
    population++;
290
291
170k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
170k
    return true;
295
170k
  }
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
204k
  {
250
204k
    if (unlikely (!successful)) return false;
251
204k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
204k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
204k
    unsigned int tombstone = (unsigned int) -1;
255
204k
    unsigned int i = hash % prime;
256
204k
    unsigned length = 0;
257
204k
    unsigned step = 0;
258
272k
    while (items[i].is_used ())
259
68.1k
    {
260
68.1k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
68.1k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
68.1k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
68.1k
      i = (i + ++step) & mask;
271
68.1k
      length++;
272
68.1k
    }
273
274
204k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
204k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
204k
    item.key = std::forward<KK> (key);
283
204k
    item.value = std::forward<VV> (value);
284
204k
    item.hash = hash;
285
204k
    item.set_used (true);
286
204k
    item.set_real (true);
287
288
204k
    occupancy++;
289
204k
    population++;
290
291
204k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
204k
    return true;
295
204k
  }
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
74.9k
  {
250
74.9k
    if (unlikely (!successful)) return false;
251
74.9k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
74.9k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
74.9k
    unsigned int tombstone = (unsigned int) -1;
255
74.9k
    unsigned int i = hash % prime;
256
74.9k
    unsigned length = 0;
257
74.9k
    unsigned step = 0;
258
109k
    while (items[i].is_used ())
259
34.0k
    {
260
34.0k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
34.0k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
34.0k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
34.0k
      i = (i + ++step) & mask;
271
34.0k
      length++;
272
34.0k
    }
273
274
74.9k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
74.9k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
74.9k
    item.key = std::forward<KK> (key);
283
74.9k
    item.value = std::forward<VV> (value);
284
74.9k
    item.hash = hash;
285
74.9k
    item.set_used (true);
286
74.9k
    item.set_real (true);
287
288
74.9k
    occupancy++;
289
74.9k
    population++;
290
291
74.9k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
74.9k
    return true;
295
74.9k
  }
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
17.1M
  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
671k
  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
16.3M
  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
170k
  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
40.9k
  {
302
40.9k
    uint32_t hash = hb_hash (key);
303
40.9k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
304
40.9k
  }
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
40.9k
  {
302
40.9k
    uint32_t hash = hb_hash (key);
303
40.9k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
304
40.9k
  }
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
16.6M
  {
313
16.6M
    if (!items) return item_t::default_value ();
314
16.6M
    auto *item = fetch_item (key, hash);
315
16.6M
    if (item)
316
16.4M
      return item->value;
317
218k
    return item_t::default_value ();
318
16.6M
  }
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
47.7k
  {
313
47.7k
    if (!items) return item_t::default_value ();
314
40.9k
    auto *item = fetch_item (key, hash);
315
40.9k
    if (item)
316
6.08k
      return item->value;
317
34.8k
    return item_t::default_value ();
318
40.9k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
312
16.3M
  {
313
16.3M
    if (!items) return item_t::default_value ();
314
16.3M
    auto *item = fetch_item (key, hash);
315
16.3M
    if (item)
316
16.3M
      return item->value;
317
40
    return item_t::default_value ();
318
16.3M
  }
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
293k
  {
313
293k
    if (!items) return item_t::default_value ();
314
293k
    auto *item = fetch_item (key, hash);
315
293k
    if (item)
316
109k
      return item->value;
317
184k
    return item_t::default_value ();
318
293k
  }
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
16.6M
  {
321
16.6M
    if (!items) return item_t::default_value ();
322
16.6M
    return get_with_hash (key, hb_hash (key));
323
16.6M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get(unsigned int const&) const
Line
Count
Source
320
16.3M
  {
321
16.3M
    if (!items) return item_t::default_value ();
322
16.3M
    return get_with_hash (key, hb_hash (key));
323
16.3M
  }
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
306k
  {
321
306k
    if (!items) return item_t::default_value ();
322
293k
    return get_with_hash (key, hb_hash (key));
323
306k
  }
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
15.9M
  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
15.8M
  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
136k
  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.04M
  {
341
1.04M
    if (!items) return false;
342
791k
    return has_with_hash (key, hb_hash (key), vp);
343
1.04M
  }
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
743k
  {
341
743k
    if (!items) return false;
342
743k
    return has_with_hash (key, hb_hash (key), vp);
343
743k
  }
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
20.4k
  {
341
20.4k
    if (!items) return false;
342
0
    return has_with_hash (key, hb_hash (key), vp);
343
20.4k
  }
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
227k
  {
341
227k
    if (!items) return false;
342
0
    return has_with_hash (key, hb_hash (key), vp);
343
227k
  }
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
13.6k
  {
341
13.6k
    if (!items) return false;
342
13.6k
    return has_with_hash (key, hb_hash (key), vp);
343
13.6k
  }
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
40.9k
  {
341
40.9k
    if (!items) return false;
342
34.0k
    return has_with_hash (key, hb_hash (key), vp);
343
40.9k
  }
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
791k
  {
347
791k
    if (!items) return false;
348
791k
    auto *item = fetch_item (key, hash);
349
791k
    if (item)
350
213k
    {
351
213k
      if (vp) *vp = std::addressof (item->value);
352
213k
      return true;
353
213k
    }
354
577k
    return false;
355
791k
  }
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
743k
  {
347
743k
    if (!items) return false;
348
743k
    auto *item = fetch_item (key, hash);
349
743k
    if (item)
350
213k
    {
351
213k
      if (vp) *vp = std::addressof (item->value);
352
213k
      return true;
353
213k
    }
354
529k
    return false;
355
743k
  }
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
13.6k
  {
347
13.6k
    if (!items) return false;
348
13.6k
    auto *item = fetch_item (key, hash);
349
13.6k
    if (item)
350
0
    {
351
0
      if (vp) *vp = std::addressof (item->value);
352
0
      return true;
353
0
    }
354
13.6k
    return false;
355
13.6k
  }
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
34.0k
  {
347
34.0k
    if (!items) return false;
348
34.0k
    auto *item = fetch_item (key, hash);
349
34.0k
    if (item)
350
0
    {
351
0
      if (vp) *vp = std::addressof (item->value);
352
0
      return true;
353
0
    }
354
34.0k
    return false;
355
34.0k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int>(unsigned int const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<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
17.4M
  {
358
17.4M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
17.4M
    unsigned int i = hash % prime;
360
17.4M
    unsigned step = 0;
361
19.5M
    while (items[i].is_used ())
362
18.8M
    {
363
18.8M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
18.7M
    items[i] == key)
365
16.6M
      {
366
16.6M
  if (items[i].is_real ())
367
16.6M
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
16.6M
      }
371
2.15M
      i = (i + ++step) & mask;
372
2.15M
    }
373
796k
    return nullptr;
374
17.4M
  }
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
40.9k
  {
358
40.9k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
40.9k
    unsigned int i = hash % prime;
360
40.9k
    unsigned step = 0;
361
64.7k
    while (items[i].is_used ())
362
29.8k
    {
363
29.8k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
6.08k
    items[i] == key)
365
6.08k
      {
366
6.08k
  if (items[i].is_real ())
367
6.08k
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
6.08k
      }
371
23.8k
      i = (i + ++step) & mask;
372
23.8k
    }
373
34.8k
    return nullptr;
374
40.9k
  }
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
17.0M
  {
358
17.0M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
17.0M
    unsigned int i = hash % prime;
360
17.0M
    unsigned step = 0;
361
18.9M
    while (items[i].is_used ())
362
18.4M
    {
363
18.4M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
18.4M
    items[i] == key)
365
16.5M
      {
366
16.5M
  if (items[i].is_real ())
367
16.5M
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
16.5M
      }
371
1.90M
      i = (i + ++step) & mask;
372
1.90M
    }
373
529k
    return nullptr;
374
17.0M
  }
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
306k
  {
358
306k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
306k
    unsigned int i = hash % prime;
360
306k
    unsigned step = 0;
361
490k
    while (items[i].is_used ())
362
293k
    {
363
293k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
293k
    items[i] == key)
365
109k
      {
366
109k
  if (items[i].is_real ())
367
109k
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
109k
      }
371
184k
      i = (i + ++step) & mask;
372
184k
    }
373
197k
    return nullptr;
374
306k
  }
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
34.0k
  {
358
34.0k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
34.0k
    unsigned int i = hash % prime;
360
34.0k
    unsigned step = 0;
361
74.9k
    while (items[i].is_used ())
362
40.9k
    {
363
40.9k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
40.9k
    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
40.9k
      i = (i + ++step) & mask;
372
40.9k
    }
373
34.0k
    return nullptr;
374
34.0k
  }
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
248k
  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
13.6k
  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
145k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::size() const
Unexecuted instantiation: hb_hashmap_t<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
74.9k
  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
13.6k
  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.81k
  {
382
    /* Early-out on already-empty.  Protects the Null singleton
383
     * (zero-initialized) from any writes.  Any non-empty hashmap
384
     * is a real heap instance with writable items, so clearing
385
     * under !successful is safe. */
386
6.81k
    if (!population && !occupancy) return;
387
388
0
    for (auto &_ : hb_iter (items, size ()))
389
0
    {
390
      /* Reconstruct items. */
391
0
      _.~item_t ();
392
0
      new (&_) item_t ();
393
0
    }
394
395
0
    population = occupancy = 0;
396
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::clear()
hb_hashmap_t<unsigned int, Triple, false>::clear()
Line
Count
Source
381
6.81k
  {
382
    /* Early-out on already-empty.  Protects the Null singleton
383
     * (zero-initialized) from any writes.  Any non-empty hashmap
384
     * is a real heap instance with writable items, so clearing
385
     * under !successful is safe. */
386
6.81k
    if (!population && !occupancy) return;
387
388
0
    for (auto &_ : hb_iter (items, size ()))
389
0
    {
390
      /* Reconstruct items. */
391
0
      _.~item_t ();
392
0
      new (&_) item_t ();
393
0
    }
394
395
0
    population = occupancy = 0;
396
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::clear()
397
398
35.7k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, unsigned int, true>::is_empty() const
Line
Count
Source
398
6.81k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, Triple, false>::is_empty() const
Line
Count
Source
398
13.6k
  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
398
15.2k
  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
399
6.81k
  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
399
6.81k
  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
400
401
  uint32_t hash () const
402
0
  {
403
0
    return
404
0
    + iter_items ()
405
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
406
0
    ;
407
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const
408
409
  bool is_equal (const hb_hashmap_t &other) const
410
0
  {
411
0
    if (population != other.population) return false;
412
413
0
    for (auto pair : iter ())
414
0
      if (other.get (pair.first) != pair.second)
415
0
        return false;
416
417
0
    return true;
418
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
419
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
420
  bool operator != (const hb_hashmap_t &other) const { return !is_equal (other); }
421
422
40.9k
  unsigned int get_population () const { return population; }
hb_hashmap_t<unsigned int, unsigned int, true>::get_population() const
Line
Count
Source
422
20.4k
  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
422
20.4k
  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
423
424
  void update (const hb_hashmap_t &other)
425
0
  {
426
0
    if (unlikely (!successful)) return;
427
428
0
    hb_copy (other, *this);
429
0
  }
430
431
  /*
432
   * Iterator
433
   */
434
435
  auto iter_items () const HB_AUTO_RETURN
436
  (
437
    + hb_iter (items, this->size ())
438
    | hb_filter (&item_t::is_real)
439
  )
440
  auto iter_ref () const HB_AUTO_RETURN
441
  (
442
    + this->iter_items ()
443
    | hb_map (&item_t::get_pair_ref)
444
  )
445
  auto iter () const HB_AUTO_RETURN
446
  (
447
    + this->iter_items ()
448
    | hb_map (&item_t::get_pair)
449
  )
450
  auto keys_ref () const HB_AUTO_RETURN
451
  (
452
    + this->iter_items ()
453
    | hb_map (&item_t::get_key)
454
  )
455
  auto keys () const HB_AUTO_RETURN
456
  (
457
    + this->keys_ref ()
458
    | hb_map (hb_ridentity)
459
  )
460
  auto values_ref () const HB_AUTO_RETURN
461
  (
462
    + this->iter_items ()
463
    | hb_map (&item_t::get_value)
464
  )
465
  auto values () const HB_AUTO_RETURN
466
  (
467
    + this->values_ref ()
468
    | hb_map (hb_ridentity)
469
  )
470
471
  /* C iterator. */
472
  bool next (int *idx,
473
       K *key,
474
       V *value) const
475
0
  {
476
0
    unsigned i = (unsigned) (*idx + 1);
477
478
0
    unsigned count = size ();
479
0
    while (i < count && !items[i].is_real ())
480
0
      i++;
481
482
0
    if (i >= count)
483
0
    {
484
0
      *idx = -1;
485
0
      return false;
486
0
    }
487
488
0
    *key = items[i].key;
489
0
    *value = items[i].value;
490
491
0
    *idx = (signed) i;
492
0
    return true;
493
0
  }
494
495
  /* Sink interface. */
496
  hb_hashmap_t& operator << (const hb_pair_t<K, V>& v)
497
671k
  { 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
497
671k
  { set (v.first, v.second); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator<<(hb_pair_t<unsigned int, Triple> const&)
498
  template <typename V2 = V,
499
      hb_enable_if (!hb_is_trivially_copyable (V2))>
500
  hb_hashmap_t& operator << (const hb_pair_t<K, V&&>& v)
501
  { set (v.first, std::move (v.second)); return *this; }
502
  template <typename K2 = K,
503
      hb_enable_if (!hb_is_trivially_copyable (K2))>
504
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V>& v)
505
  { set (std::move (v.first), v.second); return *this; }
506
  template <typename K2 = K, typename V2 = V,
507
      hb_enable_if (!hb_is_trivially_copyable (K2) &&
508
        !hb_is_trivially_copyable (V2))>
509
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V&&>& v)
510
  { set (std::move (v.first), std::move (v.second)); return *this; }
511
512
  static unsigned int prime_for (unsigned int shift)
513
207k
  {
514
    /* Following comment and table copied from glib. */
515
    /* Each table size has an associated prime modulo (the first prime
516
     * lower than the table size) used to find the initial bucket. Probing
517
     * then works modulo 2^n. The prime modulo is necessary to get a
518
     * good distribution with poor hash functions.
519
     */
520
    /* Not declaring static to make all kinds of compilers happy... */
521
207k
    /*static*/ const unsigned int prime_mod [32] =
522
207k
    {
523
207k
      1,          /* For 1 << 0 */
524
207k
      2,
525
207k
      3,
526
207k
      7,
527
207k
      13,
528
207k
      31,
529
207k
      61,
530
207k
      127,
531
207k
      251,
532
207k
      509,
533
207k
      1021,
534
207k
      2039,
535
207k
      4093,
536
207k
      8191,
537
207k
      16381,
538
207k
      32749,
539
207k
      65521,      /* For 1 << 16 */
540
207k
      131071,
541
207k
      262139,
542
207k
      524287,
543
207k
      1048573,
544
207k
      2097143,
545
207k
      4194301,
546
207k
      8388593,
547
207k
      16777213,
548
207k
      33554393,
549
207k
      67108859,
550
207k
      134217689,
551
207k
      268435399,
552
207k
      536870909,
553
207k
      1073741789,
554
207k
      2147483647  /* For 1 << 31 */
555
207k
    };
556
557
207k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
558
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
559
560
207k
    return prime_mod[shift];
561
207k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::prime_for(unsigned int)
Line
Count
Source
513
13.6k
  {
514
    /* Following comment and table copied from glib. */
515
    /* Each table size has an associated prime modulo (the first prime
516
     * lower than the table size) used to find the initial bucket. Probing
517
     * then works modulo 2^n. The prime modulo is necessary to get a
518
     * good distribution with poor hash functions.
519
     */
520
    /* Not declaring static to make all kinds of compilers happy... */
521
13.6k
    /*static*/ const unsigned int prime_mod [32] =
522
13.6k
    {
523
13.6k
      1,          /* For 1 << 0 */
524
13.6k
      2,
525
13.6k
      3,
526
13.6k
      7,
527
13.6k
      13,
528
13.6k
      31,
529
13.6k
      61,
530
13.6k
      127,
531
13.6k
      251,
532
13.6k
      509,
533
13.6k
      1021,
534
13.6k
      2039,
535
13.6k
      4093,
536
13.6k
      8191,
537
13.6k
      16381,
538
13.6k
      32749,
539
13.6k
      65521,      /* For 1 << 16 */
540
13.6k
      131071,
541
13.6k
      262139,
542
13.6k
      524287,
543
13.6k
      1048573,
544
13.6k
      2097143,
545
13.6k
      4194301,
546
13.6k
      8388593,
547
13.6k
      16777213,
548
13.6k
      33554393,
549
13.6k
      67108859,
550
13.6k
      134217689,
551
13.6k
      268435399,
552
13.6k
      536870909,
553
13.6k
      1073741789,
554
13.6k
      2147483647  /* For 1 << 31 */
555
13.6k
    };
556
557
13.6k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
558
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
559
560
13.6k
    return prime_mod[shift];
561
13.6k
  }
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
513
138k
  {
514
    /* Following comment and table copied from glib. */
515
    /* Each table size has an associated prime modulo (the first prime
516
     * lower than the table size) used to find the initial bucket. Probing
517
     * then works modulo 2^n. The prime modulo is necessary to get a
518
     * good distribution with poor hash functions.
519
     */
520
    /* Not declaring static to make all kinds of compilers happy... */
521
138k
    /*static*/ const unsigned int prime_mod [32] =
522
138k
    {
523
138k
      1,          /* For 1 << 0 */
524
138k
      2,
525
138k
      3,
526
138k
      7,
527
138k
      13,
528
138k
      31,
529
138k
      61,
530
138k
      127,
531
138k
      251,
532
138k
      509,
533
138k
      1021,
534
138k
      2039,
535
138k
      4093,
536
138k
      8191,
537
138k
      16381,
538
138k
      32749,
539
138k
      65521,      /* For 1 << 16 */
540
138k
      131071,
541
138k
      262139,
542
138k
      524287,
543
138k
      1048573,
544
138k
      2097143,
545
138k
      4194301,
546
138k
      8388593,
547
138k
      16777213,
548
138k
      33554393,
549
138k
      67108859,
550
138k
      134217689,
551
138k
      268435399,
552
138k
      536870909,
553
138k
      1073741789,
554
138k
      2147483647  /* For 1 << 31 */
555
138k
    };
556
557
138k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
558
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
559
560
138k
    return prime_mod[shift];
561
138k
  }
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
513
40.9k
  {
514
    /* Following comment and table copied from glib. */
515
    /* Each table size has an associated prime modulo (the first prime
516
     * lower than the table size) used to find the initial bucket. Probing
517
     * then works modulo 2^n. The prime modulo is necessary to get a
518
     * good distribution with poor hash functions.
519
     */
520
    /* Not declaring static to make all kinds of compilers happy... */
521
40.9k
    /*static*/ const unsigned int prime_mod [32] =
522
40.9k
    {
523
40.9k
      1,          /* For 1 << 0 */
524
40.9k
      2,
525
40.9k
      3,
526
40.9k
      7,
527
40.9k
      13,
528
40.9k
      31,
529
40.9k
      61,
530
40.9k
      127,
531
40.9k
      251,
532
40.9k
      509,
533
40.9k
      1021,
534
40.9k
      2039,
535
40.9k
      4093,
536
40.9k
      8191,
537
40.9k
      16381,
538
40.9k
      32749,
539
40.9k
      65521,      /* For 1 << 16 */
540
40.9k
      131071,
541
40.9k
      262139,
542
40.9k
      524287,
543
40.9k
      1048573,
544
40.9k
      2097143,
545
40.9k
      4194301,
546
40.9k
      8388593,
547
40.9k
      16777213,
548
40.9k
      33554393,
549
40.9k
      67108859,
550
40.9k
      134217689,
551
40.9k
      268435399,
552
40.9k
      536870909,
553
40.9k
      1073741789,
554
40.9k
      2147483647  /* For 1 << 31 */
555
40.9k
    };
556
557
40.9k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
558
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
559
560
40.9k
    return prime_mod[shift];
561
40.9k
  }
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
513
13.6k
  {
514
    /* Following comment and table copied from glib. */
515
    /* Each table size has an associated prime modulo (the first prime
516
     * lower than the table size) used to find the initial bucket. Probing
517
     * then works modulo 2^n. The prime modulo is necessary to get a
518
     * good distribution with poor hash functions.
519
     */
520
    /* Not declaring static to make all kinds of compilers happy... */
521
13.6k
    /*static*/ const unsigned int prime_mod [32] =
522
13.6k
    {
523
13.6k
      1,          /* For 1 << 0 */
524
13.6k
      2,
525
13.6k
      3,
526
13.6k
      7,
527
13.6k
      13,
528
13.6k
      31,
529
13.6k
      61,
530
13.6k
      127,
531
13.6k
      251,
532
13.6k
      509,
533
13.6k
      1021,
534
13.6k
      2039,
535
13.6k
      4093,
536
13.6k
      8191,
537
13.6k
      16381,
538
13.6k
      32749,
539
13.6k
      65521,      /* For 1 << 16 */
540
13.6k
      131071,
541
13.6k
      262139,
542
13.6k
      524287,
543
13.6k
      1048573,
544
13.6k
      2097143,
545
13.6k
      4194301,
546
13.6k
      8388593,
547
13.6k
      16777213,
548
13.6k
      33554393,
549
13.6k
      67108859,
550
13.6k
      134217689,
551
13.6k
      268435399,
552
13.6k
      536870909,
553
13.6k
      1073741789,
554
13.6k
      2147483647  /* For 1 << 31 */
555
13.6k
    };
556
557
13.6k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
558
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
559
560
13.6k
    return prime_mod[shift];
561
13.6k
  }
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)
562
};
563
564
/*
565
 * hb_map_t
566
 */
567
568
struct hb_map_t : hb_hashmap_t<hb_codepoint_t,
569
             hb_codepoint_t,
570
             true>
571
{
572
  using hashmap = hb_hashmap_t<hb_codepoint_t,
573
             hb_codepoint_t,
574
             true>;
575
576
  ~hb_map_t () = default;
577
142k
  hb_map_t () : hashmap () {}
578
0
  hb_map_t (const hb_map_t &o) : hashmap ((hashmap &) o) {}
579
0
  hb_map_t (hb_map_t &&o)  noexcept : hashmap (std::move ((hashmap &) o)) {}
580
0
  hb_map_t& operator= (const hb_map_t&) = default;
581
0
  hb_map_t& operator= (hb_map_t&&) = default;
582
0
  hb_map_t (std::initializer_list<hb_codepoint_pair_t> lst) : hashmap (lst) {}
583
  template <typename Iterable,
584
      hb_requires (hb_is_iterable (Iterable))>
585
0
  hb_map_t (const Iterable &o) : hashmap (o) {}
586
};
587
588
589
#endif /* HB_MAP_HH */