Coverage Report

Created: 2026-03-31 11:00

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
309k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::hb_hashmap_t()
Line
Count
Source
47
45.9k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, unsigned int, true>::hb_hashmap_t()
Line
Count
Source
47
138k
  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.1k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, Triple, false>::hb_hashmap_t()
Line
Count
Source
47
19.7k
  hb_hashmap_t ()  { init (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t*, bool, false>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::hb_hashmap_t()
Line
Count
Source
47
6.57k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::hb_hashmap_t()
Line
Count
Source
47
13.1k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::hb_hashmap_t()
Line
Count
Source
47
13.1k
  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.1k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::hb_hashmap_t()
Line
Count
Source
47
32.8k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::hb_hashmap_t()
Line
Count
Source
47
6.57k
  hb_hashmap_t ()  { init (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::hb_hashmap_t()
Line
Count
Source
47
6.57k
  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
309k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::~hb_hashmap_t()
Line
Count
Source
48
45.9k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, unsigned int, true>::~hb_hashmap_t()
Line
Count
Source
48
138k
  ~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.1k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, Triple, false>::~hb_hashmap_t()
Line
Count
Source
48
19.7k
  ~hb_hashmap_t () { fini (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t*, bool, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::~hb_hashmap_t()
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::~hb_hashmap_t()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
6.57k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::~hb_hashmap_t()
Line
Count
Source
48
13.1k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::~hb_hashmap_t()
Line
Count
Source
48
13.1k
  ~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.1k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::~hb_hashmap_t()
Line
Count
Source
48
32.8k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, TripleDistances, false>::~hb_hashmap_t()
Line
Count
Source
48
6.57k
  ~hb_hashmap_t () { fini (); }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::~hb_hashmap_t()
Line
Count
Source
48
6.57k
  ~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.57k
  {
52
6.57k
    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.57k
  {
52
6.57k
    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.57k
  {
77
6.57k
    reset ();
78
6.57k
    if (!items) { _copy (o); return *this; }
79
0
    alloc (o.population); hb_copy (o, *this); return *this;
80
6.57k
  }
hb_hashmap_t<unsigned int, Triple, false>::operator=(hb_hashmap_t<unsigned int, Triple, false> const&)
Line
Count
Source
76
6.57k
  {
77
6.57k
    reset ();
78
6.57k
    if (!items) { _copy (o); return *this; }
79
0
    alloc (o.population); hb_copy (o, *this); return *this;
80
6.57k
  }
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
157k
    is_real_ (false), is_used_ (false),
110
157k
    hash (0),
111
157k
    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
157k
    is_real_ (false), is_used_ (false),
110
157k
    hash (0),
111
157k
    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
78.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
78.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
465k
    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
249k
    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
94.5M
    bool is_used () const { return is_used_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_used() const
Line
Count
Source
117
92.7M
    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
225k
    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.30M
    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
249k
    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
35.0M
    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
34.5M
    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
73.0k
    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
361k
    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
72.2k
    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
35.0M
    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
34.5M
    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
73.0k
    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
361k
    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
72.2k
    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
50.7M
    bool is_real () const { return is_real_; }
hb_hashmap_t<unsigned int, unsigned int, true>::item_t::is_real() const
Line
Count
Source
120
49.0M
    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
75.1k
    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.58M
    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
85.4k
    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
230k
    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
40.2k
    static inline const V& default_value () { return Null(V); };
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10unique_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIjN2hb10shared_ptrI8hb_set_tEELb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS3_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj15TripleDistancesLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Unexecuted instantiation: _ZN12hb_hashmap_tIj6TripleLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
_ZN12hb_hashmap_tIj17face_table_info_tLb0EE6item_t13default_valueILb0ETnPN12hb_enable_ifIXeqT_Lb0EEvE4typeELPv0EEERKS0_v
Line
Count
Source
124
190k
    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
38
    {
129
38
      static_assert (hb_is_same (V, hb_codepoint_t), "");
130
38
      return minus_1;
131
38
    };
_ZN12hb_hashmap_tIjjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
Line
Count
Source
128
38
    {
129
38
      static_assert (hb_is_same (V, hb_codepoint_t), "");
130
38
      return minus_1;
131
38
    };
Unexecuted instantiation: _ZN12hb_hashmap_tI10hb_array_tIKcEjLb1EE6item_t13default_valueILb1ETnPN12hb_enable_ifIXeqT_Lb1EEvE4typeELPv0EEERKjv
132
133
23.5M
    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.1M
    bool operator == (const K &o) const { return hb_deref (key) == hb_deref (o); }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::item_t::operator==(hb_serialize_context_t::object_t const* const&) const
Line
Count
Source
133
5.78k
    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
394k
    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
72.2k
    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
85.4k
    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
85.4k
    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
368k
  {
166
368k
    hb_object_init (this);
167
168
368k
    successful = true;
169
368k
    max_chain_length = 0;
170
368k
    population = occupancy = 0;
171
368k
    mask = 0;
172
368k
    prime = 0;
173
368k
    items = nullptr;
174
368k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::init()
Line
Count
Source
165
138k
  {
166
138k
    hb_object_init (this);
167
168
138k
    successful = true;
169
138k
    max_chain_length = 0;
170
138k
    population = occupancy = 0;
171
138k
    mask = 0;
172
138k
    prime = 0;
173
138k
    items = nullptr;
174
138k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::init()
Line
Count
Source
165
91.9k
  {
166
91.9k
    hb_object_init (this);
167
168
91.9k
    successful = true;
169
91.9k
    max_chain_length = 0;
170
91.9k
    population = occupancy = 0;
171
91.9k
    mask = 0;
172
91.9k
    prime = 0;
173
91.9k
    items = nullptr;
174
91.9k
  }
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::init()
Line
Count
Source
165
6.57k
  {
166
6.57k
    hb_object_init (this);
167
168
6.57k
    successful = true;
169
6.57k
    max_chain_length = 0;
170
6.57k
    population = occupancy = 0;
171
6.57k
    mask = 0;
172
6.57k
    prime = 0;
173
6.57k
    items = nullptr;
174
6.57k
  }
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
19.7k
  {
166
19.7k
    hb_object_init (this);
167
168
19.7k
    successful = true;
169
19.7k
    max_chain_length = 0;
170
19.7k
    population = occupancy = 0;
171
19.7k
    mask = 0;
172
19.7k
    prime = 0;
173
19.7k
    items = nullptr;
174
19.7k
  }
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::init()
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::init()
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::init()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::init()
Line
Count
Source
165
13.1k
  {
166
13.1k
    hb_object_init (this);
167
168
13.1k
    successful = true;
169
13.1k
    max_chain_length = 0;
170
13.1k
    population = occupancy = 0;
171
13.1k
    mask = 0;
172
13.1k
    prime = 0;
173
13.1k
    items = nullptr;
174
13.1k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::init()
Line
Count
Source
165
13.1k
  {
166
13.1k
    hb_object_init (this);
167
168
13.1k
    successful = true;
169
13.1k
    max_chain_length = 0;
170
13.1k
    population = occupancy = 0;
171
13.1k
    mask = 0;
172
13.1k
    prime = 0;
173
13.1k
    items = nullptr;
174
13.1k
  }
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.1k
  {
166
13.1k
    hb_object_init (this);
167
168
13.1k
    successful = true;
169
13.1k
    max_chain_length = 0;
170
13.1k
    population = occupancy = 0;
171
13.1k
    mask = 0;
172
13.1k
    prime = 0;
173
13.1k
    items = nullptr;
174
13.1k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::init()
Line
Count
Source
165
13.1k
  {
166
13.1k
    hb_object_init (this);
167
168
13.1k
    successful = true;
169
13.1k
    max_chain_length = 0;
170
13.1k
    population = occupancy = 0;
171
13.1k
    mask = 0;
172
13.1k
    prime = 0;
173
13.1k
    items = nullptr;
174
13.1k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::init()
Line
Count
Source
165
13.1k
  {
166
13.1k
    hb_object_init (this);
167
168
13.1k
    successful = true;
169
13.1k
    max_chain_length = 0;
170
13.1k
    population = occupancy = 0;
171
13.1k
    mask = 0;
172
13.1k
    prime = 0;
173
13.1k
    items = nullptr;
174
13.1k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::init()
Line
Count
Source
165
32.8k
  {
166
32.8k
    hb_object_init (this);
167
168
32.8k
    successful = true;
169
32.8k
    max_chain_length = 0;
170
32.8k
    population = occupancy = 0;
171
32.8k
    mask = 0;
172
32.8k
    prime = 0;
173
32.8k
    items = nullptr;
174
32.8k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::init()
Line
Count
Source
165
6.57k
  {
166
6.57k
    hb_object_init (this);
167
168
6.57k
    successful = true;
169
6.57k
    max_chain_length = 0;
170
6.57k
    population = occupancy = 0;
171
6.57k
    mask = 0;
172
6.57k
    prime = 0;
173
6.57k
    items = nullptr;
174
6.57k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::init()
Line
Count
Source
165
6.57k
  {
166
6.57k
    hb_object_init (this);
167
168
6.57k
    successful = true;
169
6.57k
    max_chain_length = 0;
170
6.57k
    population = occupancy = 0;
171
6.57k
    mask = 0;
172
6.57k
    prime = 0;
173
6.57k
    items = nullptr;
174
6.57k
  }
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
414k
  {
177
414k
    hb_object_fini (this);
178
179
414k
    if (likely (items))
180
86.0k
    {
181
86.0k
      unsigned size = mask + 1;
182
84.0M
      for (unsigned i = 0; i < size; i++)
183
83.9M
  items[i].~item_t ();
184
86.0k
      hb_free (items);
185
86.0k
      items = nullptr;
186
86.0k
    }
187
414k
    population = occupancy = 0;
188
414k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::fini()
Line
Count
Source
176
138k
  {
177
138k
    hb_object_fini (this);
178
179
138k
    if (likely (items))
180
59.7k
    {
181
59.7k
      unsigned size = mask + 1;
182
83.3M
      for (unsigned i = 0; i < size; i++)
183
83.2M
  items[i].~item_t ();
184
59.7k
      hb_free (items);
185
59.7k
      items = nullptr;
186
59.7k
    }
187
138k
    population = occupancy = 0;
188
138k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::fini()
Line
Count
Source
176
137k
  {
177
137k
    hb_object_fini (this);
178
179
137k
    if (likely (items))
180
6.57k
    {
181
6.57k
      unsigned size = mask + 1;
182
111k
      for (unsigned i = 0; i < size; i++)
183
105k
  items[i].~item_t ();
184
6.57k
      hb_free (items);
185
6.57k
      items = nullptr;
186
6.57k
    }
187
137k
    population = occupancy = 0;
188
137k
  }
hb_hashmap_t<unsigned int, Triple, false>::fini()
Line
Count
Source
176
19.7k
  {
177
19.7k
    hb_object_fini (this);
178
179
19.7k
    if (likely (items))
180
0
    {
181
0
      unsigned size = mask + 1;
182
0
      for (unsigned i = 0; i < size; i++)
183
0
  items[i].~item_t ();
184
0
      hb_free (items);
185
0
      items = nullptr;
186
0
    }
187
19.7k
    population = occupancy = 0;
188
19.7k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::fini()
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::fini()
Line
Count
Source
176
6.57k
  {
177
6.57k
    hb_object_fini (this);
178
179
6.57k
    if (likely (items))
180
6.57k
    {
181
6.57k
      unsigned size = mask + 1;
182
111k
      for (unsigned i = 0; i < size; i++)
183
105k
  items[i].~item_t ();
184
6.57k
      hb_free (items);
185
6.57k
      items = nullptr;
186
6.57k
    }
187
6.57k
    population = occupancy = 0;
188
6.57k
  }
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.1k
  {
177
13.1k
    hb_object_fini (this);
178
179
13.1k
    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.1k
    population = occupancy = 0;
188
13.1k
  }
hb_hashmap_t<unsigned int, face_table_info_t, false>::fini()
Line
Count
Source
176
13.1k
  {
177
13.1k
    hb_object_fini (this);
178
179
13.1k
    if (likely (items))
180
13.1k
    {
181
13.1k
      unsigned size = mask + 1;
182
433k
      for (unsigned i = 0; i < size; i++)
183
420k
  items[i].~item_t ();
184
13.1k
      hb_free (items);
185
13.1k
      items = nullptr;
186
13.1k
    }
187
13.1k
    population = occupancy = 0;
188
13.1k
  }
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.1k
  {
177
13.1k
    hb_object_fini (this);
178
179
13.1k
    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.1k
    population = occupancy = 0;
188
13.1k
  }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::fini()
Line
Count
Source
176
13.1k
  {
177
13.1k
    hb_object_fini (this);
178
179
13.1k
    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.1k
    population = occupancy = 0;
188
13.1k
  }
hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::fini()
Line
Count
Source
176
13.1k
  {
177
13.1k
    hb_object_fini (this);
178
179
13.1k
    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.1k
    population = occupancy = 0;
188
13.1k
  }
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::fini()
Line
Count
Source
176
32.8k
  {
177
32.8k
    hb_object_fini (this);
178
179
32.8k
    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
32.8k
    population = occupancy = 0;
188
32.8k
  }
hb_hashmap_t<unsigned int, TripleDistances, false>::fini()
Line
Count
Source
176
6.57k
  {
177
6.57k
    hb_object_fini (this);
178
179
6.57k
    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.57k
    population = occupancy = 0;
188
6.57k
  }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::fini()
Line
Count
Source
176
6.57k
  {
177
6.57k
    hb_object_fini (this);
178
179
6.57k
    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.57k
    population = occupancy = 0;
188
6.57k
  }
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.57k
  {
192
6.57k
    successful = true;
193
6.57k
    clear ();
194
6.57k
    return *this;
195
6.57k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::reset()
hb_hashmap_t<unsigned int, Triple, false>::reset()
Line
Count
Source
191
6.57k
  {
192
6.57k
    successful = true;
193
6.57k
    clear ();
194
6.57k
    return *this;
195
6.57k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::reset()
196
197
355k
  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
92.7k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, Triple, false>::in_error() const
Line
Count
Source
197
26.2k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, unsigned int, true>::in_error() const
Line
Count
Source
197
85.4k
  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
45.9k
  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.1k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, face_table_info_t, false>::in_error() const
Line
Count
Source
197
6.57k
  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.1k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, OT::Feature const*, false>::in_error() const
Line
Count
Source
197
13.1k
  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.1k
  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
32.8k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, TripleDistances, false>::in_error() const
Line
Count
Source
197
6.57k
  bool in_error () const { return !successful; }
hb_hashmap_t<unsigned int, contour_point_vector_t, false>::in_error() const
Line
Count
Source
197
6.57k
  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
214k
  {
201
214k
    if (unlikely (!successful)) return false;
202
203
214k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
201k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
201k
    unsigned int new_size = 1u << power;
207
201k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
201k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
201k
    if (!item_t::is_trivially_constructible)
214
13.1k
      for (auto &_ : hb_iter (new_items, new_size))
215
157k
  new (&_) item_t ();
216
188k
    else
217
188k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
201k
    unsigned int old_size = size ();
220
201k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
201k
    population = occupancy = 0;
224
201k
    mask = new_size - 1;
225
201k
    prime = prime_for (power);
226
201k
    max_chain_length = power * 2;
227
201k
    items = new_items;
228
229
    /* Insert back old items. */
230
27.9M
    for (unsigned int i = 0; i < old_size; i++)
231
27.7M
    {
232
27.7M
      if (old_items[i].is_real ())
233
18.4M
      {
234
18.4M
  set_with_hash (std::move (old_items[i].key),
235
18.4M
           old_items[i].hash,
236
18.4M
           std::move (old_items[i].value));
237
18.4M
      }
238
27.7M
    }
239
27.9M
    for (unsigned int i = 0; i < old_size; i++)
240
27.7M
      old_items[i].~item_t ();
241
242
201k
    hb_free (old_items);
243
244
201k
    return true;
245
201k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::alloc(unsigned int)
Line
Count
Source
200
13.1k
  {
201
13.1k
    if (unlikely (!successful)) return false;
202
203
13.1k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
13.1k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
13.1k
    unsigned int new_size = 1u << power;
207
13.1k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
13.1k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
13.1k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
13.1k
    else
217
13.1k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
13.1k
    unsigned int old_size = size ();
220
13.1k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
13.1k
    population = occupancy = 0;
224
13.1k
    mask = new_size - 1;
225
13.1k
    prime = prime_for (power);
226
13.1k
    max_chain_length = power * 2;
227
13.1k
    items = new_items;
228
229
    /* Insert back old items. */
230
65.7k
    for (unsigned int i = 0; i < old_size; i++)
231
52.5k
    {
232
52.5k
      if (old_items[i].is_real ())
233
32.8k
      {
234
32.8k
  set_with_hash (std::move (old_items[i].key),
235
32.8k
           old_items[i].hash,
236
32.8k
           std::move (old_items[i].value));
237
32.8k
      }
238
52.5k
    }
239
65.7k
    for (unsigned int i = 0; i < old_size; i++)
240
52.5k
      old_items[i].~item_t ();
241
242
13.1k
    hb_free (old_items);
243
244
13.1k
    return true;
245
13.1k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, unsigned int, true>::alloc(unsigned int)
Line
Count
Source
200
148k
  {
201
148k
    if (unlikely (!successful)) return false;
202
203
148k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
135k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
135k
    unsigned int new_size = 1u << power;
207
135k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
135k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
135k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
135k
    else
217
135k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
135k
    unsigned int old_size = size ();
220
135k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
135k
    population = occupancy = 0;
224
135k
    mask = new_size - 1;
225
135k
    prime = prime_for (power);
226
135k
    max_chain_length = power * 2;
227
135k
    items = new_items;
228
229
    /* Insert back old items. */
230
27.4M
    for (unsigned int i = 0; i < old_size; i++)
231
27.2M
    {
232
27.2M
      if (old_items[i].is_real ())
233
18.1M
      {
234
18.1M
  set_with_hash (std::move (old_items[i].key),
235
18.1M
           old_items[i].hash,
236
18.1M
           std::move (old_items[i].value));
237
18.1M
      }
238
27.2M
    }
239
27.4M
    for (unsigned int i = 0; i < old_size; i++)
240
27.2M
      old_items[i].~item_t ();
241
242
135k
    hb_free (old_items);
243
244
135k
    return true;
245
135k
  }
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
39.4k
  {
201
39.4k
    if (unlikely (!successful)) return false;
202
203
39.4k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
39.4k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
39.4k
    unsigned int new_size = 1u << power;
207
39.4k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
39.4k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
39.4k
    if (!item_t::is_trivially_constructible)
214
0
      for (auto &_ : hb_iter (new_items, new_size))
215
0
  new (&_) item_t ();
216
39.4k
    else
217
39.4k
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
39.4k
    unsigned int old_size = size ();
220
39.4k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
39.4k
    population = occupancy = 0;
224
39.4k
    mask = new_size - 1;
225
39.4k
    prime = prime_for (power);
226
39.4k
    max_chain_length = power * 2;
227
39.4k
    items = new_items;
228
229
    /* Insert back old items. */
230
354k
    for (unsigned int i = 0; i < old_size; i++)
231
315k
    {
232
315k
      if (old_items[i].is_real ())
233
197k
      {
234
197k
  set_with_hash (std::move (old_items[i].key),
235
197k
           old_items[i].hash,
236
197k
           std::move (old_items[i].value));
237
197k
      }
238
315k
    }
239
354k
    for (unsigned int i = 0; i < old_size; i++)
240
315k
      old_items[i].~item_t ();
241
242
39.4k
    hb_free (old_items);
243
244
39.4k
    return true;
245
39.4k
  }
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::alloc(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::alloc(unsigned int)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::alloc(unsigned int)
Line
Count
Source
200
13.1k
  {
201
13.1k
    if (unlikely (!successful)) return false;
202
203
13.1k
    if (new_population != 0 && (new_population + new_population / 2) < mask) return true;
204
205
13.1k
    unsigned int power = hb_bit_storage (hb_max (hb_max ((unsigned) population, new_population) * 2, 4u));
206
13.1k
    unsigned int new_size = 1u << power;
207
13.1k
    item_t *new_items = (item_t *) hb_malloc ((size_t) new_size * sizeof (item_t));
208
13.1k
    if (unlikely (!new_items))
209
0
    {
210
0
      successful = false;
211
0
      return false;
212
0
    }
213
13.1k
    if (!item_t::is_trivially_constructible)
214
13.1k
      for (auto &_ : hb_iter (new_items, new_size))
215
157k
  new (&_) item_t ();
216
0
    else
217
0
      hb_memset (new_items, 0, (size_t) new_size * sizeof (item_t));
218
219
13.1k
    unsigned int old_size = size ();
220
13.1k
    item_t *old_items = items;
221
222
    /* Switch to new, empty, array. */
223
13.1k
    population = occupancy = 0;
224
13.1k
    mask = new_size - 1;
225
13.1k
    prime = prime_for (power);
226
13.1k
    max_chain_length = power * 2;
227
13.1k
    items = new_items;
228
229
    /* Insert back old items. */
230
65.7k
    for (unsigned int i = 0; i < old_size; i++)
231
52.5k
    {
232
52.5k
      if (old_items[i].is_real ())
233
32.8k
      {
234
32.8k
  set_with_hash (std::move (old_items[i].key),
235
32.8k
           old_items[i].hash,
236
32.8k
           std::move (old_items[i].value));
237
32.8k
      }
238
52.5k
    }
239
65.7k
    for (unsigned int i = 0; i < old_size; i++)
240
52.5k
      old_items[i].~item_t ();
241
242
13.1k
    hb_free (old_items);
243
244
13.1k
    return true;
245
13.1k
  }
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
35.0M
  {
250
35.0M
    if (unlikely (!successful)) return false;
251
35.0M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
35.0M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
35.0M
    unsigned int tombstone = (unsigned int) -1;
255
35.0M
    unsigned int i = hash % prime;
256
35.0M
    unsigned length = 0;
257
35.0M
    unsigned step = 0;
258
40.5M
    while (items[i].is_used ())
259
5.46M
    {
260
5.46M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
5.44M
    items[i] == key)
262
1.89k
      {
263
1.89k
        if (!overwrite)
264
0
    return false;
265
1.89k
        else
266
1.89k
    break;
267
1.89k
      }
268
5.46M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
5.46M
      i = (i + ++step) & mask;
271
5.46M
      length++;
272
5.46M
    }
273
274
35.0M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
35.0M
    if (item.is_used ())
277
1.89k
    {
278
1.89k
      occupancy--;
279
1.89k
      population -= item.is_real ();
280
1.89k
    }
281
282
35.0M
    item.key = std::forward<KK> (key);
283
35.0M
    item.value = std::forward<VV> (value);
284
35.0M
    item.hash = hash;
285
35.0M
    item.set_used (true);
286
35.0M
    item.set_real (true);
287
288
35.0M
    occupancy++;
289
35.0M
    population++;
290
291
35.0M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
18
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
35.0M
    return true;
295
35.0M
  }
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
675k
  {
250
675k
    if (unlikely (!successful)) return false;
251
675k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
675k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
675k
    unsigned int tombstone = (unsigned int) -1;
255
675k
    unsigned int i = hash % prime;
256
675k
    unsigned length = 0;
257
675k
    unsigned step = 0;
258
721k
    while (items[i].is_used ())
259
45.9k
    {
260
45.9k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
45.9k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
45.9k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
45.9k
      i = (i + ++step) & mask;
271
45.9k
      length++;
272
45.9k
    }
273
274
675k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
675k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
675k
    item.key = std::forward<KK> (key);
283
675k
    item.value = std::forward<VV> (value);
284
675k
    item.hash = hash;
285
675k
    item.set_used (true);
286
675k
    item.set_real (true);
287
288
675k
    occupancy++;
289
675k
    population++;
290
291
675k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
675k
    return true;
295
675k
  }
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
40.2k
  {
250
40.2k
    if (unlikely (!successful)) return false;
251
40.2k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
40.2k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
40.2k
    unsigned int tombstone = (unsigned int) -1;
255
40.2k
    unsigned int i = hash % prime;
256
40.2k
    unsigned length = 0;
257
40.2k
    unsigned step = 0;
258
56.9k
    while (items[i].is_used ())
259
16.7k
    {
260
16.7k
      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.7k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
16.7k
      i = (i + ++step) & mask;
271
16.7k
      length++;
272
16.7k
    }
273
274
40.2k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
40.2k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
40.2k
    item.key = std::forward<KK> (key);
283
40.2k
    item.value = std::forward<VV> (value);
284
40.2k
    item.hash = hash;
285
40.2k
    item.set_used (true);
286
40.2k
    item.set_real (true);
287
288
40.2k
    occupancy++;
289
40.2k
    population++;
290
291
40.2k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
40.2k
    return true;
295
40.2k
  }
bool hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::set_with_hash<hb_serialize_context_t::object_t const*, unsigned int>(hb_serialize_context_t::object_t const*&&, unsigned int, unsigned int&&, bool)
Line
Count
Source
249
32.8k
  {
250
32.8k
    if (unlikely (!successful)) return false;
251
32.8k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
32.8k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
32.8k
    unsigned int tombstone = (unsigned int) -1;
255
32.8k
    unsigned int i = hash % prime;
256
32.8k
    unsigned length = 0;
257
32.8k
    unsigned step = 0;
258
32.8k
    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
32.8k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
32.8k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
32.8k
    item.key = std::forward<KK> (key);
283
32.8k
    item.value = std::forward<VV> (value);
284
32.8k
    item.hash = hash;
285
32.8k
    item.set_used (true);
286
32.8k
    item.set_real (true);
287
288
32.8k
    occupancy++;
289
32.8k
    population++;
290
291
32.8k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
32.8k
    return true;
295
32.8k
  }
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
15.7M
  {
250
15.7M
    if (unlikely (!successful)) return false;
251
15.7M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
15.7M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
15.7M
    unsigned int tombstone = (unsigned int) -1;
255
15.7M
    unsigned int i = hash % prime;
256
15.7M
    unsigned length = 0;
257
15.7M
    unsigned step = 0;
258
20.8M
    while (items[i].is_used ())
259
5.06M
    {
260
5.06M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
5.06M
    items[i] == key)
262
1.89k
      {
263
1.89k
        if (!overwrite)
264
0
    return false;
265
1.89k
        else
266
1.89k
    break;
267
1.89k
      }
268
5.06M
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
5.06M
      i = (i + ++step) & mask;
271
5.06M
      length++;
272
5.06M
    }
273
274
15.7M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
15.7M
    if (item.is_used ())
277
1.89k
    {
278
1.89k
      occupancy--;
279
1.89k
      population -= item.is_real ();
280
1.89k
    }
281
282
15.7M
    item.key = std::forward<KK> (key);
283
15.7M
    item.value = std::forward<VV> (value);
284
15.7M
    item.hash = hash;
285
15.7M
    item.set_used (true);
286
15.7M
    item.set_real (true);
287
288
15.7M
    occupancy++;
289
15.7M
    population++;
290
291
15.7M
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
18
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
15.7M
    return true;
295
15.7M
  }
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.1M
  {
250
18.1M
    if (unlikely (!successful)) return false;
251
18.1M
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
18.1M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
18.1M
    unsigned int tombstone = (unsigned int) -1;
255
18.1M
    unsigned int i = hash % prime;
256
18.1M
    unsigned length = 0;
257
18.1M
    unsigned step = 0;
258
18.3M
    while (items[i].is_used ())
259
192k
    {
260
192k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
192k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
192k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
192k
      i = (i + ++step) & mask;
271
192k
      length++;
272
192k
    }
273
274
18.1M
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
18.1M
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
18.1M
    item.key = std::forward<KK> (key);
283
18.1M
    item.value = std::forward<VV> (value);
284
18.1M
    item.hash = hash;
285
18.1M
    item.set_used (true);
286
18.1M
    item.set_real (true);
287
288
18.1M
    occupancy++;
289
18.1M
    population++;
290
291
18.1M
    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.1M
    return true;
295
18.1M
  }
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
164k
  {
250
164k
    if (unlikely (!successful)) return false;
251
164k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
164k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
164k
    unsigned int tombstone = (unsigned int) -1;
255
164k
    unsigned int i = hash % prime;
256
164k
    unsigned length = 0;
257
164k
    unsigned step = 0;
258
210k
    while (items[i].is_used ())
259
45.9k
    {
260
45.9k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
45.9k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
45.9k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
45.9k
      i = (i + ++step) & mask;
271
45.9k
      length++;
272
45.9k
    }
273
274
164k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
164k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
164k
    item.key = std::forward<KK> (key);
283
164k
    item.value = std::forward<VV> (value);
284
164k
    item.hash = hash;
285
164k
    item.set_used (true);
286
164k
    item.set_real (true);
287
288
164k
    occupancy++;
289
164k
    population++;
290
291
164k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
164k
    return true;
295
164k
  }
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
197k
  {
250
197k
    if (unlikely (!successful)) return false;
251
197k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
197k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
197k
    unsigned int tombstone = (unsigned int) -1;
255
197k
    unsigned int i = hash % prime;
256
197k
    unsigned length = 0;
257
197k
    unsigned step = 0;
258
262k
    while (items[i].is_used ())
259
65.7k
    {
260
65.7k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
65.7k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
65.7k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
65.7k
      i = (i + ++step) & mask;
271
65.7k
      length++;
272
65.7k
    }
273
274
197k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
197k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
197k
    item.key = std::forward<KK> (key);
283
197k
    item.value = std::forward<VV> (value);
284
197k
    item.hash = hash;
285
197k
    item.set_used (true);
286
197k
    item.set_real (true);
287
288
197k
    occupancy++;
289
197k
    population++;
290
291
197k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
197k
    return true;
295
197k
  }
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
72.2k
  {
250
72.2k
    if (unlikely (!successful)) return false;
251
72.2k
    if (unlikely ((occupancy + occupancy / 2) >= mask && !alloc ())) return false;
252
253
72.2k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
254
72.2k
    unsigned int tombstone = (unsigned int) -1;
255
72.2k
    unsigned int i = hash % prime;
256
72.2k
    unsigned length = 0;
257
72.2k
    unsigned step = 0;
258
105k
    while (items[i].is_used ())
259
32.8k
    {
260
32.8k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
261
32.8k
    items[i] == key)
262
0
      {
263
0
        if (!overwrite)
264
0
    return false;
265
0
        else
266
0
    break;
267
0
      }
268
32.8k
      if (!items[i].is_real () && tombstone == (unsigned) -1)
269
0
        tombstone = i;
270
32.8k
      i = (i + ++step) & mask;
271
32.8k
      length++;
272
32.8k
    }
273
274
72.2k
    item_t &item = items[tombstone == (unsigned) -1 ? i : tombstone];
275
276
72.2k
    if (item.is_used ())
277
0
    {
278
0
      occupancy--;
279
0
      population -= item.is_real ();
280
0
    }
281
282
72.2k
    item.key = std::forward<KK> (key);
283
72.2k
    item.value = std::forward<VV> (value);
284
72.2k
    item.hash = hash;
285
72.2k
    item.set_used (true);
286
72.2k
    item.set_real (true);
287
288
72.2k
    occupancy++;
289
72.2k
    population++;
290
291
72.2k
    if (unlikely (length > max_chain_length) && occupancy * 8 > mask)
292
0
      alloc (mask - 8); // This ensures we jump to next larger size
293
294
72.2k
    return true;
295
72.2k
  }
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
16.5M
  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
675k
  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
15.7M
  bool set (const K &key, VV&& value, bool overwrite = true) { return set_with_hash (key, hb_hash (key), std::forward<VV> (value), overwrite); }
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
164k
  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
39.4k
  {
302
39.4k
    uint32_t hash = hb_hash (key);
303
39.4k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
304
39.4k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int&>(unsigned int&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<int>(unsigned int&&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, OT::Feature const*, false>::set<OT::Feature const*>(unsigned int&&, OT::Feature const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::set<unsigned int&>(hb_hashmap_t<unsigned int, Triple, false> const*&&, unsigned int&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::set<hb_vector_t<int, false> const*>(unsigned int&&, hb_vector_t<int, false> const*&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::set<int>(hb_vector_t<int, false> const*&&, int&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::set<hb::unique_ptr<hb_set_t> >(unsigned int&&, hb::unique_ptr<hb_set_t>&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, true>::set<unsigned int>(unsigned int&&, unsigned int&&, bool)
bool hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::set<hb::unique_ptr<hb_blob_t> >(unsigned int&&, hb::unique_ptr<hb_blob_t>&&, bool)
Line
Count
Source
301
39.4k
  {
302
39.4k
    uint32_t hash = hb_hash (key);
303
39.4k
    return set_with_hash (std::move (key), hash, std::forward<VV> (value), overwrite);
304
39.4k
  }
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t*, bool, false>::set<bool>(graph::overflow_record_t*&&, bool&&, bool)
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::set<hb_array_t<char const> >(unsigned int&&, hb_array_t<char const>&&, bool)
305
  bool add (const K &key)
306
  {
307
    uint32_t hash = hb_hash (key);
308
    return set_with_hash (key, hash, item_t::default_value ());
309
  }
310
311
  const V& get_with_hash (const K &key, uint32_t hash) const
312
16.0M
  {
313
16.0M
    if (!items) return item_t::default_value ();
314
16.0M
    auto *item = fetch_item (key, hash);
315
16.0M
    if (item)
316
15.8M
      return item->value;
317
211k
    return item_t::default_value ();
318
16.0M
  }
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
45.9k
  {
313
45.9k
    if (!items) return item_t::default_value ();
314
39.4k
    auto *item = fetch_item (key, hash);
315
39.4k
    if (item)
316
5.78k
      return item->value;
317
33.6k
    return item_t::default_value ();
318
39.4k
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get_with_hash(unsigned int const&, unsigned int) const
Line
Count
Source
312
15.7M
  {
313
15.7M
    if (!items) return item_t::default_value ();
314
15.7M
    auto *item = fetch_item (key, hash);
315
15.7M
    if (item)
316
15.7M
      return item->value;
317
38
    return item_t::default_value ();
318
15.7M
  }
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
282k
  {
313
282k
    if (!items) return item_t::default_value ();
314
282k
    auto *item = fetch_item (key, hash);
315
282k
    if (item)
316
105k
      return item->value;
317
177k
    return item_t::default_value ();
318
282k
  }
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.0M
  {
321
16.0M
    if (!items) return item_t::default_value ();
322
16.0M
    return get_with_hash (key, hb_hash (key));
323
16.0M
  }
hb_hashmap_t<unsigned int, unsigned int, true>::get(unsigned int const&) const
Line
Count
Source
320
15.7M
  {
321
15.7M
    if (!items) return item_t::default_value ();
322
15.7M
    return get_with_hash (key, hb_hash (key));
323
15.7M
  }
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
295k
  {
321
295k
    if (!items) return item_t::default_value ();
322
282k
    return get_with_hash (key, hb_hash (key));
323
295k
  }
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.4M
  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.2M
  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
131k
  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.01M
  {
341
1.01M
    if (!items) return false;
342
763k
    return has_with_hash (key, hb_hash (key), vp);
343
1.01M
  }
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
717k
  {
341
717k
    if (!items) return false;
342
717k
    return has_with_hash (key, hb_hash (key), vp);
343
717k
  }
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
19.7k
  {
341
19.7k
    if (!items) return false;
342
0
    return has_with_hash (key, hb_hash (key), vp);
343
19.7k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, TripleDistances, false>::has<TripleDistances>(unsigned int const&, TripleDistances**) const
Unexecuted instantiation: bool hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::has<unsigned int>(hb::shared_ptr<hb_map_t> const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::has<hb_pair_t<void const*, void const*> >(unsigned int const&, hb_pair_t<void const*, void const*>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::has<hb::shared_ptr<hb_set_t> >(unsigned int const&, hb::shared_ptr<hb_set_t>**) const
bool hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::has<hb_pair_t<unsigned int, int> >(unsigned int const&, hb_pair_t<unsigned int, int>**) const
Line
Count
Source
340
229k
  {
341
229k
    if (!items) return false;
342
0
    return has_with_hash (key, hb_hash (key), vp);
343
229k
  }
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.1k
  {
341
13.1k
    if (!items) return false;
342
13.1k
    return has_with_hash (key, hb_hash (key), vp);
343
13.1k
  }
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
39.4k
  {
341
39.4k
    if (!items) return false;
342
32.8k
    return has_with_hash (key, hb_hash (key), vp);
343
39.4k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has<unsigned int>(unsigned int const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t*, bool, false>::has<bool>(graph::overflow_record_t* const&, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has<unsigned int const>(unsigned int const&, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::has<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, hb_vector_t<unsigned char, false>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::has<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::has<hb_array_t<char const> >(unsigned int const&, hb_array_t<char const>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::has<contour_point_vector_t>(unsigned int const&, contour_point_vector_t**) const
344
  template <typename VV=V>
345
  bool has_with_hash (const K &key, uint32_t hash, VV **vp = nullptr) const
346
763k
  {
347
763k
    if (!items) return false;
348
763k
    auto *item = fetch_item (key, hash);
349
763k
    if (item)
350
214k
    {
351
214k
      if (vp) *vp = std::addressof (item->value);
352
214k
      return true;
353
214k
    }
354
549k
    return false;
355
763k
  }
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
717k
  {
347
717k
    if (!items) return false;
348
717k
    auto *item = fetch_item (key, hash);
349
717k
    if (item)
350
214k
    {
351
214k
      if (vp) *vp = std::addressof (item->value);
352
214k
      return true;
353
214k
    }
354
503k
    return false;
355
717k
  }
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.1k
  {
347
13.1k
    if (!items) return false;
348
13.1k
    auto *item = fetch_item (key, hash);
349
13.1k
    if (item)
350
0
    {
351
0
      if (vp) *vp = std::addressof (item->value);
352
0
      return true;
353
0
    }
354
13.1k
    return false;
355
13.1k
  }
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
32.8k
  {
347
32.8k
    if (!items) return false;
348
32.8k
    auto *item = fetch_item (key, hash);
349
32.8k
    if (item)
350
0
    {
351
0
      if (vp) *vp = std::addressof (item->value);
352
0
      return true;
353
0
    }
354
32.8k
    return false;
355
32.8k
  }
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int>(unsigned int const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<graph::overflow_record_t*, bool, false>::has_with_hash<bool>(graph::overflow_record_t* const&, unsigned int, bool**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, unsigned int, false>::has_with_hash<unsigned int const>(unsigned int const&, unsigned int, unsigned int const**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::has_with_hash<hb_vector_t<unsigned char, false> >(hb_vector_t<bool, false> const* const&, unsigned int, hb_vector_t<unsigned char, false>**) const
Unexecuted instantiation: bool hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::has_with_hash<unsigned int>(hb_vector_t<bool, false> const* const&, unsigned int, unsigned int**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::has_with_hash<hb_array_t<char const> >(unsigned int const&, unsigned int, hb_array_t<char const>**) const
Unexecuted instantiation: bool hb_hashmap_t<unsigned int, contour_point_vector_t, false>::has_with_hash<contour_point_vector_t>(unsigned int const&, unsigned int, contour_point_vector_t**) const
356
  item_t *fetch_item (const K &key, uint32_t hash) const
357
16.8M
  {
358
16.8M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
16.8M
    unsigned int i = hash % prime;
360
16.8M
    unsigned step = 0;
361
18.9M
    while (items[i].is_used ())
362
18.1M
    {
363
18.1M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
18.1M
    items[i] == key)
365
16.0M
      {
366
16.0M
  if (items[i].is_real ())
367
16.0M
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
16.0M
      }
371
2.07M
      i = (i + ++step) & mask;
372
2.07M
    }
373
760k
    return nullptr;
374
16.8M
  }
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
39.4k
  {
358
39.4k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
39.4k
    unsigned int i = hash % prime;
360
39.4k
    unsigned step = 0;
361
62.7k
    while (items[i].is_used ())
362
29.1k
    {
363
29.1k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
5.78k
    items[i] == key)
365
5.78k
      {
366
5.78k
  if (items[i].is_real ())
367
5.78k
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
5.78k
      }
371
23.3k
      i = (i + ++step) & mask;
372
23.3k
    }
373
33.6k
    return nullptr;
374
39.4k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::fetch_item(unsigned int const&, unsigned int) const
hb_hashmap_t<unsigned int, unsigned int, true>::fetch_item(unsigned int const&, unsigned int) const
Line
Count
Source
357
16.4M
  {
358
16.4M
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
16.4M
    unsigned int i = hash % prime;
360
16.4M
    unsigned step = 0;
361
18.3M
    while (items[i].is_used ())
362
17.8M
    {
363
17.8M
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
17.8M
    items[i] == key)
365
15.9M
      {
366
15.9M
  if (items[i].is_real ())
367
15.9M
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
15.9M
      }
371
1.83M
      i = (i + ++step) & mask;
372
1.83M
    }
373
503k
    return nullptr;
374
16.4M
  }
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
295k
  {
358
295k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
295k
    unsigned int i = hash % prime;
360
295k
    unsigned step = 0;
361
473k
    while (items[i].is_used ())
362
282k
    {
363
282k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
282k
    items[i] == key)
365
105k
      {
366
105k
  if (items[i].is_real ())
367
105k
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
105k
      }
371
177k
      i = (i + ++step) & mask;
372
177k
    }
373
190k
    return nullptr;
374
295k
  }
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
32.8k
  {
358
32.8k
    hash &= 0x3FFFFFFF; // We only store lower 30bit of hash
359
32.8k
    unsigned int i = hash % prime;
360
32.8k
    unsigned step = 0;
361
72.2k
    while (items[i].is_used ())
362
39.4k
    {
363
39.4k
      if ((std::is_integral<K>::value || items[i].hash == hash) &&
364
39.4k
    items[i] == key)
365
0
      {
366
0
  if (items[i].is_real ())
367
0
    return &items[i];
368
0
  else
369
0
    return nullptr;
370
0
      }
371
39.4k
      i = (i + ++step) & mask;
372
39.4k
    }
373
32.8k
    return nullptr;
374
32.8k
  }
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
247k
  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.1k
  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
142k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::size() const
hb_hashmap_t<unsigned int, Triple, false>::size() const
Line
Count
Source
378
6.57k
  unsigned size () const { return mask ? mask + 1 : 0; }
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::size() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::size() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::size() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::size() const
Line
Count
Source
378
72.2k
  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.1k
  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.57k
  {
382
6.57k
    if (unlikely (!successful)) return;
383
384
6.57k
    for (auto &_ : hb_iter (items, size ()))
385
0
    {
386
      /* Reconstruct items. */
387
0
      _.~item_t ();
388
0
      new (&_) item_t ();
389
0
    }
390
391
6.57k
    population = occupancy = 0;
392
6.57k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::clear()
hb_hashmap_t<unsigned int, Triple, false>::clear()
Line
Count
Source
381
6.57k
  {
382
6.57k
    if (unlikely (!successful)) return;
383
384
6.57k
    for (auto &_ : hb_iter (items, size ()))
385
0
    {
386
      /* Reconstruct items. */
387
0
      _.~item_t ();
388
0
      new (&_) item_t ();
389
0
    }
390
391
6.57k
    population = occupancy = 0;
392
6.57k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::clear()
393
394
34.4k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, unsigned int, true>::is_empty() const
Line
Count
Source
394
6.57k
  bool is_empty () const { return population == 0; }
hb_hashmap_t<unsigned int, Triple, false>::is_empty() const
Line
Count
Source
394
13.1k
  bool is_empty () const { return population == 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::is_empty() const
hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::is_empty() const
Line
Count
Source
394
14.7k
  bool is_empty () const { return population == 0; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::is_empty() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::is_empty() const
395
6.57k
  explicit operator bool () const { return !is_empty (); }
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::operator bool() const
hb_hashmap_t<unsigned int, unsigned int, true>::operator bool() const
Line
Count
Source
395
6.57k
  explicit operator bool () const { return !is_empty (); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::operator bool() const
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::operator bool() const
396
397
  uint32_t hash () const
398
0
  {
399
0
    return
400
0
    + iter_items ()
401
0
    | hb_reduce ([] (uint32_t h, const item_t &_) { return h ^ _.total_hash (); }, (uint32_t) 0u)
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const::{lambda(unsigned int, hb_hashmap_t<unsigned int, unsigned int, true>::item_t const&)#1}::operator()(unsigned int, hb_hashmap_t<unsigned int, unsigned int, true>::item_t const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const::{lambda(unsigned int, hb_hashmap_t<unsigned int, Triple, false>::item_t const&)#1}::operator()(unsigned int, hb_hashmap_t<unsigned int, Triple, false>::item_t const&) const
402
0
    ;
403
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::hash() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::hash() const
404
405
  bool is_equal (const hb_hashmap_t &other) const
406
0
  {
407
0
    if (population != other.population) return false;
408
409
0
    for (auto pair : iter ())
410
0
      if (other.get (pair.first) != pair.second)
411
0
        return false;
412
413
0
    return true;
414
0
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::is_equal(hb_hashmap_t<unsigned int, unsigned int, true> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::is_equal(hb_hashmap_t<unsigned int, Triple, false> const&) const
415
0
  bool operator == (const hb_hashmap_t &other) const { return is_equal (other); }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, true>::operator==(hb_hashmap_t<unsigned int, unsigned int, true> const&) const
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator==(hb_hashmap_t<unsigned int, Triple, false> const&) const
416
  bool operator != (const hb_hashmap_t &other) const { return !is_equal (other); }
417
418
39.4k
  unsigned int get_population () const { return population; }
hb_hashmap_t<unsigned int, unsigned int, true>::get_population() const
Line
Count
Source
418
19.7k
  unsigned int get_population () const { return population; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::get_population() const
hb_hashmap_t<unsigned int, face_table_info_t, false>::get_population() const
Line
Count
Source
418
19.7k
  unsigned int get_population () const { return population; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::get_population() const
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::get_population() const
419
420
  void update (const hb_hashmap_t &other)
421
0
  {
422
0
    if (unlikely (!successful)) return;
423
424
0
    hb_copy (other, *this);
425
0
  }
426
427
  /*
428
   * Iterator
429
   */
430
431
  auto iter_items () const HB_AUTO_RETURN
432
  (
433
    + hb_iter (items, this->size ())
434
    | hb_filter (&item_t::is_real)
435
  )
436
  auto iter_ref () const HB_AUTO_RETURN
437
  (
438
    + this->iter_items ()
439
    | hb_map (&item_t::get_pair_ref)
440
  )
441
  auto iter () const HB_AUTO_RETURN
442
  (
443
    + this->iter_items ()
444
    | hb_map (&item_t::get_pair)
445
  )
446
  auto keys_ref () const HB_AUTO_RETURN
447
  (
448
    + this->iter_items ()
449
    | hb_map (&item_t::get_key)
450
  )
451
  auto keys () const HB_AUTO_RETURN
452
  (
453
    + this->keys_ref ()
454
    | hb_map (hb_ridentity)
455
  )
456
  auto values_ref () const HB_AUTO_RETURN
457
  (
458
    + this->iter_items ()
459
    | hb_map (&item_t::get_value)
460
  )
461
  auto values () const HB_AUTO_RETURN
462
  (
463
    + this->values_ref ()
464
    | hb_map (hb_ridentity)
465
  )
466
467
  /* C iterator. */
468
  bool next (int *idx,
469
       K *key,
470
       V *value) const
471
0
  {
472
0
    unsigned i = (unsigned) (*idx + 1);
473
474
0
    unsigned count = size ();
475
0
    while (i < count && !items[i].is_real ())
476
0
      i++;
477
478
0
    if (i >= count)
479
0
    {
480
0
      *idx = -1;
481
0
      return false;
482
0
    }
483
484
0
    *key = items[i].key;
485
0
    *value = items[i].value;
486
487
0
    *idx = (signed) i;
488
0
    return true;
489
0
  }
490
491
  /* Sink interface. */
492
  hb_hashmap_t& operator << (const hb_pair_t<K, V>& v)
493
675k
  { set (v.first, v.second); return *this; }
hb_hashmap_t<unsigned int, unsigned int, true>::operator<<(hb_pair_t<unsigned int, unsigned int> const&)
Line
Count
Source
493
675k
  { set (v.first, v.second); return *this; }
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::operator<<(hb_pair_t<unsigned int, Triple> const&)
494
  template <typename V2 = V,
495
      hb_enable_if (!hb_is_trivially_copyable (V2))>
496
  hb_hashmap_t& operator << (const hb_pair_t<K, V&&>& v)
497
  { set (v.first, std::move (v.second)); return *this; }
498
  template <typename K2 = K,
499
      hb_enable_if (!hb_is_trivially_copyable (K2))>
500
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V>& v)
501
  { set (std::move (v.first), v.second); return *this; }
502
  template <typename K2 = K, typename V2 = V,
503
      hb_enable_if (!hb_is_trivially_copyable (K2) &&
504
        !hb_is_trivially_copyable (V2))>
505
  hb_hashmap_t& operator << (const hb_pair_t<K&&, V&&>& v)
506
  { set (std::move (v.first), std::move (v.second)); return *this; }
507
508
  static unsigned int prime_for (unsigned int shift)
509
201k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
201k
    /*static*/ const unsigned int prime_mod [32] =
518
201k
    {
519
201k
      1,          /* For 1 << 0 */
520
201k
      2,
521
201k
      3,
522
201k
      7,
523
201k
      13,
524
201k
      31,
525
201k
      61,
526
201k
      127,
527
201k
      251,
528
201k
      509,
529
201k
      1021,
530
201k
      2039,
531
201k
      4093,
532
201k
      8191,
533
201k
      16381,
534
201k
      32749,
535
201k
      65521,      /* For 1 << 16 */
536
201k
      131071,
537
201k
      262139,
538
201k
      524287,
539
201k
      1048573,
540
201k
      2097143,
541
201k
      4194301,
542
201k
      8388593,
543
201k
      16777213,
544
201k
      33554393,
545
201k
      67108859,
546
201k
      134217689,
547
201k
      268435399,
548
201k
      536870909,
549
201k
      1073741789,
550
201k
      2147483647  /* For 1 << 31 */
551
201k
    };
552
553
201k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
201k
    return prime_mod[shift];
557
201k
  }
hb_hashmap_t<hb_serialize_context_t::object_t const*, unsigned int, false>::prime_for(unsigned int)
Line
Count
Source
509
13.1k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
13.1k
    /*static*/ const unsigned int prime_mod [32] =
518
13.1k
    {
519
13.1k
      1,          /* For 1 << 0 */
520
13.1k
      2,
521
13.1k
      3,
522
13.1k
      7,
523
13.1k
      13,
524
13.1k
      31,
525
13.1k
      61,
526
13.1k
      127,
527
13.1k
      251,
528
13.1k
      509,
529
13.1k
      1021,
530
13.1k
      2039,
531
13.1k
      4093,
532
13.1k
      8191,
533
13.1k
      16381,
534
13.1k
      32749,
535
13.1k
      65521,      /* For 1 << 16 */
536
13.1k
      131071,
537
13.1k
      262139,
538
13.1k
      524287,
539
13.1k
      1048573,
540
13.1k
      2097143,
541
13.1k
      4194301,
542
13.1k
      8388593,
543
13.1k
      16777213,
544
13.1k
      33554393,
545
13.1k
      67108859,
546
13.1k
      134217689,
547
13.1k
      268435399,
548
13.1k
      536870909,
549
13.1k
      1073741789,
550
13.1k
      2147483647  /* For 1 << 31 */
551
13.1k
    };
552
553
13.1k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
13.1k
    return prime_mod[shift];
557
13.1k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<unsigned int, false>, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, unsigned int, true>::prime_for(unsigned int)
Line
Count
Source
509
135k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
135k
    /*static*/ const unsigned int prime_mod [32] =
518
135k
    {
519
135k
      1,          /* For 1 << 0 */
520
135k
      2,
521
135k
      3,
522
135k
      7,
523
135k
      13,
524
135k
      31,
525
135k
      61,
526
135k
      127,
527
135k
      251,
528
135k
      509,
529
135k
      1021,
530
135k
      2039,
531
135k
      4093,
532
135k
      8191,
533
135k
      16381,
534
135k
      32749,
535
135k
      65521,      /* For 1 << 16 */
536
135k
      131071,
537
135k
      262139,
538
135k
      524287,
539
135k
      1048573,
540
135k
      2097143,
541
135k
      4194301,
542
135k
      8388593,
543
135k
      16777213,
544
135k
      33554393,
545
135k
      67108859,
546
135k
      134217689,
547
135k
      268435399,
548
135k
      536870909,
549
135k
      1073741789,
550
135k
      2147483647  /* For 1 << 31 */
551
135k
    };
552
553
135k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
135k
    return prime_mod[shift];
557
135k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::unique_ptr<hb_set_t>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, Triple, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb::shared_ptr<hb_map_t>, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb::shared_ptr<hb_set_t>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, OT::Feature const*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_hashmap_t<unsigned int, Triple, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_vector_t<int, false> const*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<int, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_set_t, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, face_table_info_t, false>::prime_for(unsigned int)
Line
Count
Source
509
39.4k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
39.4k
    /*static*/ const unsigned int prime_mod [32] =
518
39.4k
    {
519
39.4k
      1,          /* For 1 << 0 */
520
39.4k
      2,
521
39.4k
      3,
522
39.4k
      7,
523
39.4k
      13,
524
39.4k
      31,
525
39.4k
      61,
526
39.4k
      127,
527
39.4k
      251,
528
39.4k
      509,
529
39.4k
      1021,
530
39.4k
      2039,
531
39.4k
      4093,
532
39.4k
      8191,
533
39.4k
      16381,
534
39.4k
      32749,
535
39.4k
      65521,      /* For 1 << 16 */
536
39.4k
      131071,
537
39.4k
      262139,
538
39.4k
      524287,
539
39.4k
      1048573,
540
39.4k
      2097143,
541
39.4k
      4194301,
542
39.4k
      8388593,
543
39.4k
      16777213,
544
39.4k
      33554393,
545
39.4k
      67108859,
546
39.4k
      134217689,
547
39.4k
      268435399,
548
39.4k
      536870909,
549
39.4k
      1073741789,
550
39.4k
      2147483647  /* For 1 << 31 */
551
39.4k
    };
552
553
39.4k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
39.4k
    return prime_mod[shift];
557
39.4k
  }
Unexecuted instantiation: hb_hashmap_t<OT::SVG::svg_id_span_t, hb_pair_t<unsigned int, unsigned int>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<unsigned int, int>, false>::prime_for(unsigned int)
hb_hashmap_t<unsigned int, hb::unique_ptr<hb_blob_t>, false>::prime_for(unsigned int)
Line
Count
Source
509
13.1k
  {
510
    /* Following comment and table copied from glib. */
511
    /* Each table size has an associated prime modulo (the first prime
512
     * lower than the table size) used to find the initial bucket. Probing
513
     * then works modulo 2^n. The prime modulo is necessary to get a
514
     * good distribution with poor hash functions.
515
     */
516
    /* Not declaring static to make all kinds of compilers happy... */
517
13.1k
    /*static*/ const unsigned int prime_mod [32] =
518
13.1k
    {
519
13.1k
      1,          /* For 1 << 0 */
520
13.1k
      2,
521
13.1k
      3,
522
13.1k
      7,
523
13.1k
      13,
524
13.1k
      31,
525
13.1k
      61,
526
13.1k
      127,
527
13.1k
      251,
528
13.1k
      509,
529
13.1k
      1021,
530
13.1k
      2039,
531
13.1k
      4093,
532
13.1k
      8191,
533
13.1k
      16381,
534
13.1k
      32749,
535
13.1k
      65521,      /* For 1 << 16 */
536
13.1k
      131071,
537
13.1k
      262139,
538
13.1k
      524287,
539
13.1k
      1048573,
540
13.1k
      2097143,
541
13.1k
      4194301,
542
13.1k
      8388593,
543
13.1k
      16777213,
544
13.1k
      33554393,
545
13.1k
      67108859,
546
13.1k
      134217689,
547
13.1k
      268435399,
548
13.1k
      536870909,
549
13.1k
      1073741789,
550
13.1k
      2147483647  /* For 1 << 31 */
551
13.1k
    };
552
553
13.1k
    if (unlikely (shift >= ARRAY_LENGTH (prime_mod)))
554
0
      return prime_mod[ARRAY_LENGTH (prime_mod) - 1];
555
556
13.1k
    return prime_mod[shift];
557
13.1k
  }
Unexecuted instantiation: hb_hashmap_t<unsigned int, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<graph::overflow_record_t*, bool, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, graph::Lookup*, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_array_t<char const>, unsigned int, true>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, unsigned int, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<bool, false> const*, hb_vector_t<unsigned char, false>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_pair_t<void const*, void const*>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, TripleDistances, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, contour_point_vector_t, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<unsigned int, hb_array_t<char const>, false>::prime_for(unsigned int)
Unexecuted instantiation: hb_hashmap_t<hb_vector_t<OT::HBFixed<OT::NumType<true, short, 2u>, 14u>, false> const*, unsigned int, false>::prime_for(unsigned int)
558
};
559
560
/*
561
 * hb_map_t
562
 */
563
564
struct hb_map_t : hb_hashmap_t<hb_codepoint_t,
565
             hb_codepoint_t,
566
             true>
567
{
568
  using hashmap = hb_hashmap_t<hb_codepoint_t,
569
             hb_codepoint_t,
570
             true>;
571
572
  ~hb_map_t () = default;
573
138k
  hb_map_t () : hashmap () {}
574
0
  hb_map_t (const hb_map_t &o) : hashmap ((hashmap &) o) {}
575
0
  hb_map_t (hb_map_t &&o)  noexcept : hashmap (std::move ((hashmap &) o)) {}
576
0
  hb_map_t& operator= (const hb_map_t&) = default;
577
0
  hb_map_t& operator= (hb_map_t&&) = default;
578
0
  hb_map_t (std::initializer_list<hb_codepoint_pair_t> lst) : hashmap (lst) {}
579
  template <typename Iterable,
580
      hb_requires (hb_is_iterable (Iterable))>
581
0
  hb_map_t (const Iterable &o) : hashmap (o) {}
582
};
583
584
585
#endif /* HB_MAP_HH */