Coverage Report

Created: 2026-01-09 06:09

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/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
/*
40
 * Atomic integers and pointers.
41
 */
42
43
/* We need external help for these */
44
45
#if defined(hb_atomic_int_impl_add) \
46
 && defined(hb_atomic_ptr_impl_get) \
47
 && defined(hb_atomic_ptr_impl_cmpexch)
48
49
/* Defined externally, i.e. in config.h. */
50
51
52
#elif !defined(HB_NO_MT) && defined(__ATOMIC_ACQUIRE)
53
54
/* C++11-style GCC primitives. We prefer these as they don't require linking to libstdc++ / libc++. */
55
56
#define _hb_memory_barrier()      __sync_synchronize ()
57
58
2.46M
#define hb_atomic_int_impl_add(AI, V)   __atomic_fetch_add ((AI), (V), __ATOMIC_ACQ_REL)
59
77.0M
#define hb_atomic_int_impl_set_relaxed(AI, V) __atomic_store_n ((AI), (V), __ATOMIC_RELAXED)
60
5.54k
#define hb_atomic_int_impl_set(AI, V)   __atomic_store_n ((AI), (V), __ATOMIC_RELEASE)
61
481M
#define hb_atomic_int_impl_get_relaxed(AI)  __atomic_load_n ((AI), __ATOMIC_RELAXED)
62
85.8k
#define hb_atomic_int_impl_get(AI)    __atomic_load_n ((AI), __ATOMIC_ACQUIRE)
63
64
3.46M
#define hb_atomic_ptr_impl_set_relaxed(P, V)  __atomic_store_n ((P), (V), __ATOMIC_RELAXED)
65
10.9M
#define hb_atomic_ptr_impl_get_relaxed(P) __atomic_load_n ((P), __ATOMIC_RELAXED)
66
44.9M
#define hb_atomic_ptr_impl_get(P)   __atomic_load_n ((P), __ATOMIC_ACQUIRE)
67
static inline bool
68
_hb_atomic_ptr_impl_cmplexch (const void **P, const void *O_, const void *N)
69
2.29M
{
70
2.29M
  const void *O = O_; // Need lvalue
71
2.29M
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2.29M
}
hb-aat-layout.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
318k
{
70
318k
  const void *O = O_; // Need lvalue
71
318k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
318k
}
Unexecuted instantiation: hb-aat-map.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-blob.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-buffer.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-common.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
126k
{
70
126k
  const void *O = O_; // Need lvalue
71
126k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
126k
}
hb-draw.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
2
{
70
2
  const void *O = O_; // Need lvalue
71
2
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2
}
hb-face.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
84.4k
{
70
84.4k
  const void *O = O_; // Need lvalue
71
84.4k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
84.4k
}
Unexecuted instantiation: hb-face-builder.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-fallback-shape.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-font.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
42.2k
{
70
42.2k
  const void *O = O_; // Need lvalue
71
42.2k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
42.2k
}
Unexecuted instantiation: hb-map.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-number.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-ot-color.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
211k
{
70
211k
  const void *O = O_; // Need lvalue
71
211k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
211k
}
hb-ot-face.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
208
{
70
208
  const void *O = O_; // Need lvalue
71
208
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
208
}
hb-ot-font.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
972k
{
70
972k
  const void *O = O_; // Need lvalue
71
972k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
972k
}
Unexecuted instantiation: hb-outline.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
VARC.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
2
{
70
2
  const void *O = O_; // Need lvalue
71
2
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2
}
hb-ot-layout.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
223k
{
70
223k
  const void *O = O_; // Need lvalue
71
223k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
223k
}
hb-ot-math.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
42.2k
{
70
42.2k
  const void *O = O_; // Need lvalue
71
42.2k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
42.2k
}
hb-ot-meta.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
42.2k
{
70
42.2k
  const void *O = O_; // Need lvalue
71
42.2k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
42.2k
}
hb-ot-metrics.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
42.2k
{
70
42.2k
  const void *O = O_; // Need lvalue
71
42.2k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
42.2k
}
hb-ot-name.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
42.2k
{
70
42.2k
  const void *O = O_; // Need lvalue
71
42.2k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
42.2k
}
hb-ot-shape.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
124
{
70
124
  const void *O = O_; // Need lvalue
71
124
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
124
}
Unexecuted instantiation: hb-ot-tag.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-ot-var.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
42.2k
{
70
42.2k
  const void *O = O_; // Need lvalue
71
42.2k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
42.2k
}
Unexecuted instantiation: hb-set.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-shape-plan.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
105k
{
70
105k
  const void *O = O_; // Need lvalue
71
105k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
105k
}
Unexecuted instantiation: hb-shape.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-shaper.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
1
{
70
1
  const void *O = O_; // Need lvalue
71
1
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
1
}
Unexecuted instantiation: hb-unicode.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-buffer-verify.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-paint.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-paint-bounded.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
2
{
70
2
  const void *O = O_; // Need lvalue
71
2
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2
}
hb-paint-extents.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
2
{
70
2
  const void *O = O_; // Need lvalue
71
2
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2
}
Unexecuted instantiation: hb-ot-cff1-table.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-ot-cff2-table.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
2.58k
{
70
2.58k
  const void *O = O_; // Need lvalue
71
2.58k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2.58k
}
Unexecuted instantiation: hb-ot-map.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-ot-shaper-arabic.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
1.51k
{
70
1.51k
  const void *O = O_; // Need lvalue
71
1.51k
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
1.51k
}
Unexecuted instantiation: hb-ot-shaper-default.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-hangul.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-hebrew.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-indic.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-khmer.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-myanmar.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-syllabic.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-thai.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-use.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-vowel-constraints.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shape-fallback.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shape-normalize.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
hb-ucd.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Line
Count
Source
69
2
{
70
2
  const void *O = O_; // Need lvalue
71
2
  return __atomic_compare_exchange_n ((void **) P, (void **) &O, (void *) N, true, __ATOMIC_ACQ_REL, __ATOMIC_RELAXED);
72
2
}
Unexecuted instantiation: hb-buffer-serialize.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
Unexecuted instantiation: hb-ot-shaper-indic-table.cc:_hb_atomic_ptr_impl_cmplexch(void const**, void const*, void const*)
73
2.29M
#define hb_atomic_ptr_impl_cmpexch(P,O,N) _hb_atomic_ptr_impl_cmplexch ((const void **) (P), (O), (N))
74
75
76
#elif !defined(HB_NO_MT)
77
78
/* C++11 atomics. */
79
80
#include <atomic>
81
82
#define HB_STL_ATOMIC_IMPL
83
84
#define _hb_memory_r_barrier()      std::atomic_thread_fence(std::memory_order_acquire)
85
#define _hb_memory_w_barrier()      std::atomic_thread_fence(std::memory_order_release)
86
87
#else /* defined(HB_NO_MT) */
88
89
#define hb_atomic_int_impl_add(AI, V)   ((*(AI) += (V)) - (V))
90
#define _hb_memory_barrier()      do {} while (0)
91
#define hb_atomic_ptr_impl_cmpexch(P,O,N) (* (void **) (P) == (void *) (O) ? (* (void **) (P) = (void *) (N), true) : false)
92
93
#endif
94
95
96
/* This should never be disabled, even under HB_NO_MT.
97
 * except that MSVC gives me an internal compiler error, so disabled there.
98
 *
99
 * https://github.com/harfbuzz/harfbuzz/pull/4119
100
 */
101
#ifndef _hb_compiler_memory_r_barrier
102
#if defined(__ATOMIC_ACQUIRE) // gcc-like
103
330M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-aat-layout.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
160M
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()
hb-common.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
8.61k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-draw.cc:_hb_compiler_memory_r_barrier()
hb-face.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
2.65M
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
103
6.01k
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
103
1.65M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-ot-face.cc:_hb_compiler_memory_r_barrier()
hb-ot-font.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
6.01M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-outline.cc:_hb_compiler_memory_r_barrier()
VARC.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
6.05M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-layout.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
144M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-math.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
6.10M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-meta.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
212
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-metrics.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
2.37k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-name.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
2.44M
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-shape.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
121k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-ot-tag.cc:_hb_compiler_memory_r_barrier()
hb-ot-var.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
5.02k
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-unicode.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()
hb-ot-cff1-table.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
476
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
hb-ot-cff2-table.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
342
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
Unexecuted instantiation: hb-ot-map.cc:_hb_compiler_memory_r_barrier()
hb-ot-shaper-arabic.cc:_hb_compiler_memory_r_barrier()
Line
Count
Source
103
33.2k
static inline void _hb_compiler_memory_r_barrier () { asm volatile("": : :"memory"); }
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()
104
#elif !defined(_MSC_VER)
105
#include <atomic>
106
#define _hb_compiler_memory_r_barrier() std::atomic_signal_fence (std::memory_order_acquire)
107
#else
108
static inline void _hb_compiler_memory_r_barrier () {}
109
#endif
110
#endif
111
112
113
114
#ifndef _hb_memory_r_barrier
115
#define _hb_memory_r_barrier()      _hb_memory_barrier ()
116
#endif
117
#ifndef _hb_memory_w_barrier
118
#define _hb_memory_w_barrier()      _hb_memory_barrier ()
119
#endif
120
#ifndef hb_atomic_int_impl_set_relaxed
121
#define hb_atomic_int_impl_set_relaxed(AI, V) (*(AI) = (V))
122
#endif
123
#ifndef hb_atomic_int_impl_get_relaxed
124
#define hb_atomic_int_impl_get_relaxed(AI)  (*(AI))
125
#endif
126
127
#ifndef hb_atomic_ptr_impl_set_relaxed
128
#define hb_atomic_ptr_impl_set_relaxed(P, V)  (*(P) = (V))
129
#endif
130
#ifndef hb_atomic_ptr_impl_get_relaxed
131
#define hb_atomic_ptr_impl_get_relaxed(P) (*(P))
132
#endif
133
#ifndef hb_atomic_int_impl_set
134
template <typename T>
135
inline void hb_atomic_int_impl_set (T *AI, T v) { _hb_memory_w_barrier (); *AI = v; }
136
#endif
137
#ifndef hb_atomic_int_impl_get
138
template <typename T>
139
inline T hb_atomic_int_impl_get (const T *AI) { T v = *AI; _hb_memory_r_barrier (); return v; }
140
#endif
141
#ifndef hb_atomic_ptr_impl_get
142
inline void *hb_atomic_ptr_impl_get (void ** const P) { void *v = *P; _hb_memory_r_barrier (); return v; }
143
#endif
144
145
#ifdef HB_STL_ATOMIC_IMPL
146
template <typename T>
147
struct hb_atomic_t
148
{
149
  hb_atomic_t () = default;
150
  constexpr hb_atomic_t (T v) : v (v) {}
151
  constexpr hb_atomic_t (const hb_atomic_t& o) : v (o.get_relaxed ()) {}
152
  constexpr hb_atomic_t (hb_atomic_t&& o) : v (o.get_relaxed ()) { o.set_relaxed ({}); }
153
154
  hb_atomic_t &operator= (const hb_atomic_t& o) { set_relaxed (o.get_relaxed ()); return *this; }
155
  hb_atomic_t &operator= (hb_atomic_t&& o){ set_relaxed (o.get_relaxed ()); o.set_relaxed ({}); return *this; }
156
  hb_atomic_t &operator= (T v_)
157
  {
158
    set_relaxed (v_);
159
    return *this;
160
  }
161
  operator T () const { return get_relaxed (); }
162
163
  void set_relaxed (T v_) { v.store (v_, std::memory_order_relaxed); }
164
  void set_release (T v_) { v.store (v_, std::memory_order_release); }
165
  T get_relaxed () const { return v.load (std::memory_order_relaxed); }
166
  T get_acquire () const { return v.load (std::memory_order_acquire); }
167
  T inc () { return v.fetch_add (1, std::memory_order_acq_rel); }
168
  T dec () { return v.fetch_add (-1, std::memory_order_acq_rel); }
169
170
  int operator++ (int) { return inc (); }
171
  int operator-- (int) { return dec (); }
172
173
  friend void swap (hb_atomic_t &a, hb_atomic_t &b) noexcept
174
  {
175
    T v = a.get_acquire ();
176
    a.set_relaxed (b.get_acquire ());
177
    b.set_relaxed (v);
178
  }
179
180
  std::atomic<T> v = 0;
181
};
182
183
template <typename T>
184
struct hb_atomic_t<T *>
185
{
186
  hb_atomic_t () = default;
187
  constexpr hb_atomic_t (T *v) : v (v) {}
188
  hb_atomic_t (const hb_atomic_t &other) = delete;
189
190
  void init (T *v_ = nullptr) { set_relaxed (v_); }
191
  void set_relaxed (T *v_) { v.store (v_, std::memory_order_relaxed); }
192
  T *get_relaxed () const { return v.load (std::memory_order_relaxed); }
193
  T *get_acquire () const { return v.load (std::memory_order_acquire); }
194
  bool cmpexch (T *old, T *new_) { return v.compare_exchange_weak (old, new_, std::memory_order_acq_rel, std::memory_order_relaxed); }
195
196
  operator bool () const { return get_acquire () != nullptr; }
197
  T *operator->() const { return get_acquire (); }
198
  template <typename C>
199
  operator C * () const
200
  {
201
    return get_acquire ();
202
  }
203
204
  friend void swap (hb_atomic_t &a, hb_atomic_t &b) noexcept
205
  {
206
    T *p = a.get_acquire ();
207
    a.set_relaxed (b.get_acquire ());
208
    b.set_relaxed (p);
209
  }
210
211
  std::atomic<T *> v = nullptr;
212
};
213
214
#else
215
216
template <typename T>
217
struct hb_atomic_t
218
{
219
43.3M
  hb_atomic_t () = default;
hb_atomic_t<unsigned short>::hb_atomic_t()
Line
Count
Source
219
12.1M
  hb_atomic_t () = default;
hb_atomic_t<int>::hb_atomic_t()
Line
Count
Source
219
9.55M
  hb_atomic_t () = default;
hb_atomic_t<unsigned int>::hb_atomic_t()
Line
Count
Source
219
21.7M
  hb_atomic_t () = default;
220
287M
  constexpr hb_atomic_t (T v) : v (v) {}
hb_atomic_t<unsigned short>::hb_atomic_t(unsigned short)
Line
Count
Source
220
281M
  constexpr hb_atomic_t (T v) : v (v) {}
hb_atomic_t<unsigned int>::hb_atomic_t(unsigned int)
Line
Count
Source
220
4.97M
  constexpr hb_atomic_t (T v) : v (v) {}
hb_atomic_t<bool>::hb_atomic_t(bool)
Line
Count
Source
220
809k
  constexpr hb_atomic_t (T v) : v (v) {}
221
222
77.0M
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
hb_atomic_t<unsigned int>::operator=(unsigned int)
Line
Count
Source
222
32.7M
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
hb_atomic_t<unsigned short>::operator=(unsigned short)
Line
Count
Source
222
27.1M
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
hb_atomic_t<int>::operator=(int)
Line
Count
Source
222
13.9M
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
hb_atomic_t<bool>::operator=(bool)
Line
Count
Source
222
1.12M
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
hb_atomic_t<unsigned char>::operator=(unsigned char)
Line
Count
Source
222
2.06M
  hb_atomic_t& operator = (T v_) { set_relaxed (v_); return *this; }
223
481M
  operator T () const { return get_relaxed (); }
hb_atomic_t<unsigned int>::operator unsigned int() const
Line
Count
Source
223
39.4M
  operator T () const { return get_relaxed (); }
hb_atomic_t<unsigned short>::operator unsigned short() const
Line
Count
Source
223
422M
  operator T () const { return get_relaxed (); }
hb_atomic_t<int>::operator int() const
Line
Count
Source
223
18.2M
  operator T () const { return get_relaxed (); }
hb_atomic_t<unsigned char>::operator unsigned char() const
Line
Count
Source
223
769k
  operator T () const { return get_relaxed (); }
hb_atomic_t<bool>::operator bool() const
Line
Count
Source
223
1.05M
  operator T () const { return get_relaxed (); }
224
225
77.0M
  void set_relaxed (T v_) { hb_atomic_int_impl_set_relaxed (&v, v_); }
hb_atomic_t<unsigned int>::set_relaxed(unsigned int)
Line
Count
Source
225
32.7M
  void set_relaxed (T v_) { hb_atomic_int_impl_set_relaxed (&v, v_); }
hb_atomic_t<unsigned short>::set_relaxed(unsigned short)
Line
Count
Source
225
27.1M
  void set_relaxed (T v_) { hb_atomic_int_impl_set_relaxed (&v, v_); }
hb_atomic_t<int>::set_relaxed(int)
Line
Count
Source
225
13.9M
  void set_relaxed (T v_) { hb_atomic_int_impl_set_relaxed (&v, v_); }
hb_atomic_t<bool>::set_relaxed(bool)
Line
Count
Source
225
1.12M
  void set_relaxed (T v_) { hb_atomic_int_impl_set_relaxed (&v, v_); }
hb_atomic_t<unsigned char>::set_relaxed(unsigned char)
Line
Count
Source
225
2.06M
  void set_relaxed (T v_) { hb_atomic_int_impl_set_relaxed (&v, v_); }
226
5.54k
  void set_release (T v_) { hb_atomic_int_impl_set (&v, v_); }
227
481M
  T get_relaxed () const { return hb_atomic_int_impl_get_relaxed (&v); }
hb_atomic_t<unsigned int>::get_relaxed() const
Line
Count
Source
227
39.4M
  T get_relaxed () const { return hb_atomic_int_impl_get_relaxed (&v); }
hb_atomic_t<unsigned short>::get_relaxed() const
Line
Count
Source
227
422M
  T get_relaxed () const { return hb_atomic_int_impl_get_relaxed (&v); }
hb_atomic_t<int>::get_relaxed() const
Line
Count
Source
227
18.2M
  T get_relaxed () const { return hb_atomic_int_impl_get_relaxed (&v); }
hb_atomic_t<unsigned char>::get_relaxed() const
Line
Count
Source
227
769k
  T get_relaxed () const { return hb_atomic_int_impl_get_relaxed (&v); }
hb_atomic_t<bool>::get_relaxed() const
Line
Count
Source
227
1.05M
  T get_relaxed () const { return hb_atomic_int_impl_get_relaxed (&v); }
228
85.8k
  T get_acquire () const { return hb_atomic_int_impl_get (&v); }
hb_atomic_t<unsigned int>::get_acquire() const
Line
Count
Source
228
42.9k
  T get_acquire () const { return hb_atomic_int_impl_get (&v); }
hb_atomic_t<int>::get_acquire() const
Line
Count
Source
228
42.9k
  T get_acquire () const { return hb_atomic_int_impl_get (&v); }
229
975k
  T inc () { return hb_atomic_int_impl_add (&v,  1); }
hb_atomic_t<int>::inc()
Line
Count
Source
229
806k
  T inc () { return hb_atomic_int_impl_add (&v,  1); }
hb_atomic_t<unsigned int>::inc()
Line
Count
Source
229
168k
  T inc () { return hb_atomic_int_impl_add (&v,  1); }
230
1.48M
  T dec () { return hb_atomic_int_impl_add (&v, -1); }
231
232
168k
  int operator ++ (int) { return inc (); }
233
  int operator -- (int) { return dec (); }
234
235
  T v = 0;
236
};
237
238
template <typename T>
239
struct hb_atomic_t<T*>
240
{
241
3.36M
  hb_atomic_t () = default;
hb_atomic_t<hb_bit_set_t*>::hb_atomic_t()
Line
Count
Source
241
324k
  hb_atomic_t () = default;
hb_atomic_t<hb_user_data_array_t*>::hb_atomic_t()
Line
Count
Source
241
809k
  hb_atomic_t () = default;
hb_atomic_t<hb_ot_face_data_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_fallback_face_data_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_blob_t*>::hb_atomic_t()
Line
Count
Source
241
802k
  hb_atomic_t () = default;
hb_atomic_t<OT::cmap_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::hmtx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::post_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::name_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::meta_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::vmtx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::glyf_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::cff1_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::cff2_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::gvar_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::GVAR_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::VARC_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::kern_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::GDEF_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::GSUB_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::GPOS_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<AAT::morx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<AAT::mort_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<AAT::kerx_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::COLR_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::CBDT_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::sbix_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<OT::SVG_accelerator_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_face_t::plan_node_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_ot_font_data_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_fallback_font_data_t*>::hb_atomic_t()
Line
Count
Source
241
42.2k
  hb_atomic_t () = default;
hb_atomic_t<hb_colr_scratch_t*>::hb_atomic_t()
Line
Count
Source
241
41.7k
  hb_atomic_t () = default;
hb_atomic_t<hb_glyf_scratch_t*>::hb_atomic_t()
Line
Count
Source
241
41.5k
  hb_atomic_t () = default;
hb_atomic_t<OT::hb_varc_scratch_t*>::hb_atomic_t()
Line
Count
Source
241
41.5k
  hb_atomic_t () = default;
hb_atomic_t<hb_vector_t<float, false>*>::hb_atomic_t()
Line
Count
Source
241
41.0k
  hb_atomic_t () = default;
hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::hb_atomic_t()
Line
Count
Source
241
41.5k
  hb_atomic_t () = default;
hb_atomic_t<unsigned short*>::hb_atomic_t()
Line
Count
Source
241
41.5k
  hb_atomic_t () = default;
242
  constexpr hb_atomic_t (T* v) : v (v) {}
243
  hb_atomic_t (const hb_atomic_t &other) = delete;
244
245
978k
  void init (T* v_ = nullptr) { set_relaxed (v_); }
246
3.46M
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_bit_set_t*>::set_relaxed(hb_bit_set_t*)
Line
Count
Source
246
161k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_user_data_array_t*>::set_relaxed(hb_user_data_array_t*)
Line
Count
Source
246
978k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_ot_font_data_t*>::set_relaxed(hb_ot_font_data_t*)
Line
Count
Source
246
211k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_fallback_font_data_t*>::set_relaxed(hb_fallback_font_data_t*)
Line
Count
Source
246
211k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_ot_face_data_t*>::set_relaxed(hb_ot_face_data_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_fallback_face_data_t*>::set_relaxed(hb_fallback_face_data_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<hb_blob_t*>::set_relaxed(hb_blob_t*)
Line
Count
Source
246
802k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::cmap_accelerator_t*>::set_relaxed(OT::cmap_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::hmtx_accelerator_t*>::set_relaxed(OT::hmtx_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::post_accelerator_t*>::set_relaxed(OT::post_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::name_accelerator_t*>::set_relaxed(OT::name_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::meta_accelerator_t*>::set_relaxed(OT::meta_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::vmtx_accelerator_t*>::set_relaxed(OT::vmtx_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::glyf_accelerator_t*>::set_relaxed(OT::glyf_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::cff1_accelerator_t*>::set_relaxed(OT::cff1_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::cff2_accelerator_t*>::set_relaxed(OT::cff2_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::gvar_accelerator_t*>::set_relaxed(OT::gvar_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::GVAR_accelerator_t*>::set_relaxed(OT::GVAR_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::VARC_accelerator_t*>::set_relaxed(OT::VARC_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::kern_accelerator_t*>::set_relaxed(OT::kern_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::GDEF_accelerator_t*>::set_relaxed(OT::GDEF_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::GSUB_accelerator_t*>::set_relaxed(OT::GSUB_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::GPOS_accelerator_t*>::set_relaxed(OT::GPOS_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<AAT::morx_accelerator_t*>::set_relaxed(AAT::morx_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<AAT::mort_accelerator_t*>::set_relaxed(AAT::mort_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<AAT::kerx_accelerator_t*>::set_relaxed(AAT::kerx_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::COLR_accelerator_t*>::set_relaxed(OT::COLR_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::CBDT_accelerator_t*>::set_relaxed(OT::CBDT_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::sbix_accelerator_t*>::set_relaxed(OT::sbix_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
hb_atomic_t<OT::SVG_accelerator_t*>::set_relaxed(OT::SVG_accelerator_t*)
Line
Count
Source
246
42.2k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
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
246
41.5k
  void set_relaxed (T* v_) { hb_atomic_ptr_impl_set_relaxed (&v, v_); }
247
10.9M
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<OT::hb_ot_layout_lookup_accelerator_t*>::get_relaxed() const
Line
Count
Source
247
90.8k
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<hb_bit_set_t*>::get_relaxed() const
Line
Count
Source
247
405k
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<OT::GPOS_accelerator_t*>::get_relaxed() const
Line
Count
Source
247
5.73M
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<OT::GSUB_accelerator_t*>::get_relaxed() const
Line
Count
Source
247
4.54M
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<hb_colr_scratch_t*>::get_relaxed() const
Line
Count
Source
247
41.7k
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<hb_glyf_scratch_t*>::get_relaxed() const
Line
Count
Source
247
41.5k
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::get_relaxed() const
Line
Count
Source
247
41.5k
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
hb_atomic_t<OT::hb_varc_scratch_t*>::get_relaxed() const
Line
Count
Source
247
41.5k
  T *get_relaxed () const { return (T *) hb_atomic_ptr_impl_get_relaxed (&v); }
Unexecuted instantiation: hb_atomic_t<hb_vector_t<CFF::code_pair_t, false>*>::get_relaxed() const
248
44.9M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_bit_set_t*>::get_acquire() const
Line
Count
Source
248
14.4k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::GDEF_accelerator_t*>::get_acquire() const
Line
Count
Source
248
1.04M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::GSUB_accelerator_t*>::get_acquire() const
Line
Count
Source
248
2.34M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<AAT::morx_accelerator_t*>::get_acquire() const
Line
Count
Source
248
120k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<AAT::hb_aat_layout_chain_accelerator_t*>::get_acquire() const
Line
Count
Source
248
31.6k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_blob_t*>::get_acquire() const
Line
Count
Source
248
6.58M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<AAT::mort_accelerator_t*>::get_acquire() const
Line
Count
Source
248
111k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<AAT::kerx_accelerator_t*>::get_acquire() const
Line
Count
Source
248
109k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_user_data_array_t*>::get_acquire() const
Line
Count
Source
248
980k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_ot_font_data_t*>::get_acquire() const
Line
Count
Source
248
456k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_fallback_font_data_t*>::get_acquire() const
Line
Count
Source
248
211k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::hb_ot_layout_lookup_accelerator_t*>::get_acquire() const
Line
Count
Source
248
7.11M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_language_item_t*>::get_acquire() const
Line
Count
Source
248
153k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
Unexecuted instantiation: hb_atomic_t<__locale_struct*>::get_acquire() const
hb_atomic_t<hb_language_impl_t const*>::get_acquire() const
Line
Count
Source
248
83.5k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_colr_scratch_t*>::get_acquire() const
Line
Count
Source
248
9.95k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::hmtx_accelerator_t*>::get_acquire() const
Line
Count
Source
248
340k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::vmtx_accelerator_t*>::get_acquire() const
Line
Count
Source
248
167k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::gvar_accelerator_t*>::get_acquire() const
Line
Count
Source
248
104k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::GVAR_accelerator_t*>::get_acquire() const
Line
Count
Source
248
83.6k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_glyf_scratch_t*>::get_acquire() const
Line
Count
Source
248
154k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_draw_funcs_t*>::get_acquire() const
Line
Count
Source
248
840k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<char const*>::get_acquire() const
Line
Count
Source
248
42.2k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
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
248
164k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_ot_face_data_t*>::get_acquire() const
Line
Count
Source
248
228k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_fallback_face_data_t*>::get_acquire() const
Line
Count
Source
248
42.3k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::cmap_accelerator_t*>::get_acquire() const
Line
Count
Source
248
2.56M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::COLR_accelerator_t*>::get_acquire() const
Line
Count
Source
248
1.85M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::SVG_accelerator_t*>::get_acquire() const
Line
Count
Source
248
663k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::CBDT_accelerator_t*>::get_acquire() const
Line
Count
Source
248
1.85M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::sbix_accelerator_t*>::get_acquire() const
Line
Count
Source
248
1.85M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<unsigned short*>::get_acquire() const
Line
Count
Source
248
41.8k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::post_accelerator_t*>::get_acquire() const
Line
Count
Source
248
126k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::name_accelerator_t*>::get_acquire() const
Line
Count
Source
248
211k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::meta_accelerator_t*>::get_acquire() const
Line
Count
Source
248
126k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::glyf_accelerator_t*>::get_acquire() const
Line
Count
Source
248
2.67M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::cff1_accelerator_t*>::get_acquire() const
Line
Count
Source
248
2.48M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_vector_t<float, false>*>::get_acquire() const
Line
Count
Source
248
82.2k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::cff2_accelerator_t*>::get_acquire() const
Line
Count
Source
248
2.39M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::VARC_accelerator_t*>::get_acquire() const
Line
Count
Source
248
4.06M
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::kern_accelerator_t*>::get_acquire() const
Line
Count
Source
248
112k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::GPOS_accelerator_t*>::get_acquire() const
Line
Count
Source
248
865k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_vector_t<OT::cff1::accelerator_t::gname_t, true>*>::get_acquire() const
Line
Count
Source
248
978
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::hb_varc_scratch_t*>::get_acquire() const
Line
Count
Source
248
5.74k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_font_funcs_t*>::get_acquire() const
Line
Count
Source
248
42.1k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_cache_t<20u, 20u, 8u, true>*>::get_acquire() const
Line
Count
Source
248
87.1k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<OT::hb_scalar_cache_t*>::get_acquire() const
Line
Count
Source
248
198k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_cache_t<24u, 16u, 8u, true>*>::get_acquire() const
Line
Count
Source
248
96.5k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_shaper_entry_t*>::get_acquire() const
Line
Count
Source
248
185k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_paint_funcs_t*>::get_acquire() const
Line
Count
Source
248
547k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<arabic_fallback_plan_t*>::get_acquire() const
Line
Count
Source
248
4.13k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
hb_atomic_t<hb_unicode_funcs_t*>::get_acquire() const
Line
Count
Source
248
198k
  T *get_acquire () const { return (T *) hb_atomic_ptr_impl_get ((void **) &v); }
249
2.29M
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_bit_set_t*>::cmpexch(hb_bit_set_t*, hb_bit_set_t*)
Line
Count
Source
249
23.3k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::GDEF_accelerator_t*>::cmpexch(OT::GDEF_accelerator_t*, OT::GDEF_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::GSUB_accelerator_t*>::cmpexch(OT::GSUB_accelerator_t*, OT::GSUB_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<AAT::morx_accelerator_t*>::cmpexch(AAT::morx_accelerator_t*, AAT::morx_accelerator_t*)
Line
Count
Source
249
42.0k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_blob_t*>::cmpexch(hb_blob_t*, hb_blob_t*)
Line
Count
Source
249
634k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<AAT::mort_accelerator_t*>::cmpexch(AAT::mort_accelerator_t*, AAT::mort_accelerator_t*)
Line
Count
Source
249
40.4k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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*)
Line
Count
Source
249
5.08k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<AAT::kerx_accelerator_t*>::cmpexch(AAT::kerx_accelerator_t*, AAT::kerx_accelerator_t*)
Line
Count
Source
249
42.0k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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
249
51.9k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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
249
181
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
Unexecuted instantiation: hb_atomic_t<__locale_struct*>::cmpexch(__locale_struct*, __locale_struct*)
hb_atomic_t<hb_language_impl_t const*>::cmpexch(hb_language_impl_t const*, hb_language_impl_t const*)
Line
Count
Source
249
1
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_colr_scratch_t*>::cmpexch(hb_colr_scratch_t*, hb_colr_scratch_t*)
Line
Count
Source
249
18.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::hmtx_accelerator_t*>::cmpexch(OT::hmtx_accelerator_t*, OT::hmtx_accelerator_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::vmtx_accelerator_t*>::cmpexch(OT::vmtx_accelerator_t*, OT::vmtx_accelerator_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::gvar_accelerator_t*>::cmpexch(OT::gvar_accelerator_t*, OT::gvar_accelerator_t*)
Line
Count
Source
249
41.4k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::GVAR_accelerator_t*>::cmpexch(OT::GVAR_accelerator_t*, OT::GVAR_accelerator_t*)
Line
Count
Source
249
41.3k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_glyf_scratch_t*>::cmpexch(hb_glyf_scratch_t*, hb_glyf_scratch_t*)
Line
Count
Source
249
304k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_draw_funcs_t*>::cmpexch(hb_draw_funcs_t*, hb_draw_funcs_t*)
Line
Count
Source
249
4
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<char const*>::cmpexch(char const*, char const*)
Line
Count
Source
249
1
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::COLR_accelerator_t*>::cmpexch(OT::COLR_accelerator_t*, OT::COLR_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::SVG_accelerator_t*>::cmpexch(OT::SVG_accelerator_t*, OT::SVG_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::CBDT_accelerator_t*>::cmpexch(OT::CBDT_accelerator_t*, OT::CBDT_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::sbix_accelerator_t*>::cmpexch(OT::sbix_accelerator_t*, OT::sbix_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_vector_t<float, false>*>::cmpexch(hb_vector_t<float, false>*, hb_vector_t<float, false>*)
Line
Count
Source
249
2.79k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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>*)
Line
Count
Source
249
978
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<unsigned short*>::cmpexch(unsigned short*, unsigned short*)
Line
Count
Source
249
351
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::hb_varc_scratch_t*>::cmpexch(OT::hb_varc_scratch_t*, OT::hb_varc_scratch_t*)
Line
Count
Source
249
10.4k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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
249
83.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::hb_scalar_cache_t*>::cmpexch(OT::hb_scalar_cache_t*, OT::hb_scalar_cache_t*)
Line
Count
Source
249
38.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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>*)
Line
Count
Source
249
13.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::glyf_accelerator_t*>::cmpexch(OT::glyf_accelerator_t*, OT::glyf_accelerator_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::VARC_accelerator_t*>::cmpexch(OT::VARC_accelerator_t*, OT::VARC_accelerator_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::cff2_accelerator_t*>::cmpexch(OT::cff2_accelerator_t*, OT::cff2_accelerator_t*)
Line
Count
Source
249
41.4k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::cff1_accelerator_t*>::cmpexch(OT::cff1_accelerator_t*, OT::cff1_accelerator_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::post_accelerator_t*>::cmpexch(OT::post_accelerator_t*, OT::post_accelerator_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_font_funcs_t*>::cmpexch(hb_font_funcs_t*, hb_font_funcs_t*)
Line
Count
Source
249
2
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::GPOS_accelerator_t*>::cmpexch(OT::GPOS_accelerator_t*, OT::GPOS_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::kern_accelerator_t*>::cmpexch(OT::kern_accelerator_t*, OT::kern_accelerator_t*)
Line
Count
Source
249
39.8k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_ot_font_data_t*>::cmpexch(hb_ot_font_data_t*, hb_ot_font_data_t*)
Line
Count
Source
249
42.0k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::meta_accelerator_t*>::cmpexch(OT::meta_accelerator_t*, OT::meta_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<OT::name_accelerator_t*>::cmpexch(OT::name_accelerator_t*, OT::name_accelerator_t*)
Line
Count
Source
249
42.2k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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_ot_face_data_t*>::cmpexch(hb_ot_face_data_t*, hb_ot_face_data_t*)
Line
Count
Source
249
42.1k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
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
249
62.9k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_shaper_entry_t*>::cmpexch(hb_shaper_entry_t*, hb_shaper_entry_t*)
Line
Count
Source
249
1
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_paint_funcs_t*>::cmpexch(hb_paint_funcs_t*, hb_paint_funcs_t*)
Line
Count
Source
249
4
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<arabic_fallback_plan_t*>::cmpexch(arabic_fallback_plan_t*, arabic_fallback_plan_t*)
Line
Count
Source
249
1.51k
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
hb_atomic_t<hb_unicode_funcs_t*>::cmpexch(hb_unicode_funcs_t*, hb_unicode_funcs_t*)
Line
Count
Source
249
2
  bool cmpexch (T *old, T *new_) { return hb_atomic_ptr_impl_cmpexch ((void **) &v, (void *) old, (void *) new_); }
250
251
5.13k
  operator bool () const { return get_acquire () != nullptr; }
252
5.08k
  T * operator -> () const                    { return get_acquire (); }
253
411k
  template <typename C> operator C * () const { return get_acquire (); }
hb_atomic_t<AAT::hb_aat_layout_chain_accelerator_t*>::operator void*<void>() const
Line
Count
Source
253
5.13k
  template <typename C> operator C * () const { return get_acquire (); }
hb_atomic_t<hb_language_item_t*>::operator hb_language_item_t*<hb_language_item_t>() const
Line
Count
Source
253
153k
  template <typename C> operator C * () const { return get_acquire (); }
hb_atomic_t<hb_language_impl_t const*>::operator hb_language_impl_t const*<hb_language_impl_t const>() const
Line
Count
Source
253
83.5k
  template <typename C> operator C * () const { return get_acquire (); }
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
253
164k
  template <typename C> operator C * () const { return get_acquire (); }
hb_atomic_t<arabic_fallback_plan_t*>::operator arabic_fallback_plan_t*<arabic_fallback_plan_t>() const
Line
Count
Source
253
4.13k
  template <typename C> operator C * () const { return get_acquire (); }
254
255
  T *v = nullptr;
256
};
257
258
#endif
259
260
static inline bool hb_barrier ()
261
330M
{
262
330M
  _hb_compiler_memory_r_barrier ();
263
330M
  return true;
264
330M
}
hb-aat-layout.cc:hb_barrier()
Line
Count
Source
261
160M
{
262
160M
  _hb_compiler_memory_r_barrier ();
263
160M
  return true;
264
160M
}
Unexecuted instantiation: hb-aat-map.cc:hb_barrier()
Unexecuted instantiation: hb-blob.cc:hb_barrier()
Unexecuted instantiation: hb-buffer.cc:hb_barrier()
hb-common.cc:hb_barrier()
Line
Count
Source
261
8.61k
{
262
8.61k
  _hb_compiler_memory_r_barrier ();
263
8.61k
  return true;
264
8.61k
}
Unexecuted instantiation: hb-draw.cc:hb_barrier()
hb-face.cc:hb_barrier()
Line
Count
Source
261
2.65M
{
262
2.65M
  _hb_compiler_memory_r_barrier ();
263
2.65M
  return true;
264
2.65M
}
Unexecuted instantiation: hb-face-builder.cc:hb_barrier()
Unexecuted instantiation: hb-fallback-shape.cc:hb_barrier()
hb-font.cc:hb_barrier()
Line
Count
Source
261
6.01k
{
262
6.01k
  _hb_compiler_memory_r_barrier ();
263
6.01k
  return true;
264
6.01k
}
Unexecuted instantiation: hb-map.cc:hb_barrier()
Unexecuted instantiation: hb-number.cc:hb_barrier()
hb-ot-color.cc:hb_barrier()
Line
Count
Source
261
1.65M
{
262
1.65M
  _hb_compiler_memory_r_barrier ();
263
1.65M
  return true;
264
1.65M
}
Unexecuted instantiation: hb-ot-face.cc:hb_barrier()
hb-ot-font.cc:hb_barrier()
Line
Count
Source
261
6.01M
{
262
6.01M
  _hb_compiler_memory_r_barrier ();
263
6.01M
  return true;
264
6.01M
}
Unexecuted instantiation: hb-outline.cc:hb_barrier()
VARC.cc:hb_barrier()
Line
Count
Source
261
6.05M
{
262
6.05M
  _hb_compiler_memory_r_barrier ();
263
6.05M
  return true;
264
6.05M
}
hb-ot-layout.cc:hb_barrier()
Line
Count
Source
261
144M
{
262
144M
  _hb_compiler_memory_r_barrier ();
263
144M
  return true;
264
144M
}
hb-ot-math.cc:hb_barrier()
Line
Count
Source
261
6.10M
{
262
6.10M
  _hb_compiler_memory_r_barrier ();
263
6.10M
  return true;
264
6.10M
}
hb-ot-meta.cc:hb_barrier()
Line
Count
Source
261
212
{
262
212
  _hb_compiler_memory_r_barrier ();
263
212
  return true;
264
212
}
hb-ot-metrics.cc:hb_barrier()
Line
Count
Source
261
2.37k
{
262
2.37k
  _hb_compiler_memory_r_barrier ();
263
2.37k
  return true;
264
2.37k
}
hb-ot-name.cc:hb_barrier()
Line
Count
Source
261
2.44M
{
262
2.44M
  _hb_compiler_memory_r_barrier ();
263
2.44M
  return true;
264
2.44M
}
hb-ot-shape.cc:hb_barrier()
Line
Count
Source
261
121k
{
262
121k
  _hb_compiler_memory_r_barrier ();
263
121k
  return true;
264
121k
}
Unexecuted instantiation: hb-ot-tag.cc:hb_barrier()
hb-ot-var.cc:hb_barrier()
Line
Count
Source
261
5.02k
{
262
5.02k
  _hb_compiler_memory_r_barrier ();
263
5.02k
  return true;
264
5.02k
}
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-unicode.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()
hb-ot-cff1-table.cc:hb_barrier()
Line
Count
Source
261
476
{
262
476
  _hb_compiler_memory_r_barrier ();
263
476
  return true;
264
476
}
hb-ot-cff2-table.cc:hb_barrier()
Line
Count
Source
261
342
{
262
342
  _hb_compiler_memory_r_barrier ();
263
342
  return true;
264
342
}
Unexecuted instantiation: hb-ot-map.cc:hb_barrier()
hb-ot-shaper-arabic.cc:hb_barrier()
Line
Count
Source
261
33.2k
{
262
33.2k
  _hb_compiler_memory_r_barrier ();
263
33.2k
  return true;
264
33.2k
}
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()
265
266
267
#endif /* HB_ATOMIC_HH */