passenger 6.1.0 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (440) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +32 -2
  3. data/Rakefile +6 -13
  4. data/bin/passenger-install-apache2-module +15 -19
  5. data/bin/passenger-install-nginx-module +42 -44
  6. data/bin/passenger-status +9 -10
  7. data/build/common_library.rb +4 -4
  8. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
  9. data/build/test_basics.rb +4 -3
  10. data/dev/copy_boost_headers +54 -40
  11. data/dev/ruby_server.rb +1 -1
  12. data/src/agent/Core/Config.h +1 -1
  13. data/src/agent/Core/Controller/Config.h +1 -1
  14. data/src/agent/Watchdog/Config.h +1 -1
  15. data/src/cxx_supportlib/Constants.h +1 -1
  16. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
  17. data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
  18. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
  19. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
  20. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
  21. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
  22. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
  23. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
  24. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
  25. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
  26. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
  27. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
  28. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
  29. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
  30. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
  31. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
  32. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
  33. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
  34. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
  35. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
  36. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
  37. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
  38. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
  39. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
  40. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
  41. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
  42. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
  43. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
  44. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
  45. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
  46. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
  47. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
  48. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
  49. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
  50. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
  51. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
  52. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
  53. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
  54. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
  55. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
  56. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
  57. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
  58. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
  59. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
  60. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
  62. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
  63. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
  66. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
  67. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
  68. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
  69. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
  70. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
  71. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
  72. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
  73. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
  75. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
  76. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
  77. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
  78. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
  79. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
  80. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
  81. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
  82. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
  83. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
  84. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
  85. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
  86. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
  87. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
  88. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
  90. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
  92. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
  93. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
  94. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
  95. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
  96. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
  97. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
  98. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
  99. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
  100. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
  101. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
  102. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
  103. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
  104. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
  105. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
  106. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
  107. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
  108. data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
  109. data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
  110. data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
  112. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
  113. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
  114. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
  115. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
  116. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
  119. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
  120. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
  121. data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
  122. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
  123. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
  129. data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
  130. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
  131. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
  132. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
  134. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
  135. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
  137. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
  139. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
  140. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
  141. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
  142. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
  144. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
  145. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
  147. data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
  148. data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
  149. data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
  151. data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
  153. data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
  154. data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
  155. data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
  156. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
  157. data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
  160. data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
  161. data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
  164. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
  165. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
  166. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
  167. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
  168. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
  169. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
  170. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
  171. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
  172. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
  173. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
  174. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
  175. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
  176. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
  177. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
  178. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
  179. data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
  180. data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
  181. data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
  182. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
  183. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
  184. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
  185. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
  186. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
  187. data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
  188. data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
  189. data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
  190. data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
  191. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
  194. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
  195. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
  196. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  197. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
  198. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
  199. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  200. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
  201. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
  202. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
  203. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
  204. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  205. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
  206. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
  207. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
  208. data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
  211. data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
  212. data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
  213. data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
  216. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
  217. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
  219. data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
  220. data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
  221. data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
  223. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
  224. data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
  225. data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
  226. data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
  227. data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
  229. data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
  231. data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
  232. data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
  233. data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
  234. data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
  235. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
  236. data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
  237. data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
  239. data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
  240. data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
  241. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
  242. data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
  243. data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
  244. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
  249. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
  250. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
  251. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
  252. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
  253. data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
  254. data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
  255. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
  256. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
  257. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
  259. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
  261. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
  262. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
  263. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
  264. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
  267. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
  268. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
  270. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
  271. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
  272. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
  273. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
  274. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
  275. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
  276. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
  277. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
  298. data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
  299. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
  313. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
  314. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
  315. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
  316. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
  317. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
  319. data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
  320. data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
  321. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
  324. data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
  325. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  326. data/src/nginx_module/ContentHandler.c +2 -0
  327. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
  328. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
  329. data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
  330. data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
  331. data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
  332. data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
  333. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
  334. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
  335. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
  336. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
  337. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
  338. data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
  339. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
  340. data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
  341. data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
  342. data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
  343. data/src/ruby_supportlib/phusion_passenger.rb +8 -8
  344. metadata +26 -99
  345. data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
  346. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
  347. data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
  348. data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
  349. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
  350. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
  351. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
  352. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
  353. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
  354. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
  355. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
  356. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
  357. data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
  358. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
  359. data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
  360. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
  361. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
  362. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
  363. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
  364. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
  365. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
  366. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
  367. data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
  368. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
  369. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
  370. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
  371. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
  372. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
  373. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
  374. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
  375. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
  376. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
  377. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
  378. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
  379. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
  380. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
  381. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
  382. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
  383. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
  384. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
  385. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
  386. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
  387. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
  388. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
  389. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
  390. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
  391. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
  392. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
  393. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
  394. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
  395. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
  396. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
  397. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
  398. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
  399. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
  400. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
  401. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
  402. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
  403. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
  404. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
  405. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
  406. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
  407. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
  408. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
  409. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
  410. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
  411. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
  412. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
  413. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
  414. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
  415. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
  416. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
  417. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
  418. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
  419. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
  420. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
  421. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
  422. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
  423. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
  424. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
  425. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
  426. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
  427. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
  428. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
  429. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
  430. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
  431. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
  432. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
  433. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
  434. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
  435. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
  436. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
  437. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
  438. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
  439. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
  440. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
@@ -3,7 +3,7 @@
3
3
  * (See accompanying file LICENSE_1_0.txt or copy at
4
4
  * http://www.boost.org/LICENSE_1_0.txt)
5
5
  *
6
- * Copyright (c) 2020 Andrey Semashev
6
+ * Copyright (c) 2020-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/core_arch_ops_gcc_aarch64.hpp
@@ -15,7 +15,7 @@
15
15
  #define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_
16
16
 
17
17
  #include <cstddef>
18
- #include <boost/cstdint.hpp>
18
+ #include <cstdint>
19
19
  #include <boost/memory_order.hpp>
20
20
  #include <boost/atomic/detail/config.hpp>
21
21
  #include <boost/atomic/detail/storage_traits.hpp>
@@ -34,8 +34,8 @@ namespace detail {
34
34
 
35
35
  struct core_arch_operations_gcc_aarch64_base
36
36
  {
37
- static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false;
38
- static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
37
+ static constexpr bool full_cas_based = false;
38
+ static constexpr bool is_always_lock_free = true;
39
39
  };
40
40
 
41
41
  // Due to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63359 we have to explicitly specify size of the registers
@@ -49,15 +49,16 @@ template< bool Signed, bool Interprocess >
49
49
  struct core_arch_operations< 1u, Signed, Interprocess > :
50
50
  public core_arch_operations_gcc_aarch64_base
51
51
  {
52
- typedef typename storage_traits< 1u >::type storage_type;
52
+ using storage_type = typename storage_traits< 1u >::type;
53
53
 
54
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u;
55
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u;
56
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
57
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
54
+ static constexpr std::size_t storage_size = 1u;
55
+ static constexpr std::size_t storage_alignment = 1u;
56
+ static constexpr bool is_signed = Signed;
57
+ static constexpr bool is_interprocess = Interprocess;
58
58
 
59
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
59
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
60
60
  {
61
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
61
62
  if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
62
63
  {
63
64
  __asm__ __volatile__
@@ -74,7 +75,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
74
75
  }
75
76
  }
76
77
 
77
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
78
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
78
79
  {
79
80
  storage_type v;
80
81
  if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
@@ -106,12 +107,14 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
106
107
  {
107
108
  v = storage;
108
109
  }
110
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
109
111
 
110
112
  return v;
111
113
  }
112
114
 
113
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
115
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
114
116
  {
117
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
115
118
  storage_type original;
116
119
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
117
120
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -123,7 +126,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
123
126
  : "memory"\
124
127
  );
125
128
  #else
126
- uint32_t tmp;
129
+ std::uint32_t tmp;
127
130
 
128
131
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
129
132
  __asm__ __volatile__\
@@ -140,13 +143,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
140
143
 
141
144
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
142
145
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
146
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
143
147
 
144
148
  return original;
145
149
  }
146
150
 
147
151
  static BOOST_FORCEINLINE bool compare_exchange_weak(
148
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
152
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
149
153
  {
154
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
150
155
  storage_type original;
151
156
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
152
157
  original = expected;
@@ -186,12 +191,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
186
191
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
187
192
 
188
193
  expected = original;
194
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
195
+
189
196
  return success;
190
197
  }
191
198
 
192
199
  static BOOST_FORCEINLINE bool compare_exchange_strong(
193
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
200
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
194
201
  {
202
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
195
203
  storage_type original;
196
204
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
197
205
  original = expected;
@@ -232,11 +240,14 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
232
240
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
233
241
 
234
242
  expected = original;
243
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
244
+
235
245
  return success;
236
246
  }
237
247
 
238
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
248
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
239
249
  {
250
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
240
251
  storage_type original;
241
252
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
242
253
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -249,7 +260,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
249
260
  );
250
261
  #else
251
262
  storage_type result;
252
- uint32_t tmp;
263
+ std::uint32_t tmp;
253
264
 
254
265
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
255
266
  __asm__ __volatile__\
@@ -267,12 +278,14 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
267
278
 
268
279
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
269
280
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
281
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
270
282
 
271
283
  return original;
272
284
  }
273
285
 
274
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
286
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
275
287
  {
288
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
276
289
  storage_type original;
277
290
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
278
291
  v = -v;
@@ -288,7 +301,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
288
301
 
289
302
  #else
290
303
  storage_type result;
291
- uint32_t tmp;
304
+ std::uint32_t tmp;
292
305
 
293
306
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
294
307
  __asm__ __volatile__\
@@ -306,12 +319,14 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
306
319
 
307
320
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
308
321
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
322
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
309
323
 
310
324
  return original;
311
325
  }
312
326
 
313
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
327
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
314
328
  {
329
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
315
330
  storage_type original;
316
331
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
317
332
  v = ~v;
@@ -326,7 +341,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
326
341
  );
327
342
  #else
328
343
  storage_type result;
329
- uint32_t tmp;
344
+ std::uint32_t tmp;
330
345
 
331
346
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
332
347
  __asm__ __volatile__\
@@ -344,12 +359,14 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
344
359
 
345
360
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
346
361
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
362
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
347
363
 
348
364
  return original;
349
365
  }
350
366
 
351
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
367
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
352
368
  {
369
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
353
370
  storage_type original;
354
371
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
355
372
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -362,7 +379,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
362
379
  );
363
380
  #else
364
381
  storage_type result;
365
- uint32_t tmp;
382
+ std::uint32_t tmp;
366
383
 
367
384
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
368
385
  __asm__ __volatile__\
@@ -380,12 +397,14 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
380
397
 
381
398
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
382
399
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
400
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
383
401
 
384
402
  return original;
385
403
  }
386
404
 
387
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
405
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
388
406
  {
407
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
389
408
  storage_type original;
390
409
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
391
410
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -398,7 +417,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
398
417
  );
399
418
  #else
400
419
  storage_type result;
401
- uint32_t tmp;
420
+ std::uint32_t tmp;
402
421
 
403
422
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
404
423
  __asm__ __volatile__\
@@ -416,16 +435,17 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
416
435
 
417
436
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
418
437
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
438
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
419
439
 
420
440
  return original;
421
441
  }
422
442
 
423
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
443
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
424
444
  {
425
445
  return !!exchange(storage, (storage_type)1, order);
426
446
  }
427
447
 
428
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
448
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
429
449
  {
430
450
  store(storage, (storage_type)0, order);
431
451
  }
@@ -435,15 +455,16 @@ template< bool Signed, bool Interprocess >
435
455
  struct core_arch_operations< 2u, Signed, Interprocess > :
436
456
  public core_arch_operations_gcc_aarch64_base
437
457
  {
438
- typedef typename storage_traits< 2u >::type storage_type;
458
+ using storage_type = typename storage_traits< 2u >::type;
439
459
 
440
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u;
441
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u;
442
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
443
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
460
+ static constexpr std::size_t storage_size = 2u;
461
+ static constexpr std::size_t storage_alignment = 2u;
462
+ static constexpr bool is_signed = Signed;
463
+ static constexpr bool is_interprocess = Interprocess;
444
464
 
445
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
465
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
446
466
  {
467
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
447
468
  if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
448
469
  {
449
470
  __asm__ __volatile__
@@ -460,7 +481,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
460
481
  }
461
482
  }
462
483
 
463
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
484
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
464
485
  {
465
486
  storage_type v;
466
487
  if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
@@ -492,12 +513,14 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
492
513
  {
493
514
  v = storage;
494
515
  }
516
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
495
517
 
496
518
  return v;
497
519
  }
498
520
 
499
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
521
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
500
522
  {
523
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
501
524
  storage_type original;
502
525
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
503
526
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -509,7 +532,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
509
532
  : "memory"\
510
533
  );
511
534
  #else
512
- uint32_t tmp;
535
+ std::uint32_t tmp;
513
536
 
514
537
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
515
538
  __asm__ __volatile__\
@@ -526,13 +549,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
526
549
 
527
550
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
528
551
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
552
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
529
553
 
530
554
  return original;
531
555
  }
532
556
 
533
557
  static BOOST_FORCEINLINE bool compare_exchange_weak(
534
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
558
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
535
559
  {
560
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
536
561
  storage_type original;
537
562
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
538
563
  original = expected;
@@ -572,12 +597,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
572
597
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
573
598
 
574
599
  expected = original;
600
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
601
+
575
602
  return success;
576
603
  }
577
604
 
578
605
  static BOOST_FORCEINLINE bool compare_exchange_strong(
579
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
606
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
580
607
  {
608
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
581
609
  storage_type original;
582
610
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
583
611
  original = expected;
@@ -618,11 +646,14 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
618
646
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
619
647
 
620
648
  expected = original;
649
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
650
+
621
651
  return success;
622
652
  }
623
653
 
624
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
654
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
625
655
  {
656
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
626
657
  storage_type original;
627
658
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
628
659
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -635,7 +666,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
635
666
  );
636
667
  #else
637
668
  storage_type result;
638
- uint32_t tmp;
669
+ std::uint32_t tmp;
639
670
 
640
671
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
641
672
  __asm__ __volatile__\
@@ -653,12 +684,14 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
653
684
 
654
685
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
655
686
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
687
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
656
688
 
657
689
  return original;
658
690
  }
659
691
 
660
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
692
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
661
693
  {
694
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
662
695
  storage_type original;
663
696
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
664
697
  v = -v;
@@ -674,7 +707,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
674
707
 
675
708
  #else
676
709
  storage_type result;
677
- uint32_t tmp;
710
+ std::uint32_t tmp;
678
711
 
679
712
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
680
713
  __asm__ __volatile__\
@@ -692,12 +725,14 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
692
725
 
693
726
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
694
727
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
728
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
695
729
 
696
730
  return original;
697
731
  }
698
732
 
699
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
733
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
700
734
  {
735
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
701
736
  storage_type original;
702
737
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
703
738
  v = ~v;
@@ -712,7 +747,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
712
747
  );
713
748
  #else
714
749
  storage_type result;
715
- uint32_t tmp;
750
+ std::uint32_t tmp;
716
751
 
717
752
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
718
753
  __asm__ __volatile__\
@@ -730,12 +765,14 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
730
765
 
731
766
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
732
767
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
768
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
733
769
 
734
770
  return original;
735
771
  }
736
772
 
737
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
773
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
738
774
  {
775
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
739
776
  storage_type original;
740
777
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
741
778
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -748,7 +785,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
748
785
  );
749
786
  #else
750
787
  storage_type result;
751
- uint32_t tmp;
788
+ std::uint32_t tmp;
752
789
 
753
790
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
754
791
  __asm__ __volatile__\
@@ -766,12 +803,14 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
766
803
 
767
804
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
768
805
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
806
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
769
807
 
770
808
  return original;
771
809
  }
772
810
 
773
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
811
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
774
812
  {
813
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
775
814
  storage_type original;
776
815
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
777
816
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -784,7 +823,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
784
823
  );
785
824
  #else
786
825
  storage_type result;
787
- uint32_t tmp;
826
+ std::uint32_t tmp;
788
827
 
789
828
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
790
829
  __asm__ __volatile__\
@@ -802,16 +841,17 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
802
841
 
803
842
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
804
843
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
844
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
805
845
 
806
846
  return original;
807
847
  }
808
848
 
809
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
849
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
810
850
  {
811
851
  return !!exchange(storage, (storage_type)1, order);
812
852
  }
813
853
 
814
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
854
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
815
855
  {
816
856
  store(storage, (storage_type)0, order);
817
857
  }
@@ -821,15 +861,16 @@ template< bool Signed, bool Interprocess >
821
861
  struct core_arch_operations< 4u, Signed, Interprocess > :
822
862
  public core_arch_operations_gcc_aarch64_base
823
863
  {
824
- typedef typename storage_traits< 4u >::type storage_type;
864
+ using storage_type = typename storage_traits< 4u >::type;
825
865
 
826
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
827
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u;
828
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
829
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
866
+ static constexpr std::size_t storage_size = 4u;
867
+ static constexpr std::size_t storage_alignment = 4u;
868
+ static constexpr bool is_signed = Signed;
869
+ static constexpr bool is_interprocess = Interprocess;
830
870
 
831
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
871
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
832
872
  {
873
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
833
874
  if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
834
875
  {
835
876
  __asm__ __volatile__
@@ -846,7 +887,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
846
887
  }
847
888
  }
848
889
 
849
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
890
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
850
891
  {
851
892
  storage_type v;
852
893
  if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
@@ -878,12 +919,14 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
878
919
  {
879
920
  v = storage;
880
921
  }
922
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
881
923
 
882
924
  return v;
883
925
  }
884
926
 
885
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
927
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
886
928
  {
929
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
887
930
  storage_type original;
888
931
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
889
932
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -895,7 +938,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
895
938
  : "memory"\
896
939
  );
897
940
  #else
898
- uint32_t tmp;
941
+ std::uint32_t tmp;
899
942
 
900
943
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
901
944
  __asm__ __volatile__\
@@ -912,13 +955,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
912
955
 
913
956
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
914
957
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
958
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
915
959
 
916
960
  return original;
917
961
  }
918
962
 
919
963
  static BOOST_FORCEINLINE bool compare_exchange_weak(
920
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
964
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
921
965
  {
966
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
922
967
  storage_type original;
923
968
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
924
969
  original = expected;
@@ -957,12 +1002,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
957
1002
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
958
1003
 
959
1004
  expected = original;
1005
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
1006
+
960
1007
  return success;
961
1008
  }
962
1009
 
963
1010
  static BOOST_FORCEINLINE bool compare_exchange_strong(
964
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1011
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
965
1012
  {
1013
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
966
1014
  storage_type original;
967
1015
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
968
1016
  original = expected;
@@ -1002,11 +1050,14 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1002
1050
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1003
1051
 
1004
1052
  expected = original;
1053
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
1054
+
1005
1055
  return success;
1006
1056
  }
1007
1057
 
1008
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1058
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1009
1059
  {
1060
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1010
1061
  storage_type original;
1011
1062
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1012
1063
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1019,7 +1070,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1019
1070
  );
1020
1071
  #else
1021
1072
  storage_type result;
1022
- uint32_t tmp;
1073
+ std::uint32_t tmp;
1023
1074
 
1024
1075
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1025
1076
  __asm__ __volatile__\
@@ -1037,12 +1088,14 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1037
1088
 
1038
1089
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1039
1090
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1091
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1040
1092
 
1041
1093
  return original;
1042
1094
  }
1043
1095
 
1044
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1096
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1045
1097
  {
1098
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1046
1099
  storage_type original;
1047
1100
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1048
1101
  v = -v;
@@ -1058,7 +1111,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1058
1111
 
1059
1112
  #else
1060
1113
  storage_type result;
1061
- uint32_t tmp;
1114
+ std::uint32_t tmp;
1062
1115
 
1063
1116
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1064
1117
  __asm__ __volatile__\
@@ -1076,12 +1129,14 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1076
1129
 
1077
1130
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1078
1131
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1132
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1079
1133
 
1080
1134
  return original;
1081
1135
  }
1082
1136
 
1083
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1137
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1084
1138
  {
1139
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1085
1140
  storage_type original;
1086
1141
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1087
1142
  v = ~v;
@@ -1096,7 +1151,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1096
1151
  );
1097
1152
  #else
1098
1153
  storage_type result;
1099
- uint32_t tmp;
1154
+ std::uint32_t tmp;
1100
1155
 
1101
1156
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1102
1157
  __asm__ __volatile__\
@@ -1114,12 +1169,14 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1114
1169
 
1115
1170
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1116
1171
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1172
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1117
1173
 
1118
1174
  return original;
1119
1175
  }
1120
1176
 
1121
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1177
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1122
1178
  {
1179
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1123
1180
  storage_type original;
1124
1181
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1125
1182
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1132,7 +1189,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1132
1189
  );
1133
1190
  #else
1134
1191
  storage_type result;
1135
- uint32_t tmp;
1192
+ std::uint32_t tmp;
1136
1193
 
1137
1194
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1138
1195
  __asm__ __volatile__\
@@ -1150,12 +1207,14 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1150
1207
 
1151
1208
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1152
1209
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1210
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1153
1211
 
1154
1212
  return original;
1155
1213
  }
1156
1214
 
1157
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1215
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1158
1216
  {
1217
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1159
1218
  storage_type original;
1160
1219
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1161
1220
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1168,7 +1227,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1168
1227
  );
1169
1228
  #else
1170
1229
  storage_type result;
1171
- uint32_t tmp;
1230
+ std::uint32_t tmp;
1172
1231
 
1173
1232
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1174
1233
  __asm__ __volatile__\
@@ -1186,16 +1245,17 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
1186
1245
 
1187
1246
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1188
1247
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1248
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1189
1249
 
1190
1250
  return original;
1191
1251
  }
1192
1252
 
1193
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1253
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
1194
1254
  {
1195
1255
  return !!exchange(storage, (storage_type)1, order);
1196
1256
  }
1197
1257
 
1198
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1258
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
1199
1259
  {
1200
1260
  store(storage, (storage_type)0, order);
1201
1261
  }
@@ -1205,15 +1265,16 @@ template< bool Signed, bool Interprocess >
1205
1265
  struct core_arch_operations< 8u, Signed, Interprocess > :
1206
1266
  public core_arch_operations_gcc_aarch64_base
1207
1267
  {
1208
- typedef typename storage_traits< 8u >::type storage_type;
1268
+ using storage_type = typename storage_traits< 8u >::type;
1209
1269
 
1210
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
1211
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u;
1212
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
1213
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
1270
+ static constexpr std::size_t storage_size = 8u;
1271
+ static constexpr std::size_t storage_alignment = 8u;
1272
+ static constexpr bool is_signed = Signed;
1273
+ static constexpr bool is_interprocess = Interprocess;
1214
1274
 
1215
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1275
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1216
1276
  {
1277
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1217
1278
  if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
1218
1279
  {
1219
1280
  __asm__ __volatile__
@@ -1230,7 +1291,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1230
1291
  }
1231
1292
  }
1232
1293
 
1233
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
1294
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
1234
1295
  {
1235
1296
  storage_type v;
1236
1297
  if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
@@ -1262,12 +1323,14 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1262
1323
  {
1263
1324
  v = storage;
1264
1325
  }
1326
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1265
1327
 
1266
1328
  return v;
1267
1329
  }
1268
1330
 
1269
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1331
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1270
1332
  {
1333
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1271
1334
  storage_type original;
1272
1335
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1273
1336
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1279,7 +1342,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1279
1342
  : "memory"\
1280
1343
  );
1281
1344
  #else
1282
- uint32_t tmp;
1345
+ std::uint32_t tmp;
1283
1346
 
1284
1347
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1285
1348
  __asm__ __volatile__\
@@ -1296,13 +1359,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1296
1359
 
1297
1360
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1298
1361
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1362
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1299
1363
 
1300
1364
  return original;
1301
1365
  }
1302
1366
 
1303
1367
  static BOOST_FORCEINLINE bool compare_exchange_weak(
1304
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1368
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
1305
1369
  {
1370
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
1306
1371
  storage_type original;
1307
1372
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1308
1373
  original = expected;
@@ -1341,12 +1406,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1341
1406
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1342
1407
 
1343
1408
  expected = original;
1409
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
1410
+
1344
1411
  return success;
1345
1412
  }
1346
1413
 
1347
1414
  static BOOST_FORCEINLINE bool compare_exchange_strong(
1348
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1415
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
1349
1416
  {
1417
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
1350
1418
  storage_type original;
1351
1419
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1352
1420
  original = expected;
@@ -1386,11 +1454,14 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1386
1454
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1387
1455
 
1388
1456
  expected = original;
1457
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
1458
+
1389
1459
  return success;
1390
1460
  }
1391
1461
 
1392
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1462
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1393
1463
  {
1464
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1394
1465
  storage_type original;
1395
1466
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1396
1467
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1403,7 +1474,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1403
1474
  );
1404
1475
  #else
1405
1476
  storage_type result;
1406
- uint32_t tmp;
1477
+ std::uint32_t tmp;
1407
1478
 
1408
1479
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1409
1480
  __asm__ __volatile__\
@@ -1421,12 +1492,14 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1421
1492
 
1422
1493
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1423
1494
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1495
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1424
1496
 
1425
1497
  return original;
1426
1498
  }
1427
1499
 
1428
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1500
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1429
1501
  {
1502
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1430
1503
  storage_type original;
1431
1504
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1432
1505
  v = -v;
@@ -1442,7 +1515,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1442
1515
 
1443
1516
  #else
1444
1517
  storage_type result;
1445
- uint32_t tmp;
1518
+ std::uint32_t tmp;
1446
1519
 
1447
1520
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1448
1521
  __asm__ __volatile__\
@@ -1460,12 +1533,14 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1460
1533
 
1461
1534
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1462
1535
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1536
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1463
1537
 
1464
1538
  return original;
1465
1539
  }
1466
1540
 
1467
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1541
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1468
1542
  {
1543
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1469
1544
  storage_type original;
1470
1545
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1471
1546
  v = ~v;
@@ -1480,7 +1555,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1480
1555
  );
1481
1556
  #else
1482
1557
  storage_type result;
1483
- uint32_t tmp;
1558
+ std::uint32_t tmp;
1484
1559
 
1485
1560
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1486
1561
  __asm__ __volatile__\
@@ -1498,12 +1573,14 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1498
1573
 
1499
1574
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1500
1575
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1576
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1501
1577
 
1502
1578
  return original;
1503
1579
  }
1504
1580
 
1505
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1581
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1506
1582
  {
1583
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1507
1584
  storage_type original;
1508
1585
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1509
1586
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1516,7 +1593,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1516
1593
  );
1517
1594
  #else
1518
1595
  storage_type result;
1519
- uint32_t tmp;
1596
+ std::uint32_t tmp;
1520
1597
 
1521
1598
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1522
1599
  __asm__ __volatile__\
@@ -1534,12 +1611,14 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1534
1611
 
1535
1612
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1536
1613
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1614
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1537
1615
 
1538
1616
  return original;
1539
1617
  }
1540
1618
 
1541
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1619
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1542
1620
  {
1621
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1543
1622
  storage_type original;
1544
1623
  #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1545
1624
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
@@ -1552,7 +1631,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1552
1631
  );
1553
1632
  #else
1554
1633
  storage_type result;
1555
- uint32_t tmp;
1634
+ std::uint32_t tmp;
1556
1635
 
1557
1636
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1558
1637
  __asm__ __volatile__\
@@ -1570,16 +1649,17 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1570
1649
 
1571
1650
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1572
1651
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1652
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1573
1653
 
1574
1654
  return original;
1575
1655
  }
1576
1656
 
1577
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1657
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
1578
1658
  {
1579
1659
  return !!exchange(storage, (storage_type)1, order);
1580
1660
  }
1581
1661
 
1582
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1662
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
1583
1663
  {
1584
1664
  store(storage, (storage_type)0, order);
1585
1665
  }
@@ -1604,29 +1684,59 @@ template< bool Signed, bool Interprocess >
1604
1684
  struct core_arch_operations< 16u, Signed, Interprocess > :
1605
1685
  public core_arch_operations_gcc_aarch64_base
1606
1686
  {
1607
- typedef typename storage_traits< 16u >::type storage_type;
1687
+ using storage_type = typename storage_traits< 16u >::type;
1608
1688
 
1609
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 16u;
1610
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 16u;
1611
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
1612
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
1689
+ static constexpr std::size_t storage_size = 16u;
1690
+ static constexpr std::size_t storage_alignment = 16u;
1691
+ static constexpr bool is_signed = Signed;
1692
+ static constexpr bool is_interprocess = Interprocess;
1613
1693
 
1614
1694
  // Union to convert between two 64-bit registers and a 128-bit storage
1615
1695
  union storage_union
1616
1696
  {
1617
1697
  storage_type as_storage;
1618
- uint64_t as_uint64[2u];
1698
+ std::uint64_t as_uint64[2u];
1619
1699
  };
1620
1700
 
1621
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1701
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1622
1702
  {
1623
- exchange(storage, v, order);
1703
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1704
+ storage_union original;
1705
+ storage_union value = { v };
1706
+ std::uint32_t tmp;
1707
+
1708
+ if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
1709
+ {
1710
+ __asm__ __volatile__
1711
+ (
1712
+ "1:\n\t"
1713
+ "ldxp %x[original_0], %x[original_1], %[storage]\n\t"
1714
+ "stlxp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t"
1715
+ "cbnz %w[tmp], 1b\n\t"
1716
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])
1717
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])
1718
+ : "memory"
1719
+ );
1720
+ }
1721
+ else
1722
+ {
1723
+ __asm__ __volatile__
1724
+ (
1725
+ "1:\n\t"
1726
+ "ldxp %x[original_0], %x[original_1], %[storage]\n\t"
1727
+ "stxp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t"
1728
+ "cbnz %w[tmp], 1b\n\t"
1729
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])
1730
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])
1731
+ : "memory"
1732
+ );
1733
+ }
1624
1734
  }
1625
1735
 
1626
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
1736
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
1627
1737
  {
1628
1738
  storage_union v;
1629
- uint32_t tmp;
1739
+ std::uint32_t tmp;
1630
1740
  if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
1631
1741
  {
1632
1742
  __asm__ __volatile__
@@ -1653,15 +1763,17 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1653
1763
  : "memory"
1654
1764
  );
1655
1765
  }
1766
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1656
1767
 
1657
1768
  return v.as_storage;
1658
1769
  }
1659
1770
 
1660
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1771
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1661
1772
  {
1773
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1662
1774
  storage_union original;
1663
1775
  storage_union value = { v };
1664
- uint32_t tmp;
1776
+ std::uint32_t tmp;
1665
1777
 
1666
1778
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1667
1779
  __asm__ __volatile__\
@@ -1677,13 +1789,15 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1677
1789
 
1678
1790
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1679
1791
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1792
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1680
1793
 
1681
1794
  return original.as_storage;
1682
1795
  }
1683
1796
 
1684
1797
  static BOOST_FORCEINLINE bool compare_exchange_weak(
1685
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1798
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
1686
1799
  {
1800
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
1687
1801
  storage_union original;
1688
1802
  storage_union e = { expected };
1689
1803
  storage_union d = { desired };
@@ -1709,12 +1823,15 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1709
1823
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1710
1824
 
1711
1825
  expected = original.as_storage;
1826
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
1827
+
1712
1828
  return success;
1713
1829
  }
1714
1830
 
1715
1831
  static BOOST_FORCEINLINE bool compare_exchange_strong(
1716
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1832
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
1717
1833
  {
1834
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
1718
1835
  storage_union original;
1719
1836
  storage_union e = { expected };
1720
1837
  storage_union d = { desired };
@@ -1741,15 +1858,18 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1741
1858
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1742
1859
 
1743
1860
  expected = original.as_storage;
1861
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
1862
+
1744
1863
  return success;
1745
1864
  }
1746
1865
 
1747
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1866
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1748
1867
  {
1868
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1749
1869
  storage_union original;
1750
1870
  storage_union value = { v };
1751
1871
  storage_union result;
1752
- uint32_t tmp;
1872
+ std::uint32_t tmp;
1753
1873
 
1754
1874
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1755
1875
  __asm__ __volatile__\
@@ -1769,16 +1889,18 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1769
1889
 
1770
1890
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1771
1891
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1892
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1772
1893
 
1773
1894
  return original.as_storage;
1774
1895
  }
1775
1896
 
1776
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1897
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1777
1898
  {
1899
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1778
1900
  storage_union original;
1779
1901
  storage_union value = { v };
1780
1902
  storage_union result;
1781
- uint32_t tmp;
1903
+ std::uint32_t tmp;
1782
1904
 
1783
1905
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1784
1906
  __asm__ __volatile__\
@@ -1798,16 +1920,18 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1798
1920
 
1799
1921
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1800
1922
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1923
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1801
1924
 
1802
1925
  return original.as_storage;
1803
1926
  }
1804
1927
 
1805
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1928
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1806
1929
  {
1930
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1807
1931
  storage_union original;
1808
1932
  storage_union value = { v };
1809
1933
  storage_union result;
1810
- uint32_t tmp;
1934
+ std::uint32_t tmp;
1811
1935
 
1812
1936
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1813
1937
  __asm__ __volatile__\
@@ -1827,16 +1951,18 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1827
1951
 
1828
1952
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1829
1953
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1954
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1830
1955
 
1831
1956
  return original.as_storage;
1832
1957
  }
1833
1958
 
1834
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1959
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1835
1960
  {
1961
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1836
1962
  storage_union original;
1837
1963
  storage_union value = { v };
1838
1964
  storage_union result;
1839
- uint32_t tmp;
1965
+ std::uint32_t tmp;
1840
1966
 
1841
1967
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1842
1968
  __asm__ __volatile__\
@@ -1856,16 +1982,18 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1856
1982
 
1857
1983
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1858
1984
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1985
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1859
1986
 
1860
1987
  return original.as_storage;
1861
1988
  }
1862
1989
 
1863
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1990
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1864
1991
  {
1992
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1865
1993
  storage_union original;
1866
1994
  storage_union value = { v };
1867
1995
  storage_union result;
1868
- uint32_t tmp;
1996
+ std::uint32_t tmp;
1869
1997
 
1870
1998
  #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1871
1999
  __asm__ __volatile__\
@@ -1885,16 +2013,17 @@ struct core_arch_operations< 16u, Signed, Interprocess > :
1885
2013
 
1886
2014
  BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1887
2015
  #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
2016
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1888
2017
 
1889
2018
  return original.as_storage;
1890
2019
  }
1891
2020
 
1892
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
2021
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
1893
2022
  {
1894
2023
  return !!exchange(storage, (storage_type)1, order);
1895
2024
  }
1896
2025
 
1897
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
2026
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
1898
2027
  {
1899
2028
  store(storage, (storage_type)0, order);
1900
2029
  }