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) 2015 Andrey Semashev
6
+ * Copyright (c) 2015-2025 Andrey Semashev
7
7
  */
8
8
  /*!
9
9
  * \file atomic/detail/extra_ops_gcc_x86.hpp
@@ -15,7 +15,7 @@
15
15
  #define BOOST_ATOMIC_DETAIL_EXTRA_OPS_GCC_X86_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>
@@ -35,9 +35,9 @@ template< typename Base, bool Signed >
35
35
  struct extra_operations< Base, 1u, Signed, true > :
36
36
  public extra_operations_generic< Base, 1u, Signed >
37
37
  {
38
- typedef extra_operations_generic< Base, 1u, Signed > base_type;
39
- typedef typename base_type::storage_type storage_type;
40
- typedef typename storage_traits< 4u >::type temp_storage_type;
38
+ using base_type = extra_operations_generic< Base, 1u, Signed >;
39
+ using storage_type = typename base_type::storage_type;
40
+ using temp_storage_type = typename storage_traits< 4u >::type;
41
41
 
42
42
  #define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\
43
43
  __asm__ __volatile__\
@@ -52,35 +52,43 @@ struct extra_operations< Base, 1u, Signed, true > :
52
52
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
53
53
  )
54
54
 
55
- static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
55
+ static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) noexcept
56
56
  {
57
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
57
58
  storage_type original = storage;
58
59
  temp_storage_type result;
59
60
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negb", original, result);
61
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
60
62
  return original;
61
63
  }
62
64
 
63
- static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
65
+ static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) noexcept
64
66
  {
67
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
65
68
  storage_type original = storage;
66
69
  temp_storage_type result;
67
70
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notb", original, result);
71
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
68
72
  return original;
69
73
  }
70
74
 
71
- static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
75
+ static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) noexcept
72
76
  {
77
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
73
78
  storage_type original = storage;
74
79
  temp_storage_type result;
75
80
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negb", original, result);
81
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
76
82
  return static_cast< storage_type >(result);
77
83
  }
78
84
 
79
- static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
85
+ static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) noexcept
80
86
  {
87
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
81
88
  storage_type original = storage;
82
89
  temp_storage_type result;
83
90
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notb", original, result);
91
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
84
92
  return static_cast< storage_type >(result);
85
93
  }
86
94
 
@@ -99,44 +107,51 @@ struct extra_operations< Base, 1u, Signed, true > :
99
107
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
100
108
  )
101
109
 
102
- static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
110
+ static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
103
111
  {
112
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
104
113
  storage_type original = storage;
105
114
  temp_storage_type result;
106
115
  BOOST_ATOMIC_DETAIL_CAS_LOOP("andb", v, original, result);
116
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
107
117
  return static_cast< storage_type >(result);
108
118
  }
109
119
 
110
- static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
120
+ static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
111
121
  {
122
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
112
123
  storage_type original = storage;
113
124
  temp_storage_type result;
114
125
  BOOST_ATOMIC_DETAIL_CAS_LOOP("orb", v, original, result);
126
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
115
127
  return static_cast< storage_type >(result);
116
128
  }
117
129
 
118
- static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
130
+ static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
119
131
  {
132
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
120
133
  storage_type original = storage;
121
134
  temp_storage_type result;
122
135
  BOOST_ATOMIC_DETAIL_CAS_LOOP("xorb", v, original, result);
136
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
123
137
  return static_cast< storage_type >(result);
124
138
  }
125
139
 
126
140
  #undef BOOST_ATOMIC_DETAIL_CAS_LOOP
127
141
 
128
- static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
142
+ static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) noexcept
129
143
  {
130
144
  return !!negate(storage, order);
131
145
  }
132
146
 
133
- static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
147
+ static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) noexcept
134
148
  {
135
149
  return !!bitwise_complement(storage, order);
136
150
  }
137
151
 
138
- static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
152
+ static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
139
153
  {
154
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
140
155
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
141
156
  {
142
157
  __asm__ __volatile__
@@ -157,10 +172,12 @@ struct extra_operations< Base, 1u, Signed, true > :
157
172
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
158
173
  );
159
174
  }
175
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
160
176
  }
161
177
 
162
- static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
178
+ static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
163
179
  {
180
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
164
181
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
165
182
  {
166
183
  __asm__ __volatile__
@@ -181,10 +198,12 @@ struct extra_operations< Base, 1u, Signed, true > :
181
198
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
182
199
  );
183
200
  }
201
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
184
202
  }
185
203
 
186
- static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
204
+ static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) noexcept
187
205
  {
206
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
188
207
  __asm__ __volatile__
189
208
  (
190
209
  "lock; negb %[storage]\n\t"
@@ -192,10 +211,12 @@ struct extra_operations< Base, 1u, Signed, true > :
192
211
  :
193
212
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
194
213
  );
214
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
195
215
  }
196
216
 
197
- static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
217
+ static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
198
218
  {
219
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
199
220
  __asm__ __volatile__
200
221
  (
201
222
  "lock; andb %[argument], %[storage]\n\t"
@@ -203,10 +224,12 @@ struct extra_operations< Base, 1u, Signed, true > :
203
224
  : [argument] "iq" (v)
204
225
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
205
226
  );
227
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
206
228
  }
207
229
 
208
- static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
230
+ static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
209
231
  {
232
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
210
233
  __asm__ __volatile__
211
234
  (
212
235
  "lock; orb %[argument], %[storage]\n\t"
@@ -214,10 +237,12 @@ struct extra_operations< Base, 1u, Signed, true > :
214
237
  : [argument] "iq" (v)
215
238
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
216
239
  );
240
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
217
241
  }
218
242
 
219
- static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
243
+ static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
220
244
  {
245
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
221
246
  __asm__ __volatile__
222
247
  (
223
248
  "lock; xorb %[argument], %[storage]\n\t"
@@ -225,10 +250,12 @@ struct extra_operations< Base, 1u, Signed, true > :
225
250
  : [argument] "iq" (v)
226
251
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
227
252
  );
253
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
228
254
  }
229
255
 
230
- static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
256
+ static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) noexcept
231
257
  {
258
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
232
259
  __asm__ __volatile__
233
260
  (
234
261
  "lock; notb %[storage]\n\t"
@@ -236,10 +263,12 @@ struct extra_operations< Base, 1u, Signed, true > :
236
263
  :
237
264
  : "memory"
238
265
  );
266
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
239
267
  }
240
268
 
241
- static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
269
+ static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
242
270
  {
271
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
243
272
  bool res;
244
273
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
245
274
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -286,11 +315,13 @@ struct extra_operations< Base, 1u, Signed, true > :
286
315
  );
287
316
  }
288
317
  #endif
318
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
289
319
  return res;
290
320
  }
291
321
 
292
- static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
322
+ static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
293
323
  {
324
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
294
325
  bool res;
295
326
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
296
327
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -337,11 +368,13 @@ struct extra_operations< Base, 1u, Signed, true > :
337
368
  );
338
369
  }
339
370
  #endif
371
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
340
372
  return res;
341
373
  }
342
374
 
343
- static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
375
+ static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
344
376
  {
377
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
345
378
  bool res;
346
379
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
347
380
  __asm__ __volatile__
@@ -361,11 +394,13 @@ struct extra_operations< Base, 1u, Signed, true > :
361
394
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
362
395
  );
363
396
  #endif
397
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
364
398
  return res;
365
399
  }
366
400
 
367
- static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
401
+ static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
368
402
  {
403
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
369
404
  bool res;
370
405
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
371
406
  __asm__ __volatile__
@@ -385,11 +420,13 @@ struct extra_operations< Base, 1u, Signed, true > :
385
420
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
386
421
  );
387
422
  #endif
423
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
388
424
  return res;
389
425
  }
390
426
 
391
- static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
427
+ static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
392
428
  {
429
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
393
430
  bool res;
394
431
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
395
432
  __asm__ __volatile__
@@ -409,6 +446,7 @@ struct extra_operations< Base, 1u, Signed, true > :
409
446
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
410
447
  );
411
448
  #endif
449
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
412
450
  return res;
413
451
  }
414
452
  };
@@ -417,9 +455,9 @@ template< typename Base, bool Signed >
417
455
  struct extra_operations< Base, 2u, Signed, true > :
418
456
  public extra_operations_generic< Base, 2u, Signed >
419
457
  {
420
- typedef extra_operations_generic< Base, 2u, Signed > base_type;
421
- typedef typename base_type::storage_type storage_type;
422
- typedef typename storage_traits< 4u >::type temp_storage_type;
458
+ using base_type = extra_operations_generic< Base, 2u, Signed >;
459
+ using storage_type = typename base_type::storage_type;
460
+ using temp_storage_type = typename storage_traits< 4u >::type;
423
461
 
424
462
  #define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\
425
463
  __asm__ __volatile__\
@@ -434,35 +472,43 @@ struct extra_operations< Base, 2u, Signed, true > :
434
472
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
435
473
  )
436
474
 
437
- static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
475
+ static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) noexcept
438
476
  {
477
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
439
478
  storage_type original = storage;
440
479
  temp_storage_type result;
441
480
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negw", original, result);
481
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
442
482
  return original;
443
483
  }
444
484
 
445
- static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
485
+ static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) noexcept
446
486
  {
487
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
447
488
  storage_type original = storage;
448
489
  temp_storage_type result;
449
490
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notw", original, result);
491
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
450
492
  return original;
451
493
  }
452
494
 
453
- static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
495
+ static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) noexcept
454
496
  {
497
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
455
498
  storage_type original = storage;
456
499
  temp_storage_type result;
457
500
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negw", original, result);
501
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
458
502
  return static_cast< storage_type >(result);
459
503
  }
460
504
 
461
- static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
505
+ static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) noexcept
462
506
  {
507
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
463
508
  storage_type original = storage;
464
509
  temp_storage_type result;
465
510
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notw", original, result);
511
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
466
512
  return static_cast< storage_type >(result);
467
513
  }
468
514
 
@@ -481,44 +527,51 @@ struct extra_operations< Base, 2u, Signed, true > :
481
527
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
482
528
  )
483
529
 
484
- static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
530
+ static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
485
531
  {
532
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
486
533
  storage_type original = storage;
487
534
  temp_storage_type result;
488
535
  BOOST_ATOMIC_DETAIL_CAS_LOOP("andw", v, original, result);
536
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
489
537
  return static_cast< storage_type >(result);
490
538
  }
491
539
 
492
- static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
540
+ static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
493
541
  {
542
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
494
543
  storage_type original = storage;
495
544
  temp_storage_type result;
496
545
  BOOST_ATOMIC_DETAIL_CAS_LOOP("orw", v, original, result);
546
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
497
547
  return static_cast< storage_type >(result);
498
548
  }
499
549
 
500
- static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
550
+ static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
501
551
  {
552
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
502
553
  storage_type original = storage;
503
554
  temp_storage_type result;
504
555
  BOOST_ATOMIC_DETAIL_CAS_LOOP("xorw", v, original, result);
556
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
505
557
  return static_cast< storage_type >(result);
506
558
  }
507
559
 
508
560
  #undef BOOST_ATOMIC_DETAIL_CAS_LOOP
509
561
 
510
- static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
562
+ static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) noexcept
511
563
  {
512
564
  return !!negate(storage, order);
513
565
  }
514
566
 
515
- static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
567
+ static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) noexcept
516
568
  {
517
569
  return !!bitwise_complement(storage, order);
518
570
  }
519
571
 
520
- static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
572
+ static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
521
573
  {
574
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
522
575
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
523
576
  {
524
577
  __asm__ __volatile__
@@ -539,10 +592,12 @@ struct extra_operations< Base, 2u, Signed, true > :
539
592
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
540
593
  );
541
594
  }
595
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
542
596
  }
543
597
 
544
- static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
598
+ static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
545
599
  {
600
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
546
601
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
547
602
  {
548
603
  __asm__ __volatile__
@@ -563,10 +618,12 @@ struct extra_operations< Base, 2u, Signed, true > :
563
618
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
564
619
  );
565
620
  }
621
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
566
622
  }
567
623
 
568
- static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
624
+ static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) noexcept
569
625
  {
626
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
570
627
  __asm__ __volatile__
571
628
  (
572
629
  "lock; negw %[storage]\n\t"
@@ -574,10 +631,12 @@ struct extra_operations< Base, 2u, Signed, true > :
574
631
  :
575
632
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
576
633
  );
634
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
577
635
  }
578
636
 
579
- static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
637
+ static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
580
638
  {
639
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
581
640
  __asm__ __volatile__
582
641
  (
583
642
  "lock; andw %[argument], %[storage]\n\t"
@@ -585,10 +644,12 @@ struct extra_operations< Base, 2u, Signed, true > :
585
644
  : [argument] "iq" (v)
586
645
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
587
646
  );
647
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
588
648
  }
589
649
 
590
- static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
650
+ static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
591
651
  {
652
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
592
653
  __asm__ __volatile__
593
654
  (
594
655
  "lock; orw %[argument], %[storage]\n\t"
@@ -596,10 +657,12 @@ struct extra_operations< Base, 2u, Signed, true > :
596
657
  : [argument] "iq" (v)
597
658
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
598
659
  );
660
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
599
661
  }
600
662
 
601
- static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
663
+ static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
602
664
  {
665
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
603
666
  __asm__ __volatile__
604
667
  (
605
668
  "lock; xorw %[argument], %[storage]\n\t"
@@ -607,10 +670,12 @@ struct extra_operations< Base, 2u, Signed, true > :
607
670
  : [argument] "iq" (v)
608
671
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
609
672
  );
673
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
610
674
  }
611
675
 
612
- static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
676
+ static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) noexcept
613
677
  {
678
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
614
679
  __asm__ __volatile__
615
680
  (
616
681
  "lock; notw %[storage]\n\t"
@@ -618,10 +683,12 @@ struct extra_operations< Base, 2u, Signed, true > :
618
683
  :
619
684
  : "memory"
620
685
  );
686
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
621
687
  }
622
688
 
623
- static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
689
+ static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
624
690
  {
691
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
625
692
  bool res;
626
693
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
627
694
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -668,11 +735,13 @@ struct extra_operations< Base, 2u, Signed, true > :
668
735
  );
669
736
  }
670
737
  #endif
738
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
671
739
  return res;
672
740
  }
673
741
 
674
- static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
742
+ static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
675
743
  {
744
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
676
745
  bool res;
677
746
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
678
747
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -719,11 +788,13 @@ struct extra_operations< Base, 2u, Signed, true > :
719
788
  );
720
789
  }
721
790
  #endif
791
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
722
792
  return res;
723
793
  }
724
794
 
725
- static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
795
+ static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
726
796
  {
797
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
727
798
  bool res;
728
799
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
729
800
  __asm__ __volatile__
@@ -743,11 +814,13 @@ struct extra_operations< Base, 2u, Signed, true > :
743
814
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
744
815
  );
745
816
  #endif
817
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
746
818
  return res;
747
819
  }
748
820
 
749
- static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
821
+ static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
750
822
  {
823
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
751
824
  bool res;
752
825
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
753
826
  __asm__ __volatile__
@@ -767,11 +840,13 @@ struct extra_operations< Base, 2u, Signed, true > :
767
840
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
768
841
  );
769
842
  #endif
843
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
770
844
  return res;
771
845
  }
772
846
 
773
- static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
847
+ static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
774
848
  {
849
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
775
850
  bool res;
776
851
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
777
852
  __asm__ __volatile__
@@ -791,18 +866,20 @@ struct extra_operations< Base, 2u, Signed, true > :
791
866
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
792
867
  );
793
868
  #endif
869
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
794
870
  return res;
795
871
  }
796
872
 
797
- static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
873
+ static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
798
874
  {
875
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
799
876
  bool res;
800
877
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
801
878
  __asm__ __volatile__
802
879
  (
803
880
  "lock; btsw %[bit_number], %[storage]\n\t"
804
881
  : [storage] "+m" (storage), [result] "=@ccc" (res)
805
- : [bit_number] "Kq" ((uint16_t)bit_number)
882
+ : [bit_number] "Kq" ((std::uint16_t)bit_number)
806
883
  : "memory"
807
884
  );
808
885
  #else
@@ -811,22 +888,24 @@ struct extra_operations< Base, 2u, Signed, true > :
811
888
  "lock; btsw %[bit_number], %[storage]\n\t"
812
889
  "setc %[result]\n\t"
813
890
  : [storage] "+m" (storage), [result] "=q" (res)
814
- : [bit_number] "Kq" ((uint16_t)bit_number)
891
+ : [bit_number] "Kq" ((std::uint16_t)bit_number)
815
892
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
816
893
  );
817
894
  #endif
895
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
818
896
  return res;
819
897
  }
820
898
 
821
- static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
899
+ static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
822
900
  {
901
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
823
902
  bool res;
824
903
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
825
904
  __asm__ __volatile__
826
905
  (
827
906
  "lock; btrw %[bit_number], %[storage]\n\t"
828
907
  : [storage] "+m" (storage), [result] "=@ccc" (res)
829
- : [bit_number] "Kq" ((uint16_t)bit_number)
908
+ : [bit_number] "Kq" ((std::uint16_t)bit_number)
830
909
  : "memory"
831
910
  );
832
911
  #else
@@ -835,22 +914,24 @@ struct extra_operations< Base, 2u, Signed, true > :
835
914
  "lock; btrw %[bit_number], %[storage]\n\t"
836
915
  "setc %[result]\n\t"
837
916
  : [storage] "+m" (storage), [result] "=q" (res)
838
- : [bit_number] "Kq" ((uint16_t)bit_number)
917
+ : [bit_number] "Kq" ((std::uint16_t)bit_number)
839
918
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
840
919
  );
841
920
  #endif
921
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
842
922
  return res;
843
923
  }
844
924
 
845
- static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
925
+ static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
846
926
  {
927
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
847
928
  bool res;
848
929
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
849
930
  __asm__ __volatile__
850
931
  (
851
932
  "lock; btcw %[bit_number], %[storage]\n\t"
852
933
  : [storage] "+m" (storage), [result] "=@ccc" (res)
853
- : [bit_number] "Kq" ((uint16_t)bit_number)
934
+ : [bit_number] "Kq" ((std::uint16_t)bit_number)
854
935
  : "memory"
855
936
  );
856
937
  #else
@@ -859,10 +940,11 @@ struct extra_operations< Base, 2u, Signed, true > :
859
940
  "lock; btcw %[bit_number], %[storage]\n\t"
860
941
  "setc %[result]\n\t"
861
942
  : [storage] "+m" (storage), [result] "=q" (res)
862
- : [bit_number] "Kq" ((uint16_t)bit_number)
943
+ : [bit_number] "Kq" ((std::uint16_t)bit_number)
863
944
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
864
945
  );
865
946
  #endif
947
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
866
948
  return res;
867
949
  }
868
950
  };
@@ -871,8 +953,8 @@ template< typename Base, bool Signed >
871
953
  struct extra_operations< Base, 4u, Signed, true > :
872
954
  public extra_operations_generic< Base, 4u, Signed >
873
955
  {
874
- typedef extra_operations_generic< Base, 4u, Signed > base_type;
875
- typedef typename base_type::storage_type storage_type;
956
+ using base_type = extra_operations_generic< Base, 4u, Signed >;
957
+ using storage_type = typename base_type::storage_type;
876
958
 
877
959
  #define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\
878
960
  __asm__ __volatile__\
@@ -887,35 +969,43 @@ struct extra_operations< Base, 4u, Signed, true > :
887
969
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
888
970
  )
889
971
 
890
- static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
972
+ static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) noexcept
891
973
  {
974
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
892
975
  storage_type original = storage;
893
976
  storage_type result;
894
977
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negl", original, result);
978
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
895
979
  return original;
896
980
  }
897
981
 
898
- static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
982
+ static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) noexcept
899
983
  {
984
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
900
985
  storage_type original = storage;
901
986
  storage_type result;
902
987
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notl", original, result);
988
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
903
989
  return original;
904
990
  }
905
991
 
906
- static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
992
+ static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) noexcept
907
993
  {
994
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
908
995
  storage_type original = storage;
909
996
  storage_type result;
910
997
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negl", original, result);
998
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
911
999
  return result;
912
1000
  }
913
1001
 
914
- static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1002
+ static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) noexcept
915
1003
  {
1004
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
916
1005
  storage_type original = storage;
917
1006
  storage_type result;
918
1007
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notl", original, result);
1008
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
919
1009
  return result;
920
1010
  }
921
1011
 
@@ -934,44 +1024,51 @@ struct extra_operations< Base, 4u, Signed, true > :
934
1024
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
935
1025
  )
936
1026
 
937
- static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1027
+ static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
938
1028
  {
1029
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
939
1030
  storage_type original = storage;
940
1031
  storage_type result;
941
1032
  BOOST_ATOMIC_DETAIL_CAS_LOOP("andl", v, original, result);
1033
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
942
1034
  return static_cast< storage_type >(result);
943
1035
  }
944
1036
 
945
- static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1037
+ static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
946
1038
  {
1039
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
947
1040
  storage_type original = storage;
948
1041
  storage_type result;
949
1042
  BOOST_ATOMIC_DETAIL_CAS_LOOP("orl", v, original, result);
1043
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
950
1044
  return static_cast< storage_type >(result);
951
1045
  }
952
1046
 
953
- static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1047
+ static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
954
1048
  {
1049
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
955
1050
  storage_type original = storage;
956
1051
  storage_type result;
957
1052
  BOOST_ATOMIC_DETAIL_CAS_LOOP("xorl", v, original, result);
1053
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
958
1054
  return static_cast< storage_type >(result);
959
1055
  }
960
1056
 
961
1057
  #undef BOOST_ATOMIC_DETAIL_CAS_LOOP
962
1058
 
963
- static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1059
+ static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) noexcept
964
1060
  {
965
1061
  return !!negate(storage, order);
966
1062
  }
967
1063
 
968
- static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1064
+ static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) noexcept
969
1065
  {
970
1066
  return !!bitwise_complement(storage, order);
971
1067
  }
972
1068
 
973
- static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1069
+ static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
974
1070
  {
1071
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
975
1072
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
976
1073
  {
977
1074
  __asm__ __volatile__
@@ -992,10 +1089,12 @@ struct extra_operations< Base, 4u, Signed, true > :
992
1089
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
993
1090
  );
994
1091
  }
1092
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
995
1093
  }
996
1094
 
997
- static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1095
+ static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
998
1096
  {
1097
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
999
1098
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
1000
1099
  {
1001
1100
  __asm__ __volatile__
@@ -1016,10 +1115,12 @@ struct extra_operations< Base, 4u, Signed, true > :
1016
1115
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1017
1116
  );
1018
1117
  }
1118
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1019
1119
  }
1020
1120
 
1021
- static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1121
+ static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) noexcept
1022
1122
  {
1123
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1023
1124
  __asm__ __volatile__
1024
1125
  (
1025
1126
  "lock; negl %[storage]\n\t"
@@ -1027,10 +1128,12 @@ struct extra_operations< Base, 4u, Signed, true > :
1027
1128
  :
1028
1129
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1029
1130
  );
1131
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1030
1132
  }
1031
1133
 
1032
- static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1134
+ static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1033
1135
  {
1136
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1034
1137
  __asm__ __volatile__
1035
1138
  (
1036
1139
  "lock; andl %[argument], %[storage]\n\t"
@@ -1038,10 +1141,12 @@ struct extra_operations< Base, 4u, Signed, true > :
1038
1141
  : [argument] "ir" (v)
1039
1142
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1040
1143
  );
1144
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1041
1145
  }
1042
1146
 
1043
- static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1147
+ static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1044
1148
  {
1149
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1045
1150
  __asm__ __volatile__
1046
1151
  (
1047
1152
  "lock; orl %[argument], %[storage]\n\t"
@@ -1049,10 +1154,12 @@ struct extra_operations< Base, 4u, Signed, true > :
1049
1154
  : [argument] "ir" (v)
1050
1155
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1051
1156
  );
1157
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1052
1158
  }
1053
1159
 
1054
- static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1160
+ static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1055
1161
  {
1162
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1056
1163
  __asm__ __volatile__
1057
1164
  (
1058
1165
  "lock; xorl %[argument], %[storage]\n\t"
@@ -1060,10 +1167,12 @@ struct extra_operations< Base, 4u, Signed, true > :
1060
1167
  : [argument] "ir" (v)
1061
1168
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1062
1169
  );
1170
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1063
1171
  }
1064
1172
 
1065
- static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1173
+ static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) noexcept
1066
1174
  {
1175
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1067
1176
  __asm__ __volatile__
1068
1177
  (
1069
1178
  "lock; notl %[storage]\n\t"
@@ -1071,10 +1180,12 @@ struct extra_operations< Base, 4u, Signed, true > :
1071
1180
  :
1072
1181
  : "memory"
1073
1182
  );
1183
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1074
1184
  }
1075
1185
 
1076
- static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1186
+ static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1077
1187
  {
1188
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1078
1189
  bool res;
1079
1190
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1080
1191
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -1121,11 +1232,13 @@ struct extra_operations< Base, 4u, Signed, true > :
1121
1232
  );
1122
1233
  }
1123
1234
  #endif
1235
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1124
1236
  return res;
1125
1237
  }
1126
1238
 
1127
- static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1239
+ static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1128
1240
  {
1241
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1129
1242
  bool res;
1130
1243
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1131
1244
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -1172,11 +1285,13 @@ struct extra_operations< Base, 4u, Signed, true > :
1172
1285
  );
1173
1286
  }
1174
1287
  #endif
1288
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1175
1289
  return res;
1176
1290
  }
1177
1291
 
1178
- static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1292
+ static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1179
1293
  {
1294
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1180
1295
  bool res;
1181
1296
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1182
1297
  __asm__ __volatile__
@@ -1196,11 +1311,13 @@ struct extra_operations< Base, 4u, Signed, true > :
1196
1311
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1197
1312
  );
1198
1313
  #endif
1314
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1199
1315
  return res;
1200
1316
  }
1201
1317
 
1202
- static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1318
+ static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1203
1319
  {
1320
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1204
1321
  bool res;
1205
1322
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1206
1323
  __asm__ __volatile__
@@ -1220,11 +1337,13 @@ struct extra_operations< Base, 4u, Signed, true > :
1220
1337
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1221
1338
  );
1222
1339
  #endif
1340
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1223
1341
  return res;
1224
1342
  }
1225
1343
 
1226
- static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1344
+ static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1227
1345
  {
1346
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1228
1347
  bool res;
1229
1348
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1230
1349
  __asm__ __volatile__
@@ -1244,18 +1363,20 @@ struct extra_operations< Base, 4u, Signed, true > :
1244
1363
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1245
1364
  );
1246
1365
  #endif
1366
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1247
1367
  return res;
1248
1368
  }
1249
1369
 
1250
- static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
1370
+ static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
1251
1371
  {
1372
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1252
1373
  bool res;
1253
1374
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1254
1375
  __asm__ __volatile__
1255
1376
  (
1256
1377
  "lock; btsl %[bit_number], %[storage]\n\t"
1257
1378
  : [storage] "+m" (storage), [result] "=@ccc" (res)
1258
- : [bit_number] "Kr" ((uint32_t)bit_number)
1379
+ : [bit_number] "Kr" ((std::uint32_t)bit_number)
1259
1380
  : "memory"
1260
1381
  );
1261
1382
  #else
@@ -1264,22 +1385,24 @@ struct extra_operations< Base, 4u, Signed, true > :
1264
1385
  "lock; btsl %[bit_number], %[storage]\n\t"
1265
1386
  "setc %[result]\n\t"
1266
1387
  : [storage] "+m" (storage), [result] "=q" (res)
1267
- : [bit_number] "Kr" ((uint32_t)bit_number)
1388
+ : [bit_number] "Kr" ((std::uint32_t)bit_number)
1268
1389
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1269
1390
  );
1270
1391
  #endif
1392
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1271
1393
  return res;
1272
1394
  }
1273
1395
 
1274
- static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
1396
+ static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
1275
1397
  {
1398
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1276
1399
  bool res;
1277
1400
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1278
1401
  __asm__ __volatile__
1279
1402
  (
1280
1403
  "lock; btrl %[bit_number], %[storage]\n\t"
1281
1404
  : [storage] "+m" (storage), [result] "=@ccc" (res)
1282
- : [bit_number] "Kr" ((uint32_t)bit_number)
1405
+ : [bit_number] "Kr" ((std::uint32_t)bit_number)
1283
1406
  : "memory"
1284
1407
  );
1285
1408
  #else
@@ -1288,22 +1411,24 @@ struct extra_operations< Base, 4u, Signed, true > :
1288
1411
  "lock; btrl %[bit_number], %[storage]\n\t"
1289
1412
  "setc %[result]\n\t"
1290
1413
  : [storage] "+m" (storage), [result] "=q" (res)
1291
- : [bit_number] "Kr" ((uint32_t)bit_number)
1414
+ : [bit_number] "Kr" ((std::uint32_t)bit_number)
1292
1415
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1293
1416
  );
1294
1417
  #endif
1418
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1295
1419
  return res;
1296
1420
  }
1297
1421
 
1298
- static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
1422
+ static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
1299
1423
  {
1424
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1300
1425
  bool res;
1301
1426
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1302
1427
  __asm__ __volatile__
1303
1428
  (
1304
1429
  "lock; btcl %[bit_number], %[storage]\n\t"
1305
1430
  : [storage] "+m" (storage), [result] "=@ccc" (res)
1306
- : [bit_number] "Kr" ((uint32_t)bit_number)
1431
+ : [bit_number] "Kr" ((std::uint32_t)bit_number)
1307
1432
  : "memory"
1308
1433
  );
1309
1434
  #else
@@ -1312,10 +1437,11 @@ struct extra_operations< Base, 4u, Signed, true > :
1312
1437
  "lock; btcl %[bit_number], %[storage]\n\t"
1313
1438
  "setc %[result]\n\t"
1314
1439
  : [storage] "+m" (storage), [result] "=q" (res)
1315
- : [bit_number] "Kr" ((uint32_t)bit_number)
1440
+ : [bit_number] "Kr" ((std::uint32_t)bit_number)
1316
1441
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1317
1442
  );
1318
1443
  #endif
1444
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1319
1445
  return res;
1320
1446
  }
1321
1447
  };
@@ -1326,8 +1452,8 @@ template< typename Base, bool Signed >
1326
1452
  struct extra_operations< Base, 8u, Signed, true > :
1327
1453
  public extra_operations_generic< Base, 8u, Signed >
1328
1454
  {
1329
- typedef extra_operations_generic< Base, 8u, Signed > base_type;
1330
- typedef typename base_type::storage_type storage_type;
1455
+ using base_type = extra_operations_generic< Base, 8u, Signed >;
1456
+ using storage_type = typename base_type::storage_type;
1331
1457
 
1332
1458
  #define BOOST_ATOMIC_DETAIL_CAS_LOOP(op, original, result)\
1333
1459
  __asm__ __volatile__\
@@ -1342,35 +1468,43 @@ struct extra_operations< Base, 8u, Signed, true > :
1342
1468
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1343
1469
  )
1344
1470
 
1345
- static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1471
+ static BOOST_FORCEINLINE storage_type fetch_negate(storage_type volatile& storage, memory_order order) noexcept
1346
1472
  {
1473
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1347
1474
  storage_type original = storage;
1348
1475
  storage_type result;
1349
1476
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negq", original, result);
1477
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1350
1478
  return original;
1351
1479
  }
1352
1480
 
1353
- static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1481
+ static BOOST_FORCEINLINE storage_type fetch_complement(storage_type volatile& storage, memory_order order) noexcept
1354
1482
  {
1483
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1355
1484
  storage_type original = storage;
1356
1485
  storage_type result;
1357
1486
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notq", original, result);
1487
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1358
1488
  return original;
1359
1489
  }
1360
1490
 
1361
- static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1491
+ static BOOST_FORCEINLINE storage_type negate(storage_type volatile& storage, memory_order order) noexcept
1362
1492
  {
1493
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1363
1494
  storage_type original = storage;
1364
1495
  storage_type result;
1365
1496
  BOOST_ATOMIC_DETAIL_CAS_LOOP("negq", original, result);
1497
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1366
1498
  return result;
1367
1499
  }
1368
1500
 
1369
- static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1501
+ static BOOST_FORCEINLINE storage_type bitwise_complement(storage_type volatile& storage, memory_order order) noexcept
1370
1502
  {
1503
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1371
1504
  storage_type original = storage;
1372
1505
  storage_type result;
1373
1506
  BOOST_ATOMIC_DETAIL_CAS_LOOP("notq", original, result);
1507
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1374
1508
  return result;
1375
1509
  }
1376
1510
 
@@ -1389,44 +1523,51 @@ struct extra_operations< Base, 8u, Signed, true > :
1389
1523
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1390
1524
  )
1391
1525
 
1392
- static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1526
+ static BOOST_FORCEINLINE storage_type bitwise_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1393
1527
  {
1528
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1394
1529
  storage_type original = storage;
1395
1530
  storage_type result;
1396
1531
  BOOST_ATOMIC_DETAIL_CAS_LOOP("andq", v, original, result);
1532
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1397
1533
  return static_cast< storage_type >(result);
1398
1534
  }
1399
1535
 
1400
- static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1536
+ static BOOST_FORCEINLINE storage_type bitwise_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1401
1537
  {
1538
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1402
1539
  storage_type original = storage;
1403
1540
  storage_type result;
1404
1541
  BOOST_ATOMIC_DETAIL_CAS_LOOP("orq", v, original, result);
1542
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1405
1543
  return static_cast< storage_type >(result);
1406
1544
  }
1407
1545
 
1408
- static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1546
+ static BOOST_FORCEINLINE storage_type bitwise_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1409
1547
  {
1548
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1410
1549
  storage_type original = storage;
1411
1550
  storage_type result;
1412
1551
  BOOST_ATOMIC_DETAIL_CAS_LOOP("xorq", v, original, result);
1552
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1413
1553
  return static_cast< storage_type >(result);
1414
1554
  }
1415
1555
 
1416
1556
  #undef BOOST_ATOMIC_DETAIL_CAS_LOOP
1417
1557
 
1418
- static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1558
+ static BOOST_FORCEINLINE bool negate_and_test(storage_type volatile& storage, memory_order order) noexcept
1419
1559
  {
1420
1560
  return !!negate(storage, order);
1421
1561
  }
1422
1562
 
1423
- static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1563
+ static BOOST_FORCEINLINE bool complement_and_test(storage_type volatile& storage, memory_order order) noexcept
1424
1564
  {
1425
1565
  return !!bitwise_complement(storage, order);
1426
1566
  }
1427
1567
 
1428
- static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1568
+ static BOOST_FORCEINLINE void opaque_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1429
1569
  {
1570
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1430
1571
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
1431
1572
  {
1432
1573
  __asm__ __volatile__
@@ -1447,10 +1588,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1447
1588
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1448
1589
  );
1449
1590
  }
1591
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1450
1592
  }
1451
1593
 
1452
- static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1594
+ static BOOST_FORCEINLINE void opaque_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1453
1595
  {
1596
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1454
1597
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
1455
1598
  {
1456
1599
  __asm__ __volatile__
@@ -1471,10 +1614,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1471
1614
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1472
1615
  );
1473
1616
  }
1617
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1474
1618
  }
1475
1619
 
1476
- static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1620
+ static BOOST_FORCEINLINE void opaque_negate(storage_type volatile& storage, memory_order order) noexcept
1477
1621
  {
1622
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1478
1623
  __asm__ __volatile__
1479
1624
  (
1480
1625
  "lock; negq %[storage]\n\t"
@@ -1482,10 +1627,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1482
1627
  :
1483
1628
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1484
1629
  );
1630
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1485
1631
  }
1486
1632
 
1487
- static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1633
+ static BOOST_FORCEINLINE void opaque_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1488
1634
  {
1635
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1489
1636
  __asm__ __volatile__
1490
1637
  (
1491
1638
  "lock; andq %[argument], %[storage]\n\t"
@@ -1493,10 +1640,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1493
1640
  : [argument] "er" (v)
1494
1641
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1495
1642
  );
1643
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1496
1644
  }
1497
1645
 
1498
- static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1646
+ static BOOST_FORCEINLINE void opaque_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1499
1647
  {
1648
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1500
1649
  __asm__ __volatile__
1501
1650
  (
1502
1651
  "lock; orq %[argument], %[storage]\n\t"
@@ -1504,10 +1653,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1504
1653
  : [argument] "er" (v)
1505
1654
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1506
1655
  );
1656
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1507
1657
  }
1508
1658
 
1509
- static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1659
+ static BOOST_FORCEINLINE void opaque_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1510
1660
  {
1661
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1511
1662
  __asm__ __volatile__
1512
1663
  (
1513
1664
  "lock; xorq %[argument], %[storage]\n\t"
@@ -1515,10 +1666,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1515
1666
  : [argument] "er" (v)
1516
1667
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1517
1668
  );
1669
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1518
1670
  }
1519
1671
 
1520
- static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order) BOOST_NOEXCEPT
1672
+ static BOOST_FORCEINLINE void opaque_complement(storage_type volatile& storage, memory_order order) noexcept
1521
1673
  {
1674
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1522
1675
  __asm__ __volatile__
1523
1676
  (
1524
1677
  "lock; notq %[storage]\n\t"
@@ -1526,10 +1679,12 @@ struct extra_operations< Base, 8u, Signed, true > :
1526
1679
  :
1527
1680
  : "memory"
1528
1681
  );
1682
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1529
1683
  }
1530
1684
 
1531
- static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1685
+ static BOOST_FORCEINLINE bool add_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1532
1686
  {
1687
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1533
1688
  bool res;
1534
1689
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1535
1690
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -1576,11 +1731,13 @@ struct extra_operations< Base, 8u, Signed, true > :
1576
1731
  );
1577
1732
  }
1578
1733
  #endif
1734
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1579
1735
  return res;
1580
1736
  }
1581
1737
 
1582
- static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1738
+ static BOOST_FORCEINLINE bool sub_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1583
1739
  {
1740
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1584
1741
  bool res;
1585
1742
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1586
1743
  if (BOOST_ATOMIC_DETAIL_IS_CONSTANT(v) && v == 1)
@@ -1627,11 +1784,13 @@ struct extra_operations< Base, 8u, Signed, true > :
1627
1784
  );
1628
1785
  }
1629
1786
  #endif
1787
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1630
1788
  return res;
1631
1789
  }
1632
1790
 
1633
- static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1791
+ static BOOST_FORCEINLINE bool and_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1634
1792
  {
1793
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1635
1794
  bool res;
1636
1795
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1637
1796
  __asm__ __volatile__
@@ -1651,11 +1810,13 @@ struct extra_operations< Base, 8u, Signed, true > :
1651
1810
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1652
1811
  );
1653
1812
  #endif
1813
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1654
1814
  return res;
1655
1815
  }
1656
1816
 
1657
- static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1817
+ static BOOST_FORCEINLINE bool or_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1658
1818
  {
1819
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1659
1820
  bool res;
1660
1821
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1661
1822
  __asm__ __volatile__
@@ -1675,11 +1836,13 @@ struct extra_operations< Base, 8u, Signed, true > :
1675
1836
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1676
1837
  );
1677
1838
  #endif
1839
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1678
1840
  return res;
1679
1841
  }
1680
1842
 
1681
- static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order) BOOST_NOEXCEPT
1843
+ static BOOST_FORCEINLINE bool xor_and_test(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1682
1844
  {
1845
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1683
1846
  bool res;
1684
1847
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1685
1848
  __asm__ __volatile__
@@ -1699,18 +1862,20 @@ struct extra_operations< Base, 8u, Signed, true > :
1699
1862
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1700
1863
  );
1701
1864
  #endif
1865
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1702
1866
  return res;
1703
1867
  }
1704
1868
 
1705
- static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
1869
+ static BOOST_FORCEINLINE bool bit_test_and_set(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
1706
1870
  {
1871
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1707
1872
  bool res;
1708
1873
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1709
1874
  __asm__ __volatile__
1710
1875
  (
1711
1876
  "lock; btsq %[bit_number], %[storage]\n\t"
1712
1877
  : [storage] "+m" (storage), [result] "=@ccc" (res)
1713
- : [bit_number] "Kr" ((uint64_t)bit_number)
1878
+ : [bit_number] "Kr" ((std::uint64_t)bit_number)
1714
1879
  : "memory"
1715
1880
  );
1716
1881
  #else
@@ -1719,22 +1884,24 @@ struct extra_operations< Base, 8u, Signed, true > :
1719
1884
  "lock; btsq %[bit_number], %[storage]\n\t"
1720
1885
  "setc %[result]\n\t"
1721
1886
  : [storage] "+m" (storage), [result] "=q" (res)
1722
- : [bit_number] "Kr" ((uint64_t)bit_number)
1887
+ : [bit_number] "Kr" ((std::uint64_t)bit_number)
1723
1888
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1724
1889
  );
1725
1890
  #endif
1891
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1726
1892
  return res;
1727
1893
  }
1728
1894
 
1729
- static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
1895
+ static BOOST_FORCEINLINE bool bit_test_and_reset(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
1730
1896
  {
1897
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1731
1898
  bool res;
1732
1899
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1733
1900
  __asm__ __volatile__
1734
1901
  (
1735
1902
  "lock; btrq %[bit_number], %[storage]\n\t"
1736
1903
  : [storage] "+m" (storage), [result] "=@ccc" (res)
1737
- : [bit_number] "Kr" ((uint64_t)bit_number)
1904
+ : [bit_number] "Kr" ((std::uint64_t)bit_number)
1738
1905
  : "memory"
1739
1906
  );
1740
1907
  #else
@@ -1743,22 +1910,24 @@ struct extra_operations< Base, 8u, Signed, true > :
1743
1910
  "lock; btrq %[bit_number], %[storage]\n\t"
1744
1911
  "setc %[result]\n\t"
1745
1912
  : [storage] "+m" (storage), [result] "=q" (res)
1746
- : [bit_number] "Kr" ((uint64_t)bit_number)
1913
+ : [bit_number] "Kr" ((std::uint64_t)bit_number)
1747
1914
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1748
1915
  );
1749
1916
  #endif
1917
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1750
1918
  return res;
1751
1919
  }
1752
1920
 
1753
- static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order) BOOST_NOEXCEPT
1921
+ static BOOST_FORCEINLINE bool bit_test_and_complement(storage_type volatile& storage, unsigned int bit_number, memory_order order) noexcept
1754
1922
  {
1923
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1755
1924
  bool res;
1756
1925
  #if defined(BOOST_ATOMIC_DETAIL_ASM_HAS_FLAG_OUTPUTS)
1757
1926
  __asm__ __volatile__
1758
1927
  (
1759
1928
  "lock; btcq %[bit_number], %[storage]\n\t"
1760
1929
  : [storage] "+m" (storage), [result] "=@ccc" (res)
1761
- : [bit_number] "Kr" ((uint64_t)bit_number)
1930
+ : [bit_number] "Kr" ((std::uint64_t)bit_number)
1762
1931
  : "memory"
1763
1932
  );
1764
1933
  #else
@@ -1767,10 +1936,11 @@ struct extra_operations< Base, 8u, Signed, true > :
1767
1936
  "lock; btcq %[bit_number], %[storage]\n\t"
1768
1937
  "setc %[result]\n\t"
1769
1938
  : [storage] "+m" (storage), [result] "=q" (res)
1770
- : [bit_number] "Kr" ((uint64_t)bit_number)
1939
+ : [bit_number] "Kr" ((std::uint64_t)bit_number)
1771
1940
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1772
1941
  );
1773
1942
  #endif
1943
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1774
1944
  return res;
1775
1945
  }
1776
1946
  };