Coverage Report

Created: 2026-11-06 11:29

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/work/workdir/UnpackedTarball/harfbuzz/src/hb-atomic.hh
Line
Count
Source
1
/*
2
 * Copyright © 2007  Chris Wilson
3
 * Copyright © 2009,2010  Red Hat, Inc.
4
 * Copyright © 2011,2012  Google, Inc.
5
 *
6
 *  This is part of HarfBuzz, a text shaping library.
7
 *
8
 * Permission is hereby granted, without written agreement and without
9
 * license or royalty fees, to use, copy, modify, and distribute this
10
 * software and its documentation for any purpose, provided that the
11
 * above copyright notice and the following two paragraphs appear in
12
 * all copies of this software.
13
 *
14
 * IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE TO ANY PARTY FOR
15
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
16
 * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN
17
 * IF THE COPYRIGHT HOLDER HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
18
 * DAMAGE.
19
 *
20
 * THE COPYRIGHT HOLDER SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
21
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
22
 * FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
23
 * ON AN "AS IS" BASIS, AND THE COPYRIGHT HOLDER HAS NO OBLIGATION TO
24
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
25
 *
26
 * Contributor(s):
27
 *  Chris Wilson <chris@chris-wilson.co.uk>
28
 * Red Hat Author(s): Behdad Esfahbod
29
 * Google Author(s): Behdad Esfahbod
30
 */
31
32
#ifndef HB_ATOMIC_HH
33
#define HB_ATOMIC_HH
34
35
#include "hb.hh"
36
#include "hb-meta.hh"
37
38
39
#ifndef HB_NO_MT
40
#include <atomic>
41
#endif
42
43
44
/* This should never be disabled, even under HB_NO_MT.
45
 * except that MSVC gives me an internal compiler error, so disabled there.
46
 *
47
 * https://github.com/harfbuzz/harfbuzz/pull/4119
48
 */
49
#ifndef _hb_compiler_memory_r_barrier
50
#if defined(__ATOMIC_ACQUIRE) // gcc-like
51
85.2M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-aat-layout.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
19.7M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-aat-map.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-blob.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-buffer.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-common.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-draw.cc:_hb_compiler_memory_r_barrier()
hb-face.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
27.9M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-face-builder.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-fallback-shape.cc:_hb_compiler_memory_r_barrier()
hb-font.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
12
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-map.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-number.cc:_hb_compiler_memory_r_barrier()
hb-ot-color.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
3.32k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-ot-face.cc:_hb_compiler_memory_r_barrier()
hb-ot-fetch.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
68.5k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-font.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
97.5k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-outline.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: VARC.cc:_hb_compiler_memory_r_barrier()
hb-ot-layout.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
36.1M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-ot-math.cc:_hb_compiler_memory_r_barrier()
hb-ot-metrics.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
294
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-name.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
1.11M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-ot-shape.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-tag.cc:_hb_compiler_memory_r_barrier()
hb-ot-var.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
587
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-set.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-shape-plan.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-shape.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-shaper.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-static.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-style.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-unicode.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-graphite2.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-icu.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-buffer-verify.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-paint.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-paint-bounded.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-paint-extents.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-cff1-table.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-cff2-table.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-map.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-arabic.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-default.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-hangul.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-indic.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-khmer.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-thai.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-use.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shape-fallback.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shape-normalize.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ucd.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-buffer-serialize.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-input.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset.cc:_hb_compiler_memory_r_barrier()
hb-subset-plan.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
37
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-subset-plan-layout.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-plan-var.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-table-layout.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-table-var.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-table-cff.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-table-color.cc:_hb_compiler_memory_r_barrier()
hb-subset-table-other.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
51
14.6k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: gsubgpos-context.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-cff1.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-cff2.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-instancer-iup.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-instancer-solver.cc:_hb_compiler_memory_r_barrier()
Unexecuted instantiation: hb-subset-cff-common.cc:_hb_compiler_memory_r_barrier()
52
#elif !defined(_MSC_VER)
53
#include <atomic>
54
#define _hb_compiler_memory_r_barrier() std::atomic_signal_fence (std::memory_order_acquire)
55
#else
56
static inline void _hb_compiler_memory_r_barrier () {}
57
#endif
58
#endif
59
60
61
#ifndef HB_NO_MT
62
63
template <typename T>
64
struct hb_atomic_t
65
{
66
122M
  hb_atomic_t () = default;
hb_atomic_t<unsigned short>::hb_atomic_t()
Line
Count
Source
66
2.42M
  hb_atomic_t () = default;
hb_atomic_t<int>::hb_atomic_t()
Line
Count
Source
66
111M
  hb_atomic_t () = default;
hb_atomic_t<unsigned int>::hb_atomic_t()
Line
Count
Source
66
8.28M
  hb_atomic_t () = default;
Unexecuted instantiation: hb_atomic_t<float>::hb_atomic_t()
67
214M
  constexpr hb_atomic_t (T v) : v (v) {}
hb_atomic_t<bool>::hb_atomic_t(bool)
Line
Count
Source
67
111M
  constexpr hb_atomic_t (T v) : v (v) {}
hb_atomic_t<unsigned int>::hb_atomic_t(unsigned int)
Line
Count
Source
67
102M
  constexpr hb_atomic_t (T v) : v (v) {}
68
  constexpr hb_atomic_t (const hb_atomic_t& o) : v (o.get_relaxed ()) {}
69
  hb_atomic_t (hb_atomic_t&& o) : v (o.get_relaxed ()) { o.set_relaxed ({}); }
70
71
368k
  hb_atomic_t &operator= (const hb_atomic_t& o) { set_relaxed (o.get_relaxed ()); return *this; }
72
0
  hb_atomic_t &operator= (hb_atomic_t&& o){ set_relaxed (o.get_relaxed ()); o.set_relaxed ({}); return *this; }
73
  hb_atomic_t &operator= (T v_)
74
462M
  {
75
462M
    set_relaxed (v_);
76
462M
    return *this;
77
462M
  }
hb_atomic_t<unsigned int>::operator=(unsigned int)
Line
Count
Source
74
122M
  {
75
122M
    set_relaxed (v_);
76
122M
    return *this;
77
122M
  }
hb_atomic_t<unsigned short>::operator=(unsigned short)
Line
Count
Source
74
3.84M
  {
75
3.84M
    set_relaxed (v_);
76
3.84M
    return *this;
77
3.84M
  }
hb_atomic_t<int>::operator=(int)
Line
Count
Source
74
224M
  {
75
224M
    set_relaxed (v_);
76
224M
    return *this;
77
224M
  }
hb_atomic_t<bool>::operator=(bool)
Line
Count
Source
74
112M
  {
75
112M
    set_relaxed (v_);
76
112M
    return *this;
77
112M
  }
hb_atomic_t<unsigned char>::operator=(unsigned char)
Line
Count
Source
74
36.3k
  {
75
36.3k
    set_relaxed (v_);
76
36.3k
    return *this;
77
36.3k
  }
Unexecuted instantiation: hb_atomic_t<float>::operator=(float)
78
2.16G
  operator T () const { return get_relaxed (); }
hb_atomic_t<unsigned int>::operator unsigned int() const
Line
Count
Source
78
1.00G
  operator T () const { return get_relaxed (); }
hb_atomic_t<unsigned short>::operator unsigned short() const
Line
Count
Source
78
456M
  operator T () const { return get_relaxed (); }
hb_atomic_t<int>::operator int() const
Line
Count
Source
78
550M
  operator T () const { return get_relaxed (); }
hb_atomic_t<unsigned char>::operator unsigned char() const
Line
Count
Source
78
147k
  operator T () const { return get_relaxed (); }
Unexecuted instantiation: hb_atomic_t<float>::operator float() const
hb_atomic_t<bool>::operator bool() const
Line
Count
Source
78
155M
  operator T () const { return get_relaxed (); }
79
80
463M
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<unsigned int>::set_relaxed(unsigned int)
Line
Count
Source
80
122M
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<unsigned short>::set_relaxed(unsigned short)
Line
Count
Source
80
3.84M
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<int>::set_relaxed(int)
Line
Count
Source
80
224M
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<bool>::set_relaxed(bool)
Line
Count
Source
80
112M
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<unsigned char>::set_relaxed(unsigned char)
Line
Count
Source
80
36.3k
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<float>::set_relaxed(float)
81
810
  void set_release (T v_) { v.store (v_, std::memory_order_release); }
82
2.16G
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<unsigned int>::get_relaxed() const
Line
Count
Source
82
1.00G
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<unsigned short>::get_relaxed() const
Line
Count
Source
82
456M
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<int>::get_relaxed() const
Line
Count
Source
82
550M
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<unsigned char>::get_relaxed() const
Line
Count
Source
82
147k
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<float>::get_relaxed() const
hb_atomic_t<bool>::get_relaxed() const
Line
Count
Source
82
155M
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
83
667k
  T get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<unsigned int>::get_acquire() const
Line
Count
Source
83
333k
  T get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<int>::get_acquire() const
Line
Count
Source
83
333k
  T get_acquire () const { return v.load (std::memory_order_acquire); }
84
104M
  T inc () { return v.fetch_add (1, std::memory_order_acq_rel); }
hb_atomic_t<int>::inc()
Line
Count
Source
84
103M
  T inc () { return v.fetch_add (1, std::memory_order_acq_rel); }
hb_atomic_t<unsigned int>::inc()
Line
Count
Source
84
871k
  T inc () { return v.fetch_add (1, std::memory_order_acq_rel); }
85
112M
  T dec () { return v.fetch_add (-1, std::memory_order_acq_rel); }
86
87
871k
  int operator++ (int) { return inc (); }
88
  int operator-- (int) { return dec (); }
89
90
  friend void swap (hb_atomic_t &a, hb_atomic_t &b) noexcept
91
0
  {
92
0
    T v = a.get_acquire ();
93
0
    a.set_relaxed (b.get_acquire ());
94
0
    b.set_relaxed (v);
95
0
  }
96
97
  std::atomic<T> v {0};
98
};
99
100
template <typename T>
101
struct hb_atomic_t<T *>
102
{
103
114M
  hb_atomic_t () = default;
hb_atomic_t<hb_user_data_array_t*>::hb_atomic_t()
Line
Count
Source
103
111M
  hb_atomic_t () = default;
hb_atomic_t<hb_bit_set_t*>::hb_atomic_t()
Line
Count
Source
103
72.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_graphite2_face_data_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<hb_ot_face_data_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<hb_fallback_face_data_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<hb_blob_t*>::hb_atomic_t()
Line
Count
Source
103
529k
  hb_atomic_t () = default;
hb_atomic_t<OT::maxp_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::cmap_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::hhea_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::hmtx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::post_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::name_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::meta_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::vhea_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::vmtx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::glyf_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::cff1_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::cff2_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::gvar_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::VARC_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::kern_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::GDEF_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::GSUB_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::GPOS_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<AAT::morx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<AAT::mort_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<AAT::kerx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::COLR_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::CBDT_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::sbix_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<OT::SVG_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<hb_face_t::plan_node_t*>::hb_atomic_t()
Line
Count
Source
103
33.0k
  hb_atomic_t () = default;
hb_atomic_t<hb_graphite2_font_data_t*>::hb_atomic_t()
Line
Count
Source
103
340k
  hb_atomic_t () = default;
hb_atomic_t<hb_ot_font_data_t*>::hb_atomic_t()
Line
Count
Source
103
340k
  hb_atomic_t () = default;
hb_atomic_t<hb_fallback_font_data_t*>::hb_atomic_t()
Line
Count
Source
103
340k
  hb_atomic_t () = default;
hb_atomic_t<hb_colr_scratch_t*>::hb_atomic_t()
Line
Count
Source
103
2.64k
  hb_atomic_t () = default;
Unexecuted instantiation: hb_atomic_t<OT::SVG::svg_doc_cache_t*>::hb_atomic_t()
hb_atomic_t<unsigned short*>::hb_atomic_t()
Line
Count
Source
103
12.4k
  hb_atomic_t () = default;
hb_atomic_t<hb_glyf_scratch_t*>::hb_atomic_t()
Line
Count
Source
103
36.8k
  hb_atomic_t () = default;
hb_atomic_t<OT::hb_varc_scratch_t*>::hb_atomic_t()
Line
Count
Source
103
24
  hb_atomic_t () = default;
hb_atomic_t<hb_vector_t<float, false>*>::hb_atomic_t()
Line
Count
Source
103
4
  hb_atomic_t () = default;
hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::hb_atomic_t()
Line
Count
Source
103
16
  hb_atomic_t () = default;
hb_atomic_t<OT::cff1_subset_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
20.3k
  hb_atomic_t () = default;
hb_atomic_t<OT::cff2_subset_accelerator_t*>::hb_atomic_t()
Line
Count
Source
103
20.3k
  hb_atomic_t () = default;
Unexecuted instantiation: hb_atomic_t<hb_vector_t<CFF::code_pair_t, false>*>::hb_atomic_t()
104
  constexpr hb_atomic_t (T *v) : v (v) {}
105
  hb_atomic_t (const hb_atomic_t &other) = delete;
106
107
112M
  void init (T *v_ = nullptr) { set_relaxed (v_); }
108
117M
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_user_data_array_t*>::set_relaxed(hb_user_data_array_t*)
Line
Count
Source
108
112M
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_bit_set_t*>::set_relaxed(hb_bit_set_t*)
Line
Count
Source
108
36.1k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_graphite2_font_data_t*>::set_relaxed(hb_graphite2_font_data_t*)
Line
Count
Source
108
1.21M
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_ot_font_data_t*>::set_relaxed(hb_ot_font_data_t*)
Line
Count
Source
108
1.21M
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_fallback_font_data_t*>::set_relaxed(hb_fallback_font_data_t*)
Line
Count
Source
108
1.21M
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_graphite2_face_data_t*>::set_relaxed(hb_graphite2_face_data_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_ot_face_data_t*>::set_relaxed(hb_ot_face_data_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_fallback_face_data_t*>::set_relaxed(hb_fallback_face_data_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::SVG::svg_doc_cache_t*>::set_relaxed(OT::SVG::svg_doc_cache_t*)
hb_atomic_t<hb_blob_t*>::set_relaxed(hb_blob_t*)
Line
Count
Source
108
527k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::maxp_accelerator_t*>::set_relaxed(OT::maxp_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::cmap_accelerator_t*>::set_relaxed(OT::cmap_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::hhea_accelerator_t*>::set_relaxed(OT::hhea_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::hmtx_accelerator_t*>::set_relaxed(OT::hmtx_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::post_accelerator_t*>::set_relaxed(OT::post_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::name_accelerator_t*>::set_relaxed(OT::name_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::meta_accelerator_t*>::set_relaxed(OT::meta_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::vhea_accelerator_t*>::set_relaxed(OT::vhea_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::vmtx_accelerator_t*>::set_relaxed(OT::vmtx_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::glyf_accelerator_t*>::set_relaxed(OT::glyf_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::cff1_accelerator_t*>::set_relaxed(OT::cff1_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::cff2_accelerator_t*>::set_relaxed(OT::cff2_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::gvar_accelerator_t*>::set_relaxed(OT::gvar_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::VARC_accelerator_t*>::set_relaxed(OT::VARC_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::kern_accelerator_t*>::set_relaxed(OT::kern_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::GDEF_accelerator_t*>::set_relaxed(OT::GDEF_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::GSUB_accelerator_t*>::set_relaxed(OT::GSUB_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::GPOS_accelerator_t*>::set_relaxed(OT::GPOS_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<AAT::morx_accelerator_t*>::set_relaxed(AAT::morx_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<AAT::mort_accelerator_t*>::set_relaxed(AAT::mort_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<AAT::kerx_accelerator_t*>::set_relaxed(AAT::kerx_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::COLR_accelerator_t*>::set_relaxed(OT::COLR_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::CBDT_accelerator_t*>::set_relaxed(OT::CBDT_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::sbix_accelerator_t*>::set_relaxed(OT::sbix_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::SVG_accelerator_t*>::set_relaxed(OT::SVG_accelerator_t*)
Line
Count
Source
108
32.9k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::set_relaxed(hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*)
Line
Count
Source
108
16
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::cff1_subset_accelerator_t*>::set_relaxed(OT::cff1_subset_accelerator_t*)
Line
Count
Source
108
20.3k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
hb_atomic_t<OT::cff2_subset_accelerator_t*>::set_relaxed(OT::cff2_subset_accelerator_t*)
Line
Count
Source
108
20.3k
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
109
286k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<OT::hb_ot_layout_lookup_accelerator_t*>::get_relaxed() const
Line
Count
Source
109
7.44k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<hb_bit_set_t*>::get_relaxed() const
Line
Count
Source
109
89.9k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<OT::GPOS_accelerator_t*>::get_relaxed() const
Line
Count
Source
109
4.11k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<OT::GSUB_accelerator_t*>::get_relaxed() const
Line
Count
Source
109
145k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<hb_colr_scratch_t*>::get_relaxed() const
Line
Count
Source
109
2.62k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::SVG::svg_doc_cache_t*>::get_relaxed() const
hb_atomic_t<hb_glyf_scratch_t*>::get_relaxed() const
Line
Count
Source
109
36.8k
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::get_relaxed() const
Line
Count
Source
109
12
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::hb_varc_scratch_t*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_vector_t<CFF::code_pair_t, false>*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_graphite2_face_data_t*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_ot_face_data_t*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_fallback_face_data_t*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_graphite2_font_data_t*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_ot_font_data_t*>::get_relaxed() const
Unexecuted instantiation: hb_atomic_t<hb_fallback_font_data_t*>::get_relaxed() const
110
1.05G
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_bit_set_t*>::get_acquire() const
Line
Count
Source
110
18.2M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::GDEF_accelerator_t*>::get_acquire() const
Line
Count
Source
110
198M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_user_data_array_t*>::get_acquire() const
Line
Count
Source
110
112M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::GSUB_accelerator_t*>::get_acquire() const
Line
Count
Source
110
51.1M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<AAT::morx_accelerator_t*>::get_acquire() const
Line
Count
Source
110
6.80M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<AAT::hb_aat_layout_chain_accelerator_t*>::get_acquire() const
hb_atomic_t<hb_blob_t*>::get_acquire() const
Line
Count
Source
110
10.7M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<AAT::mort_accelerator_t*>::get_acquire() const
Line
Count
Source
110
6.80M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<AAT::kerx_accelerator_t*>::get_acquire() const
Line
Count
Source
110
50.9k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_graphite2_font_data_t*>::get_acquire() const
Line
Count
Source
110
1.21M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_ot_font_data_t*>::get_acquire() const
Line
Count
Source
110
77.5M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_fallback_font_data_t*>::get_acquire() const
Line
Count
Source
110
1.21M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::hb_ot_layout_lookup_accelerator_t*>::get_acquire() const
Line
Count
Source
110
193M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_language_item_t*>::get_acquire() const
Line
Count
Source
110
27.9M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<__locale_struct*>::get_acquire() const
Line
Count
Source
110
4
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<hb_language_impl_t const*>::get_acquire() const
Unexecuted instantiation: hb_atomic_t<hb_draw_funcs_t*>::get_acquire() const
hb_atomic_t<char const*>::get_acquire() const
Line
Count
Source
110
176k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<char const**>::get_acquire() const
hb_atomic_t<hb_face_t::plan_node_t*>::get_acquire() const
Line
Count
Source
110
25.4M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_graphite2_face_data_t*>::get_acquire() const
Line
Count
Source
110
25.6M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_ot_face_data_t*>::get_acquire() const
Line
Count
Source
110
25.5M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_fallback_face_data_t*>::get_acquire() const
Line
Count
Source
110
32.9k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::cmap_accelerator_t*>::get_acquire() const
Line
Count
Source
110
85.5M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::COLR_accelerator_t*>::get_acquire() const
Line
Count
Source
110
17.7M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::SVG_accelerator_t*>::get_acquire() const
Line
Count
Source
110
32.9k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::CBDT_accelerator_t*>::get_acquire() const
Line
Count
Source
110
17.7M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::sbix_accelerator_t*>::get_acquire() const
Line
Count
Source
110
17.7M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<hb_colr_scratch_t*>::get_acquire() const
Unexecuted instantiation: hb_atomic_t<OT::SVG::svg_doc_cache_t*>::get_acquire() const
hb_atomic_t<OT::maxp_accelerator_t*>::get_acquire() const
Line
Count
Source
110
95.9k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::hhea_accelerator_t*>::get_acquire() const
Line
Count
Source
110
6.61M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::hmtx_accelerator_t*>::get_acquire() const
Line
Count
Source
110
42.9M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<unsigned short*>::get_acquire() const
Line
Count
Source
110
12.4k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::post_accelerator_t*>::get_acquire() const
Line
Count
Source
110
1.42M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::name_accelerator_t*>::get_acquire() const
Line
Count
Source
110
3.95M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::meta_accelerator_t*>::get_acquire() const
Line
Count
Source
110
32.9k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::vhea_accelerator_t*>::get_acquire() const
Line
Count
Source
110
32.9k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::vmtx_accelerator_t*>::get_acquire() const
Line
Count
Source
110
400k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::glyf_accelerator_t*>::get_acquire() const
Line
Count
Source
110
806k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::cff1_accelerator_t*>::get_acquire() const
Line
Count
Source
110
132k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_vector_t<float, false>*>::get_acquire() const
Line
Count
Source
110
4
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::cff2_accelerator_t*>::get_acquire() const
Line
Count
Source
110
132k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::gvar_accelerator_t*>::get_acquire() const
Line
Count
Source
110
69.0k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::VARC_accelerator_t*>::get_acquire() const
Line
Count
Source
110
639k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::kern_accelerator_t*>::get_acquire() const
Line
Count
Source
110
18.3M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::GPOS_accelerator_t*>::get_acquire() const
Line
Count
Source
110
51.0M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_glyf_scratch_t*>::get_acquire() const
Line
Count
Source
110
238k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::get_acquire() const
Unexecuted instantiation: hb_atomic_t<OT::hb_varc_scratch_t*>::get_acquire() const
hb_atomic_t<hb_font_funcs_t*>::get_acquire() const
Line
Count
Source
110
340k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_cache_t<20u, 20u, 8u, true>*>::get_acquire() const
Line
Count
Source
110
506k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::hb_scalar_cache_t*>::get_acquire() const
Line
Count
Source
110
1.35M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<hb_cache_t<24u, 16u, 8u, true>*>::get_acquire() const
Line
Count
Source
110
679k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<hb_shaper_entry_t*>::get_acquire() const
Unexecuted instantiation: hb_atomic_t<hb_graphite2_tablelist_t*>::get_acquire() const
hb_atomic_t<hb_unicode_funcs_t*>::get_acquire() const
Line
Count
Source
110
7.01M
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<hb_paint_funcs_t*>::get_acquire() const
hb_atomic_t<arabic_fallback_plan_t*>::get_acquire() const
Line
Count
Source
110
398k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::cff1_subset_accelerator_t*>::get_acquire() const
Line
Count
Source
110
20.3k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
hb_atomic_t<OT::cff2_subset_accelerator_t*>::get_acquire() const
Line
Count
Source
110
20.3k
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
Unexecuted instantiation: hb_atomic_t<hb_vector_t<CFF::code_pair_t, false>*>::get_acquire() const
111
63.4M
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_bit_set_t*>::cmpexch(hb_bit_set_t*, hb_bit_set_t*)
Line
Count
Source
111
36.5M
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::GDEF_accelerator_t*>::cmpexch(OT::GDEF_accelerator_t*, OT::GDEF_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::GSUB_accelerator_t*>::cmpexch(OT::GSUB_accelerator_t*, OT::GSUB_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<AAT::morx_accelerator_t*>::cmpexch(AAT::morx_accelerator_t*, AAT::morx_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_blob_t*>::cmpexch(hb_blob_t*, hb_blob_t*)
Line
Count
Source
111
133k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<AAT::mort_accelerator_t*>::cmpexch(AAT::mort_accelerator_t*, AAT::mort_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<AAT::hb_aat_layout_chain_accelerator_t*>::cmpexch(AAT::hb_aat_layout_chain_accelerator_t*, AAT::hb_aat_layout_chain_accelerator_t*)
hb_atomic_t<AAT::kerx_accelerator_t*>::cmpexch(AAT::kerx_accelerator_t*, AAT::kerx_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::hb_ot_layout_lookup_accelerator_t*>::cmpexch(OT::hb_ot_layout_lookup_accelerator_t*, OT::hb_ot_layout_lookup_accelerator_t*)
Line
Count
Source
111
6.12k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_user_data_array_t*>::cmpexch(hb_user_data_array_t*, hb_user_data_array_t*)
hb_atomic_t<hb_language_item_t*>::cmpexch(hb_language_item_t*, hb_language_item_t*)
Line
Count
Source
111
230
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<__locale_struct*>::cmpexch(__locale_struct*, __locale_struct*)
Line
Count
Source
111
2
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_language_impl_t const*>::cmpexch(hb_language_impl_t const*, hb_language_impl_t const*)
Unexecuted instantiation: hb_atomic_t<hb_draw_funcs_t*>::cmpexch(hb_draw_funcs_t*, hb_draw_funcs_t*)
hb_atomic_t<char const*>::cmpexch(char const*, char const*)
Line
Count
Source
111
26
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<char const**>::cmpexch(char const**, char const**)
hb_atomic_t<OT::cmap_accelerator_t*>::cmpexch(OT::cmap_accelerator_t*, OT::cmap_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::COLR_accelerator_t*>::cmpexch(OT::COLR_accelerator_t*, OT::COLR_accelerator_t*)
Line
Count
Source
111
2.64k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::SVG_accelerator_t*>::cmpexch(OT::SVG_accelerator_t*, OT::SVG_accelerator_t*)
hb_atomic_t<OT::CBDT_accelerator_t*>::cmpexch(OT::CBDT_accelerator_t*, OT::CBDT_accelerator_t*)
Line
Count
Source
111
2.64k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::sbix_accelerator_t*>::cmpexch(OT::sbix_accelerator_t*, OT::sbix_accelerator_t*)
Line
Count
Source
111
2.64k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_colr_scratch_t*>::cmpexch(hb_colr_scratch_t*, hb_colr_scratch_t*)
Unexecuted instantiation: hb_atomic_t<OT::SVG::svg_doc_cache_t*>::cmpexch(OT::SVG::svg_doc_cache_t*, OT::SVG::svg_doc_cache_t*)
Unexecuted instantiation: hb_atomic_t<hb_vector_t<float, false>*>::cmpexch(hb_vector_t<float, false>*, hb_vector_t<float, false>*)
hb_atomic_t<OT::maxp_accelerator_t*>::cmpexch(OT::maxp_accelerator_t*, OT::maxp_accelerator_t*)
Line
Count
Source
111
25.3k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::hmtx_accelerator_t*>::cmpexch(OT::hmtx_accelerator_t*, OT::hmtx_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::vmtx_accelerator_t*>::cmpexch(OT::vmtx_accelerator_t*, OT::vmtx_accelerator_t*)
Line
Count
Source
111
2.46k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::gvar_accelerator_t*>::cmpexch(OT::gvar_accelerator_t*, OT::gvar_accelerator_t*)
Line
Count
Source
111
2.29k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_glyf_scratch_t*>::cmpexch(hb_glyf_scratch_t*, hb_glyf_scratch_t*)
Line
Count
Source
111
477k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::cmpexch(hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*, hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*)
Unexecuted instantiation: hb_atomic_t<unsigned short*>::cmpexch(unsigned short*, unsigned short*)
Unexecuted instantiation: hb_atomic_t<OT::hb_varc_scratch_t*>::cmpexch(OT::hb_varc_scratch_t*, OT::hb_varc_scratch_t*)
hb_atomic_t<OT::post_accelerator_t*>::cmpexch(OT::post_accelerator_t*, OT::post_accelerator_t*)
Line
Count
Source
111
12.4k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_cache_t<20u, 20u, 8u, true>*>::cmpexch(hb_cache_t<20u, 20u, 8u, true>*, hb_cache_t<20u, 20u, 8u, true>*)
Line
Count
Source
111
333k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::hb_scalar_cache_t*>::cmpexch(OT::hb_scalar_cache_t*, OT::hb_scalar_cache_t*)
Unexecuted instantiation: hb_atomic_t<hb_cache_t<24u, 16u, 8u, true>*>::cmpexch(hb_cache_t<24u, 16u, 8u, true>*, hb_cache_t<24u, 16u, 8u, true>*)
hb_atomic_t<OT::glyf_accelerator_t*>::cmpexch(OT::glyf_accelerator_t*, OT::glyf_accelerator_t*)
Line
Count
Source
111
24
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::VARC_accelerator_t*>::cmpexch(OT::VARC_accelerator_t*, OT::VARC_accelerator_t*)
Line
Count
Source
111
24
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::cff2_accelerator_t*>::cmpexch(OT::cff2_accelerator_t*, OT::cff2_accelerator_t*)
Line
Count
Source
111
4
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::cff1_accelerator_t*>::cmpexch(OT::cff1_accelerator_t*, OT::cff1_accelerator_t*)
Line
Count
Source
111
16
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_font_funcs_t*>::cmpexch(hb_font_funcs_t*, hb_font_funcs_t*)
Line
Count
Source
111
52
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::GPOS_accelerator_t*>::cmpexch(OT::GPOS_accelerator_t*, OT::GPOS_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::kern_accelerator_t*>::cmpexch(OT::kern_accelerator_t*, OT::kern_accelerator_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_ot_font_data_t*>::cmpexch(hb_ot_font_data_t*, hb_ot_font_data_t*)
Line
Count
Source
111
160k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<OT::hhea_accelerator_t*>::cmpexch(OT::hhea_accelerator_t*, OT::hhea_accelerator_t*)
Line
Count
Source
111
21.5k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::vhea_accelerator_t*>::cmpexch(OT::vhea_accelerator_t*, OT::vhea_accelerator_t*)
hb_atomic_t<OT::name_accelerator_t*>::cmpexch(OT::name_accelerator_t*, OT::name_accelerator_t*)
Line
Count
Source
111
12.5k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_graphite2_font_data_t*>::cmpexch(hb_graphite2_font_data_t*, hb_graphite2_font_data_t*)
Unexecuted instantiation: hb_atomic_t<hb_fallback_font_data_t*>::cmpexch(hb_fallback_font_data_t*, hb_fallback_font_data_t*)
hb_atomic_t<hb_graphite2_face_data_t*>::cmpexch(hb_graphite2_face_data_t*, hb_graphite2_face_data_t*)
Line
Count
Source
111
25.6M
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
hb_atomic_t<hb_ot_face_data_t*>::cmpexch(hb_ot_face_data_t*, hb_ot_face_data_t*)
Line
Count
Source
111
9.02k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_fallback_face_data_t*>::cmpexch(hb_fallback_face_data_t*, hb_fallback_face_data_t*)
hb_atomic_t<hb_face_t::plan_node_t*>::cmpexch(hb_face_t::plan_node_t*, hb_face_t::plan_node_t*)
Line
Count
Source
111
18.0k
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_shaper_entry_t*>::cmpexch(hb_shaper_entry_t*, hb_shaper_entry_t*)
Unexecuted instantiation: hb_atomic_t<hb_graphite2_tablelist_t*>::cmpexch(hb_graphite2_tablelist_t*, hb_graphite2_tablelist_t*)
hb_atomic_t<hb_unicode_funcs_t*>::cmpexch(hb_unicode_funcs_t*, hb_unicode_funcs_t*)
Line
Count
Source
111
52
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<hb_paint_funcs_t*>::cmpexch(hb_paint_funcs_t*, hb_paint_funcs_t*)
hb_atomic_t<arabic_fallback_plan_t*>::cmpexch(arabic_fallback_plan_t*, arabic_fallback_plan_t*)
Line
Count
Source
111
153
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
Unexecuted instantiation: hb_atomic_t<OT::cff1_subset_accelerator_t*>::cmpexch(OT::cff1_subset_accelerator_t*, OT::cff1_subset_accelerator_t*)
Unexecuted instantiation: hb_atomic_t<OT::cff2_subset_accelerator_t*>::cmpexch(OT::cff2_subset_accelerator_t*, OT::cff2_subset_accelerator_t*)
Unexecuted instantiation: hb_atomic_t<hb_vector_t<CFF::code_pair_t, false>*>::cmpexch(hb_vector_t<CFF::code_pair_t, false>*, hb_vector_t<CFF::code_pair_t, false>*)
112
113
  hb_atomic_t &operator= (const hb_atomic_t& o) { set_relaxed (o.get_relaxed ()); return *this; }
114
0
  hb_atomic_t &operator= (hb_atomic_t&& o){ set_relaxed (o.get_relaxed ()); o.set_relaxed ({}); return *this; }
115
116
0
  operator bool () const { return get_acquire () != nullptr; }
117
0
  T *operator->() const { return get_acquire (); }
118
  template <typename C>
119
  operator C * () const
120
53.8M
  {
121
53.8M
    return get_acquire ();
122
53.8M
  }
Unexecuted instantiation: hb_atomic_t<AAT::hb_aat_layout_chain_accelerator_t*>::operator void*<void>() const
hb_atomic_t<hb_language_item_t*>::operator hb_language_item_t*<hb_language_item_t>() const
Line
Count
Source
120
27.9M
  {
121
27.9M
    return get_acquire ();
122
27.9M
  }
Unexecuted instantiation: hb_atomic_t<hb_language_impl_t const*>::operator hb_language_impl_t const*<hb_language_impl_t const>() const
hb_atomic_t<hb_face_t::plan_node_t*>::operator hb_face_t::plan_node_t*<hb_face_t::plan_node_t>() const
Line
Count
Source
120
25.4M
  {
121
25.4M
    return get_acquire ();
122
25.4M
  }
Unexecuted instantiation: hb_atomic_t<hb_graphite2_tablelist_t*>::operator hb_graphite2_tablelist_t*<hb_graphite2_tablelist_t>() const
hb_atomic_t<arabic_fallback_plan_t*>::operator arabic_fallback_plan_t*<arabic_fallback_plan_t>() const
Line
Count
Source
120
398k
  {
121
398k
    return get_acquire ();
122
398k
  }
123
124
  friend void swap (hb_atomic_t &a, hb_atomic_t &b) noexcept
125
  {
126
    T *p = a.get_acquire ();
127
    a.set_relaxed (b.get_acquire ());
128
    b.set_relaxed (p);
129
  }
130
131
  std::atomic<T *> v {nullptr};
132
};
133
134
#else /* defined(HB_NO_MT) */
135
136
template <typename T>
137
struct hb_atomic_t
138
{
139
  hb_atomic_t () = default;
140
  constexpr hb_atomic_t (T v) : v (v) {}
141
142
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
143
  operator T () const { return get_relaxed (); }
144
145
  void set_relaxed (T v_) { v = v_; }
146
  void set_release (T v_) { v = v_; }
147
  T get_relaxed () const { return v; }
148
  T get_acquire () const { return v; }
149
  T inc () { return v++; }
150
  T dec () { return v--; }
151
152
  int operator ++ (int) { return inc (); }
153
  int operator -- (int) { return dec (); }
154
155
  T v = 0;
156
};
157
158
template <typename T>
159
struct hb_atomic_t<T*>
160
{
161
  hb_atomic_t () = default;
162
  constexpr hb_atomic_t (T* v) : v (v) {}
163
  hb_atomic_t (const hb_atomic_t &other) = delete;
164
165
  void init (T* v_ = nullptr) { set_relaxed (v_); }
166
  void set_relaxed (T* v_) { v = v_; }
167
  T *get_relaxed () const { return v; }
168
  T *get_acquire () const { return v; }
169
  bool cmpexch (T *old, T *new_)
170
  {
171
    if (v != old) return false;
172
    v = new_;
173
    return true;
174
  }
175
176
  operator bool () const { return get_acquire () != nullptr; }
177
  T * operator -> () const                    { return get_acquire (); }
178
  template <typename C> operator C * () const { return get_acquire (); }
179
180
  T *v = nullptr;
181
};
182
183
#endif
184
185
186
static inline bool hb_barrier ()
187
85.2M
{
188
85.2M
  _hb_compiler_memory_r_barrier ();
189
85.2M
  return true;
190
85.2M
}
hb-aat-layout.cc:hb_barrier()
Line
Count
Source
187
19.7M
{
188
19.7M
  _hb_compiler_memory_r_barrier ();
189
19.7M
  return true;
190
19.7M
}
Unexecuted instantiation: hb-aat-map.cc:hb_barrier()
Unexecuted instantiation: hb-blob.cc:hb_barrier()
Unexecuted instantiation: hb-buffer.cc:hb_barrier()
Unexecuted instantiation: hb-common.cc:hb_barrier()
Unexecuted instantiation: hb-draw.cc:hb_barrier()
hb-face.cc:hb_barrier()
Line
Count
Source
187
27.9M
{
188
27.9M
  _hb_compiler_memory_r_barrier ();
189
27.9M
  return true;
190
27.9M
}
Unexecuted instantiation: hb-face-builder.cc:hb_barrier()
Unexecuted instantiation: hb-fallback-shape.cc:hb_barrier()
hb-font.cc:hb_barrier()
Line
Count
Source
187
12
{
188
12
  _hb_compiler_memory_r_barrier ();
189
12
  return true;
190
12
}
Unexecuted instantiation: hb-map.cc:hb_barrier()
Unexecuted instantiation: hb-number.cc:hb_barrier()
hb-ot-color.cc:hb_barrier()
Line
Count
Source
187
3.32k
{
188
3.32k
  _hb_compiler_memory_r_barrier ();
189
3.32k
  return true;
190
3.32k
}
Unexecuted instantiation: hb-ot-face.cc:hb_barrier()
hb-ot-fetch.cc:hb_barrier()
Line
Count
Source
187
68.5k
{
188
68.5k
  _hb_compiler_memory_r_barrier ();
189
68.5k
  return true;
190
68.5k
}
hb-ot-font.cc:hb_barrier()
Line
Count
Source
187
97.5k
{
188
97.5k
  _hb_compiler_memory_r_barrier ();
189
97.5k
  return true;
190
97.5k
}
Unexecuted instantiation: hb-outline.cc:hb_barrier()
Unexecuted instantiation: VARC.cc:hb_barrier()
hb-ot-layout.cc:hb_barrier()
Line
Count
Source
187
36.1M
{
188
36.1M
  _hb_compiler_memory_r_barrier ();
189
36.1M
  return true;
190
36.1M
}
Unexecuted instantiation: hb-ot-math.cc:hb_barrier()
hb-ot-metrics.cc:hb_barrier()
Line
Count
Source
187
294
{
188
294
  _hb_compiler_memory_r_barrier ();
189
294
  return true;
190
294
}
hb-ot-name.cc:hb_barrier()
Line
Count
Source
187
1.11M
{
188
1.11M
  _hb_compiler_memory_r_barrier ();
189
1.11M
  return true;
190
1.11M
}
Unexecuted instantiation: hb-ot-shape.cc:hb_barrier()
Unexecuted instantiation: hb-ot-tag.cc:hb_barrier()
hb-ot-var.cc:hb_barrier()
Line
Count
Source
187
587
{
188
587
  _hb_compiler_memory_r_barrier ();
189
587
  return true;
190
587
}
Unexecuted instantiation: hb-set.cc:hb_barrier()
Unexecuted instantiation: hb-shape-plan.cc:hb_barrier()
Unexecuted instantiation: hb-shape.cc:hb_barrier()
Unexecuted instantiation: hb-shaper.cc:hb_barrier()
Unexecuted instantiation: hb-static.cc:hb_barrier()
Unexecuted instantiation: hb-style.cc:hb_barrier()
Unexecuted instantiation: hb-unicode.cc:hb_barrier()
Unexecuted instantiation: hb-graphite2.cc:hb_barrier()
Unexecuted instantiation: hb-icu.cc:hb_barrier()
Unexecuted instantiation: hb-buffer-verify.cc:hb_barrier()
Unexecuted instantiation: hb-paint.cc:hb_barrier()
Unexecuted instantiation: hb-paint-bounded.cc:hb_barrier()
Unexecuted instantiation: hb-paint-extents.cc:hb_barrier()
Unexecuted instantiation: hb-ot-cff1-table.cc:hb_barrier()
Unexecuted instantiation: hb-ot-cff2-table.cc:hb_barrier()
Unexecuted instantiation: hb-ot-map.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-arabic.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-default.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-hangul.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-indic.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-khmer.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-thai.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-use.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shape-fallback.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shape-normalize.cc:hb_barrier()
Unexecuted instantiation: hb-ucd.cc:hb_barrier()
Unexecuted instantiation: hb-buffer-serialize.cc:hb_barrier()
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:hb_barrier()
Unexecuted instantiation: hb-subset-input.cc:hb_barrier()
Unexecuted instantiation: hb-subset.cc:hb_barrier()
hb-subset-plan.cc:hb_barrier()
Line
Count
Source
187
37
{
188
37
  _hb_compiler_memory_r_barrier ();
189
37
  return true;
190
37
}
Unexecuted instantiation: hb-subset-plan-layout.cc:hb_barrier()
Unexecuted instantiation: hb-subset-plan-var.cc:hb_barrier()
Unexecuted instantiation: hb-subset-table-layout.cc:hb_barrier()
Unexecuted instantiation: hb-subset-table-var.cc:hb_barrier()
Unexecuted instantiation: hb-subset-table-cff.cc:hb_barrier()
Unexecuted instantiation: hb-subset-table-color.cc:hb_barrier()
hb-subset-table-other.cc:hb_barrier()
Line
Count
Source
187
14.6k
{
188
14.6k
  _hb_compiler_memory_r_barrier ();
189
14.6k
  return true;
190
14.6k
}
Unexecuted instantiation: gsubgpos-context.cc:hb_barrier()
Unexecuted instantiation: hb-subset-cff1.cc:hb_barrier()
Unexecuted instantiation: hb-subset-cff2.cc:hb_barrier()
Unexecuted instantiation: hb-subset-instancer-iup.cc:hb_barrier()
Unexecuted instantiation: hb-subset-instancer-solver.cc:hb_barrier()
Unexecuted instantiation: hb-subset-cff-common.cc:hb_barrier()
191
192
193
#endif /* HB_ATOMIC_HH */