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