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
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Copyright (c) 2009 Helge Bahmann
7
7
  * Copyright (c) 2013 Tim Blechmann
8
- * Copyright (c) 2014 Andrey Semashev
8
+ * Copyright (c) 2014-2025 Andrey Semashev
9
9
  */
10
10
  /*!
11
11
  * \file atomic/detail/core_arch_ops_gcc_ppc.hpp
@@ -85,15 +85,16 @@ template< bool Signed, bool Interprocess >
85
85
  struct core_arch_operations< 4u, Signed, Interprocess > :
86
86
  public core_arch_operations_gcc_ppc_base
87
87
  {
88
- typedef typename storage_traits< 4u >::type storage_type;
88
+ using storage_type = typename storage_traits< 4u >::type;
89
89
 
90
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
91
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u;
92
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
93
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
90
+ static constexpr std::size_t storage_size = 4u;
91
+ static constexpr std::size_t storage_alignment = 4u;
92
+ static constexpr bool is_signed = Signed;
93
+ static constexpr bool is_interprocess = Interprocess;
94
94
 
95
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
95
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
96
96
  {
97
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
97
98
  fence_before(order);
98
99
  __asm__ __volatile__
99
100
  (
@@ -103,7 +104,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
103
104
  );
104
105
  }
105
106
 
106
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
107
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
107
108
  {
108
109
  storage_type v;
109
110
  if (order == memory_order_seq_cst)
@@ -131,13 +132,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
131
132
  : "m" (storage)
132
133
  );
133
134
  }
135
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
134
136
  return v;
135
137
  }
136
138
 
137
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
139
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
138
140
  {
139
- storage_type original;
141
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
140
142
  fence_before(order);
143
+ storage_type original;
141
144
  __asm__ __volatile__
142
145
  (
143
146
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -149,14 +152,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
149
152
  : "cr0"
150
153
  );
151
154
  fence_after(order);
155
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
152
156
  return original;
153
157
  }
154
158
 
155
159
  static BOOST_FORCEINLINE bool compare_exchange_weak(
156
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
160
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
157
161
  {
158
- int success;
162
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
159
163
  fence_before(success_order);
164
+ int success;
160
165
  __asm__ __volatile__
161
166
  (
162
167
  "li %1, 0\n\t"
@@ -172,17 +177,24 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
172
177
  : "cr0"
173
178
  );
174
179
  if (success)
180
+ {
175
181
  fence_after(success_order);
182
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
183
+ }
176
184
  else
185
+ {
177
186
  fence_after(failure_order);
187
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
188
+ }
178
189
  return !!success;
179
190
  }
180
191
 
181
192
  static BOOST_FORCEINLINE bool compare_exchange_strong(
182
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
193
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
183
194
  {
184
- int success;
195
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
185
196
  fence_before(success_order);
197
+ int success;
186
198
  __asm__ __volatile__
187
199
  (
188
200
  "li %1, 0\n\t"
@@ -199,16 +211,23 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
199
211
  : "cr0"
200
212
  );
201
213
  if (success)
214
+ {
202
215
  fence_after(success_order);
216
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
217
+ }
203
218
  else
219
+ {
204
220
  fence_after(failure_order);
221
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
222
+ }
205
223
  return !!success;
206
224
  }
207
225
 
208
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
226
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
209
227
  {
210
- storage_type original, result;
228
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
211
229
  fence_before(order);
230
+ storage_type original, result;
212
231
  __asm__ __volatile__
213
232
  (
214
233
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -221,13 +240,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
221
240
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
222
241
  );
223
242
  fence_after(order);
243
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
224
244
  return original;
225
245
  }
226
246
 
227
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
247
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
228
248
  {
229
- storage_type original, result;
249
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
230
250
  fence_before(order);
251
+ storage_type original, result;
231
252
  __asm__ __volatile__
232
253
  (
233
254
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -240,13 +261,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
240
261
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
241
262
  );
242
263
  fence_after(order);
264
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
243
265
  return original;
244
266
  }
245
267
 
246
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
268
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
247
269
  {
248
- storage_type original, result;
270
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
249
271
  fence_before(order);
272
+ storage_type original, result;
250
273
  __asm__ __volatile__
251
274
  (
252
275
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -259,13 +282,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
259
282
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
260
283
  );
261
284
  fence_after(order);
285
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
262
286
  return original;
263
287
  }
264
288
 
265
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
289
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
266
290
  {
267
- storage_type original, result;
291
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
268
292
  fence_before(order);
293
+ storage_type original, result;
269
294
  __asm__ __volatile__
270
295
  (
271
296
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -278,13 +303,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
278
303
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
279
304
  );
280
305
  fence_after(order);
306
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
281
307
  return original;
282
308
  }
283
309
 
284
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
310
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
285
311
  {
286
- storage_type original, result;
312
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
287
313
  fence_before(order);
314
+ storage_type original, result;
288
315
  __asm__ __volatile__
289
316
  (
290
317
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -297,15 +324,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
297
324
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
298
325
  );
299
326
  fence_after(order);
327
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
300
328
  return original;
301
329
  }
302
330
 
303
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
331
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
304
332
  {
305
333
  return !!exchange(storage, (storage_type)1, order);
306
334
  }
307
335
 
308
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
336
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
309
337
  {
310
338
  store(storage, (storage_type)0, order);
311
339
  }
@@ -317,15 +345,16 @@ template< bool Signed, bool Interprocess >
317
345
  struct core_arch_operations< 1u, Signed, Interprocess > :
318
346
  public core_arch_operations_gcc_ppc_base
319
347
  {
320
- typedef typename storage_traits< 1u >::type storage_type;
348
+ using storage_type = typename storage_traits< 1u >::type;
321
349
 
322
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u;
323
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u;
324
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
325
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
350
+ static constexpr std::size_t storage_size = 1u;
351
+ static constexpr std::size_t storage_alignment = 1u;
352
+ static constexpr bool is_signed = Signed;
353
+ static constexpr bool is_interprocess = Interprocess;
326
354
 
327
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
355
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
328
356
  {
357
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
329
358
  fence_before(order);
330
359
  __asm__ __volatile__
331
360
  (
@@ -335,7 +364,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
335
364
  );
336
365
  }
337
366
 
338
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
367
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
339
368
  {
340
369
  storage_type v;
341
370
  if (order == memory_order_seq_cst)
@@ -363,13 +392,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
363
392
  : "m" (storage)
364
393
  );
365
394
  }
395
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
366
396
  return v;
367
397
  }
368
398
 
369
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
399
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
370
400
  {
371
- storage_type original;
401
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
372
402
  fence_before(order);
403
+ storage_type original;
373
404
  __asm__ __volatile__
374
405
  (
375
406
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -381,14 +412,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
381
412
  : "cr0"
382
413
  );
383
414
  fence_after(order);
415
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
384
416
  return original;
385
417
  }
386
418
 
387
419
  static BOOST_FORCEINLINE bool compare_exchange_weak(
388
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
420
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
389
421
  {
390
- int success;
422
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
391
423
  fence_before(success_order);
424
+ int success;
392
425
  __asm__ __volatile__
393
426
  (
394
427
  "li %1, 0\n\t"
@@ -404,17 +437,24 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
404
437
  : "cr0"
405
438
  );
406
439
  if (success)
440
+ {
407
441
  fence_after(success_order);
442
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
443
+ }
408
444
  else
445
+ {
409
446
  fence_after(failure_order);
447
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
448
+ }
410
449
  return !!success;
411
450
  }
412
451
 
413
452
  static BOOST_FORCEINLINE bool compare_exchange_strong(
414
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
453
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
415
454
  {
416
- int success;
455
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
417
456
  fence_before(success_order);
457
+ int success;
418
458
  __asm__ __volatile__
419
459
  (
420
460
  "li %1, 0\n\t"
@@ -431,16 +471,23 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
431
471
  : "cr0"
432
472
  );
433
473
  if (success)
474
+ {
434
475
  fence_after(success_order);
476
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
477
+ }
435
478
  else
479
+ {
436
480
  fence_after(failure_order);
481
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
482
+ }
437
483
  return !!success;
438
484
  }
439
485
 
440
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
486
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
441
487
  {
442
- storage_type original, result;
488
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
443
489
  fence_before(order);
490
+ storage_type original, result;
444
491
  __asm__ __volatile__
445
492
  (
446
493
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -453,13 +500,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
453
500
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
454
501
  );
455
502
  fence_after(order);
503
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
456
504
  return original;
457
505
  }
458
506
 
459
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
507
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
460
508
  {
461
- storage_type original, result;
509
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
462
510
  fence_before(order);
511
+ storage_type original, result;
463
512
  __asm__ __volatile__
464
513
  (
465
514
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -472,13 +521,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
472
521
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
473
522
  );
474
523
  fence_after(order);
524
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
475
525
  return original;
476
526
  }
477
527
 
478
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
528
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
479
529
  {
480
- storage_type original, result;
530
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
481
531
  fence_before(order);
532
+ storage_type original, result;
482
533
  __asm__ __volatile__
483
534
  (
484
535
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -491,13 +542,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
491
542
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
492
543
  );
493
544
  fence_after(order);
545
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
494
546
  return original;
495
547
  }
496
548
 
497
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
549
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
498
550
  {
499
- storage_type original, result;
551
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
500
552
  fence_before(order);
553
+ storage_type original, result;
501
554
  __asm__ __volatile__
502
555
  (
503
556
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -510,13 +563,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
510
563
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
511
564
  );
512
565
  fence_after(order);
566
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
513
567
  return original;
514
568
  }
515
569
 
516
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
570
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
517
571
  {
518
- storage_type original, result;
572
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
519
573
  fence_before(order);
574
+ storage_type original, result;
520
575
  __asm__ __volatile__
521
576
  (
522
577
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -529,15 +584,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
529
584
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
530
585
  );
531
586
  fence_after(order);
587
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
532
588
  return original;
533
589
  }
534
590
 
535
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
591
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
536
592
  {
537
593
  return !!exchange(storage, (storage_type)1, order);
538
594
  }
539
595
 
540
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
596
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
541
597
  {
542
598
  store(storage, (storage_type)0, order);
543
599
  }
@@ -549,13 +605,14 @@ template< bool Interprocess >
549
605
  struct core_arch_operations< 1u, false, Interprocess > :
550
606
  public core_arch_operations< 4u, false, Interprocess >
551
607
  {
552
- typedef core_arch_operations< 4u, false, Interprocess > base_type;
553
- typedef typename base_type::storage_type storage_type;
608
+ using base_type = core_arch_operations< 4u, false, Interprocess >;
609
+ using storage_type = typename base_type::storage_type;
554
610
 
555
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
611
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
556
612
  {
557
- storage_type original, result;
613
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
558
614
  base_type::fence_before(order);
615
+ storage_type original, result;
559
616
  __asm__ __volatile__
560
617
  (
561
618
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -569,13 +626,15 @@ struct core_arch_operations< 1u, false, Interprocess > :
569
626
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
570
627
  );
571
628
  base_type::fence_after(order);
629
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
572
630
  return original;
573
631
  }
574
632
 
575
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
633
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
576
634
  {
577
- storage_type original, result;
635
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
578
636
  base_type::fence_before(order);
637
+ storage_type original, result;
579
638
  __asm__ __volatile__
580
639
  (
581
640
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -589,6 +648,7 @@ struct core_arch_operations< 1u, false, Interprocess > :
589
648
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
590
649
  );
591
650
  base_type::fence_after(order);
651
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
592
652
  return original;
593
653
  }
594
654
  };
@@ -597,13 +657,14 @@ template< bool Interprocess >
597
657
  struct core_arch_operations< 1u, true, Interprocess > :
598
658
  public core_arch_operations< 4u, true, Interprocess >
599
659
  {
600
- typedef core_arch_operations< 4u, true, Interprocess > base_type;
601
- typedef typename base_type::storage_type storage_type;
660
+ using base_type = core_arch_operations< 4u, true, Interprocess >;
661
+ using storage_type = typename base_type::storage_type;
602
662
 
603
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
663
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
604
664
  {
605
- storage_type original, result;
665
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
606
666
  base_type::fence_before(order);
667
+ storage_type original, result;
607
668
  __asm__ __volatile__
608
669
  (
609
670
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -617,13 +678,15 @@ struct core_arch_operations< 1u, true, Interprocess > :
617
678
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
618
679
  );
619
680
  base_type::fence_after(order);
681
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
620
682
  return original;
621
683
  }
622
684
 
623
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
685
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
624
686
  {
625
- storage_type original, result;
687
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
626
688
  base_type::fence_before(order);
689
+ storage_type original, result;
627
690
  __asm__ __volatile__
628
691
  (
629
692
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -637,6 +700,7 @@ struct core_arch_operations< 1u, true, Interprocess > :
637
700
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
638
701
  );
639
702
  base_type::fence_after(order);
703
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
640
704
  return original;
641
705
  }
642
706
  };
@@ -649,15 +713,16 @@ template< bool Signed, bool Interprocess >
649
713
  struct core_arch_operations< 2u, Signed, Interprocess > :
650
714
  public core_arch_operations_gcc_ppc_base
651
715
  {
652
- typedef typename storage_traits< 2u >::type storage_type;
716
+ using storage_type = typename storage_traits< 2u >::type;
653
717
 
654
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u;
655
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u;
656
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
657
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
718
+ static constexpr std::size_t storage_size = 2u;
719
+ static constexpr std::size_t storage_alignment = 2u;
720
+ static constexpr bool is_signed = Signed;
721
+ static constexpr bool is_interprocess = Interprocess;
658
722
 
659
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
723
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
660
724
  {
725
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
661
726
  fence_before(order);
662
727
  __asm__ __volatile__
663
728
  (
@@ -667,7 +732,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
667
732
  );
668
733
  }
669
734
 
670
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
735
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
671
736
  {
672
737
  storage_type v;
673
738
  if (order == memory_order_seq_cst)
@@ -695,13 +760,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
695
760
  : "m" (storage)
696
761
  );
697
762
  }
763
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
698
764
  return v;
699
765
  }
700
766
 
701
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
767
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
702
768
  {
703
- storage_type original;
769
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
704
770
  fence_before(order);
771
+ storage_type original;
705
772
  __asm__ __volatile__
706
773
  (
707
774
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -713,14 +780,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
713
780
  : "cr0"
714
781
  );
715
782
  fence_after(order);
783
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
716
784
  return original;
717
785
  }
718
786
 
719
787
  static BOOST_FORCEINLINE bool compare_exchange_weak(
720
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
788
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
721
789
  {
722
- int success;
790
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
723
791
  fence_before(success_order);
792
+ int success;
724
793
  __asm__ __volatile__
725
794
  (
726
795
  "li %1, 0\n\t"
@@ -736,17 +805,24 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
736
805
  : "cr0"
737
806
  );
738
807
  if (success)
808
+ {
739
809
  fence_after(success_order);
810
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
811
+ }
740
812
  else
813
+ {
741
814
  fence_after(failure_order);
815
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
816
+ }
742
817
  return !!success;
743
818
  }
744
819
 
745
820
  static BOOST_FORCEINLINE bool compare_exchange_strong(
746
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
821
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
747
822
  {
748
- int success;
823
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
749
824
  fence_before(success_order);
825
+ int success;
750
826
  __asm__ __volatile__
751
827
  (
752
828
  "li %1, 0\n\t"
@@ -763,16 +839,23 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
763
839
  : "cr0"
764
840
  );
765
841
  if (success)
842
+ {
766
843
  fence_after(success_order);
844
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
845
+ }
767
846
  else
847
+ {
768
848
  fence_after(failure_order);
849
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
850
+ }
769
851
  return !!success;
770
852
  }
771
853
 
772
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
854
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
773
855
  {
774
- storage_type original, result;
856
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
775
857
  fence_before(order);
858
+ storage_type original, result;
776
859
  __asm__ __volatile__
777
860
  (
778
861
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -785,13 +868,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
785
868
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
786
869
  );
787
870
  fence_after(order);
871
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
788
872
  return original;
789
873
  }
790
874
 
791
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
875
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
792
876
  {
793
- storage_type original, result;
877
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
794
878
  fence_before(order);
879
+ storage_type original, result;
795
880
  __asm__ __volatile__
796
881
  (
797
882
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -804,13 +889,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
804
889
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
805
890
  );
806
891
  fence_after(order);
892
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
807
893
  return original;
808
894
  }
809
895
 
810
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
896
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
811
897
  {
812
- storage_type original, result;
898
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
813
899
  fence_before(order);
900
+ storage_type original, result;
814
901
  __asm__ __volatile__
815
902
  (
816
903
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -823,13 +910,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
823
910
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
824
911
  );
825
912
  fence_after(order);
913
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
826
914
  return original;
827
915
  }
828
916
 
829
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
917
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
830
918
  {
831
- storage_type original, result;
919
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
832
920
  fence_before(order);
921
+ storage_type original, result;
833
922
  __asm__ __volatile__
834
923
  (
835
924
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -842,13 +931,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
842
931
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
843
932
  );
844
933
  fence_after(order);
934
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
845
935
  return original;
846
936
  }
847
937
 
848
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
938
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
849
939
  {
850
- storage_type original, result;
940
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
851
941
  fence_before(order);
942
+ storage_type original, result;
852
943
  __asm__ __volatile__
853
944
  (
854
945
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -861,15 +952,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
861
952
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
862
953
  );
863
954
  fence_after(order);
955
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
864
956
  return original;
865
957
  }
866
958
 
867
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
959
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
868
960
  {
869
961
  return !!exchange(storage, (storage_type)1, order);
870
962
  }
871
963
 
872
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
964
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
873
965
  {
874
966
  store(storage, (storage_type)0, order);
875
967
  }
@@ -881,13 +973,14 @@ template< bool Interprocess >
881
973
  struct core_arch_operations< 2u, false, Interprocess > :
882
974
  public core_arch_operations< 4u, false, Interprocess >
883
975
  {
884
- typedef core_arch_operations< 4u, false, Interprocess > base_type;
885
- typedef typename base_type::storage_type storage_type;
976
+ using base_type = core_arch_operations< 4u, false, Interprocess >;
977
+ using storage_type = typename base_type::storage_type;
886
978
 
887
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
979
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
888
980
  {
889
- storage_type original, result;
981
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
890
982
  base_type::fence_before(order);
983
+ storage_type original, result;
891
984
  __asm__ __volatile__
892
985
  (
893
986
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -901,13 +994,15 @@ struct core_arch_operations< 2u, false, Interprocess > :
901
994
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
902
995
  );
903
996
  base_type::fence_after(order);
997
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
904
998
  return original;
905
999
  }
906
1000
 
907
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1001
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
908
1002
  {
909
- storage_type original, result;
1003
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
910
1004
  base_type::fence_before(order);
1005
+ storage_type original, result;
911
1006
  __asm__ __volatile__
912
1007
  (
913
1008
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -921,6 +1016,7 @@ struct core_arch_operations< 2u, false, Interprocess > :
921
1016
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
922
1017
  );
923
1018
  base_type::fence_after(order);
1019
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
924
1020
  return original;
925
1021
  }
926
1022
  };
@@ -929,13 +1025,14 @@ template< bool Interprocess >
929
1025
  struct core_arch_operations< 2u, true, Interprocess > :
930
1026
  public core_arch_operations< 4u, true, Interprocess >
931
1027
  {
932
- typedef core_arch_operations< 4u, true, Interprocess > base_type;
933
- typedef typename base_type::storage_type storage_type;
1028
+ using base_type = core_arch_operations< 4u, true, Interprocess >;
1029
+ using storage_type = typename base_type::storage_type;
934
1030
 
935
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1031
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
936
1032
  {
937
- storage_type original, result;
1033
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
938
1034
  base_type::fence_before(order);
1035
+ storage_type original, result;
939
1036
  __asm__ __volatile__
940
1037
  (
941
1038
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -949,13 +1046,15 @@ struct core_arch_operations< 2u, true, Interprocess > :
949
1046
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
950
1047
  );
951
1048
  base_type::fence_after(order);
1049
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
952
1050
  return original;
953
1051
  }
954
1052
 
955
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1053
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
956
1054
  {
957
- storage_type original, result;
1055
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
958
1056
  base_type::fence_before(order);
1057
+ storage_type original, result;
959
1058
  __asm__ __volatile__
960
1059
  (
961
1060
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -969,6 +1068,7 @@ struct core_arch_operations< 2u, true, Interprocess > :
969
1068
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
970
1069
  );
971
1070
  base_type::fence_after(order);
1071
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
972
1072
  return original;
973
1073
  }
974
1074
  };
@@ -981,15 +1081,16 @@ template< bool Signed, bool Interprocess >
981
1081
  struct core_arch_operations< 8u, Signed, Interprocess > :
982
1082
  public core_arch_operations_gcc_ppc_base
983
1083
  {
984
- typedef typename storage_traits< 8u >::type storage_type;
1084
+ using storage_type = typename storage_traits< 8u >::type;
985
1085
 
986
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
987
- static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u;
988
- static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
989
- static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
1086
+ static constexpr std::size_t storage_size = 8u;
1087
+ static constexpr std::size_t storage_alignment = 8u;
1088
+ static constexpr bool is_signed = Signed;
1089
+ static constexpr bool is_interprocess = Interprocess;
990
1090
 
991
- static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1091
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
992
1092
  {
1093
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
993
1094
  fence_before(order);
994
1095
  __asm__ __volatile__
995
1096
  (
@@ -999,7 +1100,7 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
999
1100
  );
1000
1101
  }
1001
1102
 
1002
- static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
1103
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
1003
1104
  {
1004
1105
  storage_type v;
1005
1106
  if (order == memory_order_seq_cst)
@@ -1027,13 +1128,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1027
1128
  : "m" (storage)
1028
1129
  );
1029
1130
  }
1131
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1030
1132
  return v;
1031
1133
  }
1032
1134
 
1033
- static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1135
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1034
1136
  {
1035
- storage_type original;
1137
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1036
1138
  fence_before(order);
1139
+ storage_type original;
1037
1140
  __asm__ __volatile__
1038
1141
  (
1039
1142
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -1045,14 +1148,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1045
1148
  : "cr0"
1046
1149
  );
1047
1150
  fence_after(order);
1151
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1048
1152
  return original;
1049
1153
  }
1050
1154
 
1051
1155
  static BOOST_FORCEINLINE bool compare_exchange_weak(
1052
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1156
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
1053
1157
  {
1054
- int success;
1158
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
1055
1159
  fence_before(success_order);
1160
+ int success;
1056
1161
  __asm__ __volatile__
1057
1162
  (
1058
1163
  "li %1, 0\n\t"
@@ -1068,17 +1173,24 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1068
1173
  : "cr0"
1069
1174
  );
1070
1175
  if (success)
1176
+ {
1071
1177
  fence_after(success_order);
1178
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
1179
+ }
1072
1180
  else
1181
+ {
1073
1182
  fence_after(failure_order);
1183
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
1184
+ }
1074
1185
  return !!success;
1075
1186
  }
1076
1187
 
1077
1188
  static BOOST_FORCEINLINE bool compare_exchange_strong(
1078
- storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1189
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
1079
1190
  {
1080
- int success;
1191
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
1081
1192
  fence_before(success_order);
1193
+ int success;
1082
1194
  __asm__ __volatile__
1083
1195
  (
1084
1196
  "li %1, 0\n\t"
@@ -1095,16 +1207,23 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1095
1207
  : "cr0"
1096
1208
  );
1097
1209
  if (success)
1210
+ {
1098
1211
  fence_after(success_order);
1212
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, success_order);
1213
+ }
1099
1214
  else
1215
+ {
1100
1216
  fence_after(failure_order);
1217
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, failure_order);
1218
+ }
1101
1219
  return !!success;
1102
1220
  }
1103
1221
 
1104
- static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1222
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1105
1223
  {
1106
- storage_type original, result;
1224
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1107
1225
  fence_before(order);
1226
+ storage_type original, result;
1108
1227
  __asm__ __volatile__
1109
1228
  (
1110
1229
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -1117,13 +1236,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1117
1236
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1118
1237
  );
1119
1238
  fence_after(order);
1239
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1120
1240
  return original;
1121
1241
  }
1122
1242
 
1123
- static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1243
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1124
1244
  {
1125
- storage_type original, result;
1245
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1126
1246
  fence_before(order);
1247
+ storage_type original, result;
1127
1248
  __asm__ __volatile__
1128
1249
  (
1129
1250
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -1136,13 +1257,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1136
1257
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1137
1258
  );
1138
1259
  fence_after(order);
1260
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1139
1261
  return original;
1140
1262
  }
1141
1263
 
1142
- static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1264
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1143
1265
  {
1144
- storage_type original, result;
1266
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1145
1267
  fence_before(order);
1268
+ storage_type original, result;
1146
1269
  __asm__ __volatile__
1147
1270
  (
1148
1271
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -1155,13 +1278,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1155
1278
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1156
1279
  );
1157
1280
  fence_after(order);
1281
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1158
1282
  return original;
1159
1283
  }
1160
1284
 
1161
- static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1285
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1162
1286
  {
1163
- storage_type original, result;
1287
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1164
1288
  fence_before(order);
1289
+ storage_type original, result;
1165
1290
  __asm__ __volatile__
1166
1291
  (
1167
1292
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -1174,13 +1299,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1174
1299
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1175
1300
  );
1176
1301
  fence_after(order);
1302
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1177
1303
  return original;
1178
1304
  }
1179
1305
 
1180
- static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1306
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
1181
1307
  {
1182
- storage_type original, result;
1308
+ BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
1183
1309
  fence_before(order);
1310
+ storage_type original, result;
1184
1311
  __asm__ __volatile__
1185
1312
  (
1186
1313
  BOOST_ATOMIC_DETAIL_PPC_ASM_LABEL("1")
@@ -1193,15 +1320,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
1193
1320
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1194
1321
  );
1195
1322
  fence_after(order);
1323
+ BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
1196
1324
  return original;
1197
1325
  }
1198
1326
 
1199
- static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1327
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
1200
1328
  {
1201
1329
  return !!exchange(storage, (storage_type)1, order);
1202
1330
  }
1203
1331
 
1204
- static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1332
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
1205
1333
  {
1206
1334
  store(storage, (storage_type)0, order);
1207
1335
  }