Coverage Report

Created: 2026-09-28 10:59

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