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_aarch32.hpp
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
#define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH32_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>
|
|
@@ -45,23 +45,24 @@ namespace detail {
|
|
|
45
45
|
|
|
46
46
|
struct core_arch_operations_gcc_aarch32_base
|
|
47
47
|
{
|
|
48
|
-
static
|
|
49
|
-
static
|
|
48
|
+
static constexpr bool full_cas_based = false;
|
|
49
|
+
static constexpr bool is_always_lock_free = true;
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
template< bool Signed, bool Interprocess >
|
|
53
53
|
struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
54
54
|
public core_arch_operations_gcc_aarch32_base
|
|
55
55
|
{
|
|
56
|
-
|
|
56
|
+
using storage_type = typename storage_traits< 1u >::type;
|
|
57
57
|
|
|
58
|
-
static
|
|
59
|
-
static
|
|
60
|
-
static
|
|
61
|
-
static
|
|
58
|
+
static constexpr std::size_t storage_size = 1u;
|
|
59
|
+
static constexpr std::size_t storage_alignment = 1u;
|
|
60
|
+
static constexpr bool is_signed = Signed;
|
|
61
|
+
static constexpr bool is_interprocess = Interprocess;
|
|
62
62
|
|
|
63
|
-
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order)
|
|
63
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
64
64
|
{
|
|
65
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
65
66
|
if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
|
|
66
67
|
{
|
|
67
68
|
__asm__ __volatile__
|
|
@@ -78,7 +79,7 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
78
79
|
}
|
|
79
80
|
}
|
|
80
81
|
|
|
81
|
-
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order)
|
|
82
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
|
|
82
83
|
{
|
|
83
84
|
storage_type v;
|
|
84
85
|
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
@@ -95,14 +96,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
95
96
|
{
|
|
96
97
|
v = storage;
|
|
97
98
|
}
|
|
99
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
98
100
|
|
|
99
101
|
return v;
|
|
100
102
|
}
|
|
101
103
|
|
|
102
|
-
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order)
|
|
104
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
103
105
|
{
|
|
106
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
104
107
|
storage_type original;
|
|
105
|
-
uint32_t tmp;
|
|
108
|
+
std::uint32_t tmp;
|
|
106
109
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
107
110
|
__asm__ __volatile__\
|
|
108
111
|
(\
|
|
@@ -118,13 +121,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
118
121
|
|
|
119
122
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
120
123
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
124
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
121
125
|
|
|
122
126
|
return original;
|
|
123
127
|
}
|
|
124
128
|
|
|
125
129
|
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
126
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
130
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
127
131
|
{
|
|
132
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
128
133
|
storage_type original;
|
|
129
134
|
bool success;
|
|
130
135
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -147,12 +152,15 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
147
152
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
148
153
|
|
|
149
154
|
expected = original;
|
|
155
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
156
|
+
|
|
150
157
|
return success;
|
|
151
158
|
}
|
|
152
159
|
|
|
153
160
|
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
154
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
161
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
155
162
|
{
|
|
163
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
156
164
|
storage_type original;
|
|
157
165
|
bool success;
|
|
158
166
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -177,13 +185,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
177
185
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
178
186
|
|
|
179
187
|
expected = original;
|
|
188
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
189
|
+
|
|
180
190
|
return success;
|
|
181
191
|
}
|
|
182
192
|
|
|
183
|
-
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order)
|
|
193
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
184
194
|
{
|
|
195
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
185
196
|
storage_type original, result;
|
|
186
|
-
uint32_t tmp;
|
|
197
|
+
std::uint32_t tmp;
|
|
187
198
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
188
199
|
__asm__ __volatile__\
|
|
189
200
|
(\
|
|
@@ -200,14 +211,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
200
211
|
|
|
201
212
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
202
213
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
214
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
203
215
|
|
|
204
216
|
return original;
|
|
205
217
|
}
|
|
206
218
|
|
|
207
|
-
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order)
|
|
219
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
208
220
|
{
|
|
221
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
209
222
|
storage_type original, result;
|
|
210
|
-
uint32_t tmp;
|
|
223
|
+
std::uint32_t tmp;
|
|
211
224
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
212
225
|
__asm__ __volatile__\
|
|
213
226
|
(\
|
|
@@ -224,14 +237,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
224
237
|
|
|
225
238
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
226
239
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
240
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
227
241
|
|
|
228
242
|
return original;
|
|
229
243
|
}
|
|
230
244
|
|
|
231
|
-
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order)
|
|
245
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
232
246
|
{
|
|
247
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
233
248
|
storage_type original, result;
|
|
234
|
-
uint32_t tmp;
|
|
249
|
+
std::uint32_t tmp;
|
|
235
250
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
236
251
|
__asm__ __volatile__\
|
|
237
252
|
(\
|
|
@@ -248,14 +263,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
248
263
|
|
|
249
264
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
250
265
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
266
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
251
267
|
|
|
252
268
|
return original;
|
|
253
269
|
}
|
|
254
270
|
|
|
255
|
-
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order)
|
|
271
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
256
272
|
{
|
|
273
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
257
274
|
storage_type original, result;
|
|
258
|
-
uint32_t tmp;
|
|
275
|
+
std::uint32_t tmp;
|
|
259
276
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
260
277
|
__asm__ __volatile__\
|
|
261
278
|
(\
|
|
@@ -272,14 +289,16 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
272
289
|
|
|
273
290
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
274
291
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
292
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
275
293
|
|
|
276
294
|
return original;
|
|
277
295
|
}
|
|
278
296
|
|
|
279
|
-
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order)
|
|
297
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
280
298
|
{
|
|
299
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
281
300
|
storage_type original, result;
|
|
282
|
-
uint32_t tmp;
|
|
301
|
+
std::uint32_t tmp;
|
|
283
302
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
284
303
|
__asm__ __volatile__\
|
|
285
304
|
(\
|
|
@@ -296,16 +315,17 @@ struct core_arch_operations< 1u, Signed, Interprocess > :
|
|
|
296
315
|
|
|
297
316
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
298
317
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
318
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
299
319
|
|
|
300
320
|
return original;
|
|
301
321
|
}
|
|
302
322
|
|
|
303
|
-
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order)
|
|
323
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
|
|
304
324
|
{
|
|
305
325
|
return !!exchange(storage, (storage_type)1, order);
|
|
306
326
|
}
|
|
307
327
|
|
|
308
|
-
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order)
|
|
328
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
|
|
309
329
|
{
|
|
310
330
|
store(storage, (storage_type)0, order);
|
|
311
331
|
}
|
|
@@ -315,15 +335,16 @@ template< bool Signed, bool Interprocess >
|
|
|
315
335
|
struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
316
336
|
public core_arch_operations_gcc_aarch32_base
|
|
317
337
|
{
|
|
318
|
-
|
|
338
|
+
using storage_type = typename storage_traits< 2u >::type;
|
|
319
339
|
|
|
320
|
-
static
|
|
321
|
-
static
|
|
322
|
-
static
|
|
323
|
-
static
|
|
340
|
+
static constexpr std::size_t storage_size = 2u;
|
|
341
|
+
static constexpr std::size_t storage_alignment = 2u;
|
|
342
|
+
static constexpr bool is_signed = Signed;
|
|
343
|
+
static constexpr bool is_interprocess = Interprocess;
|
|
324
344
|
|
|
325
|
-
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order)
|
|
345
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
326
346
|
{
|
|
347
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
327
348
|
if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
|
|
328
349
|
{
|
|
329
350
|
__asm__ __volatile__
|
|
@@ -340,7 +361,7 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
340
361
|
}
|
|
341
362
|
}
|
|
342
363
|
|
|
343
|
-
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order)
|
|
364
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
|
|
344
365
|
{
|
|
345
366
|
storage_type v;
|
|
346
367
|
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
@@ -357,14 +378,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
357
378
|
{
|
|
358
379
|
v = storage;
|
|
359
380
|
}
|
|
381
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
360
382
|
|
|
361
383
|
return v;
|
|
362
384
|
}
|
|
363
385
|
|
|
364
|
-
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order)
|
|
386
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
365
387
|
{
|
|
388
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
366
389
|
storage_type original;
|
|
367
|
-
uint32_t tmp;
|
|
390
|
+
std::uint32_t tmp;
|
|
368
391
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
369
392
|
__asm__ __volatile__\
|
|
370
393
|
(\
|
|
@@ -380,13 +403,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
380
403
|
|
|
381
404
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
382
405
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
406
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
383
407
|
|
|
384
408
|
return original;
|
|
385
409
|
}
|
|
386
410
|
|
|
387
411
|
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
388
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
412
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
389
413
|
{
|
|
414
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
390
415
|
storage_type original;
|
|
391
416
|
bool success;
|
|
392
417
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -409,12 +434,15 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
409
434
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
410
435
|
|
|
411
436
|
expected = original;
|
|
437
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
438
|
+
|
|
412
439
|
return success;
|
|
413
440
|
}
|
|
414
441
|
|
|
415
442
|
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
416
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
443
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
417
444
|
{
|
|
445
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
418
446
|
storage_type original;
|
|
419
447
|
bool success;
|
|
420
448
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -439,13 +467,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
439
467
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
440
468
|
|
|
441
469
|
expected = original;
|
|
470
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
471
|
+
|
|
442
472
|
return success;
|
|
443
473
|
}
|
|
444
474
|
|
|
445
|
-
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order)
|
|
475
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
446
476
|
{
|
|
477
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
447
478
|
storage_type original, result;
|
|
448
|
-
uint32_t tmp;
|
|
479
|
+
std::uint32_t tmp;
|
|
449
480
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
450
481
|
__asm__ __volatile__\
|
|
451
482
|
(\
|
|
@@ -462,14 +493,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
462
493
|
|
|
463
494
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
464
495
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
496
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
465
497
|
|
|
466
498
|
return original;
|
|
467
499
|
}
|
|
468
500
|
|
|
469
|
-
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order)
|
|
501
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
470
502
|
{
|
|
503
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
471
504
|
storage_type original, result;
|
|
472
|
-
uint32_t tmp;
|
|
505
|
+
std::uint32_t tmp;
|
|
473
506
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
474
507
|
__asm__ __volatile__\
|
|
475
508
|
(\
|
|
@@ -486,14 +519,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
486
519
|
|
|
487
520
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
488
521
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
522
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
489
523
|
|
|
490
524
|
return original;
|
|
491
525
|
}
|
|
492
526
|
|
|
493
|
-
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order)
|
|
527
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
494
528
|
{
|
|
529
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
495
530
|
storage_type original, result;
|
|
496
|
-
uint32_t tmp;
|
|
531
|
+
std::uint32_t tmp;
|
|
497
532
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
498
533
|
__asm__ __volatile__\
|
|
499
534
|
(\
|
|
@@ -510,14 +545,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
510
545
|
|
|
511
546
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
512
547
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
548
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
513
549
|
|
|
514
550
|
return original;
|
|
515
551
|
}
|
|
516
552
|
|
|
517
|
-
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order)
|
|
553
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
518
554
|
{
|
|
555
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
519
556
|
storage_type original, result;
|
|
520
|
-
uint32_t tmp;
|
|
557
|
+
std::uint32_t tmp;
|
|
521
558
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
522
559
|
__asm__ __volatile__\
|
|
523
560
|
(\
|
|
@@ -534,14 +571,16 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
534
571
|
|
|
535
572
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
536
573
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
574
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
537
575
|
|
|
538
576
|
return original;
|
|
539
577
|
}
|
|
540
578
|
|
|
541
|
-
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order)
|
|
579
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
542
580
|
{
|
|
581
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
543
582
|
storage_type original, result;
|
|
544
|
-
uint32_t tmp;
|
|
583
|
+
std::uint32_t tmp;
|
|
545
584
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
546
585
|
__asm__ __volatile__\
|
|
547
586
|
(\
|
|
@@ -558,16 +597,17 @@ struct core_arch_operations< 2u, Signed, Interprocess > :
|
|
|
558
597
|
|
|
559
598
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
560
599
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
600
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
561
601
|
|
|
562
602
|
return original;
|
|
563
603
|
}
|
|
564
604
|
|
|
565
|
-
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order)
|
|
605
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
|
|
566
606
|
{
|
|
567
607
|
return !!exchange(storage, (storage_type)1, order);
|
|
568
608
|
}
|
|
569
609
|
|
|
570
|
-
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order)
|
|
610
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
|
|
571
611
|
{
|
|
572
612
|
store(storage, (storage_type)0, order);
|
|
573
613
|
}
|
|
@@ -577,15 +617,16 @@ template< bool Signed, bool Interprocess >
|
|
|
577
617
|
struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
578
618
|
public core_arch_operations_gcc_aarch32_base
|
|
579
619
|
{
|
|
580
|
-
|
|
620
|
+
using storage_type = typename storage_traits< 4u >::type;
|
|
581
621
|
|
|
582
|
-
static
|
|
583
|
-
static
|
|
584
|
-
static
|
|
585
|
-
static
|
|
622
|
+
static constexpr std::size_t storage_size = 4u;
|
|
623
|
+
static constexpr std::size_t storage_alignment = 4u;
|
|
624
|
+
static constexpr bool is_signed = Signed;
|
|
625
|
+
static constexpr bool is_interprocess = Interprocess;
|
|
586
626
|
|
|
587
|
-
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order)
|
|
627
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
588
628
|
{
|
|
629
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
589
630
|
if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
|
|
590
631
|
{
|
|
591
632
|
__asm__ __volatile__
|
|
@@ -602,7 +643,7 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
602
643
|
}
|
|
603
644
|
}
|
|
604
645
|
|
|
605
|
-
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order)
|
|
646
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
|
|
606
647
|
{
|
|
607
648
|
storage_type v;
|
|
608
649
|
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
@@ -619,14 +660,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
619
660
|
{
|
|
620
661
|
v = storage;
|
|
621
662
|
}
|
|
663
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
622
664
|
|
|
623
665
|
return v;
|
|
624
666
|
}
|
|
625
667
|
|
|
626
|
-
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order)
|
|
668
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
627
669
|
{
|
|
670
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
628
671
|
storage_type original;
|
|
629
|
-
uint32_t tmp;
|
|
672
|
+
std::uint32_t tmp;
|
|
630
673
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
631
674
|
__asm__ __volatile__\
|
|
632
675
|
(\
|
|
@@ -642,13 +685,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
642
685
|
|
|
643
686
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
644
687
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
688
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
645
689
|
|
|
646
690
|
return original;
|
|
647
691
|
}
|
|
648
692
|
|
|
649
693
|
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
650
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
694
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
651
695
|
{
|
|
696
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
652
697
|
storage_type original;
|
|
653
698
|
bool success;
|
|
654
699
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -670,12 +715,15 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
670
715
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
671
716
|
|
|
672
717
|
expected = original;
|
|
718
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
719
|
+
|
|
673
720
|
return success;
|
|
674
721
|
}
|
|
675
722
|
|
|
676
723
|
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
677
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
724
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
678
725
|
{
|
|
726
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
679
727
|
storage_type original;
|
|
680
728
|
bool success;
|
|
681
729
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -699,13 +747,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
699
747
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
700
748
|
|
|
701
749
|
expected = original;
|
|
750
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
751
|
+
|
|
702
752
|
return success;
|
|
703
753
|
}
|
|
704
754
|
|
|
705
|
-
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order)
|
|
755
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
706
756
|
{
|
|
757
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
707
758
|
storage_type original, result;
|
|
708
|
-
uint32_t tmp;
|
|
759
|
+
std::uint32_t tmp;
|
|
709
760
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
710
761
|
__asm__ __volatile__\
|
|
711
762
|
(\
|
|
@@ -722,14 +773,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
722
773
|
|
|
723
774
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
724
775
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
776
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
725
777
|
|
|
726
778
|
return original;
|
|
727
779
|
}
|
|
728
780
|
|
|
729
|
-
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order)
|
|
781
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
730
782
|
{
|
|
783
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
731
784
|
storage_type original, result;
|
|
732
|
-
uint32_t tmp;
|
|
785
|
+
std::uint32_t tmp;
|
|
733
786
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
734
787
|
__asm__ __volatile__\
|
|
735
788
|
(\
|
|
@@ -746,14 +799,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
746
799
|
|
|
747
800
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
748
801
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
802
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
749
803
|
|
|
750
804
|
return original;
|
|
751
805
|
}
|
|
752
806
|
|
|
753
|
-
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order)
|
|
807
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
754
808
|
{
|
|
809
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
755
810
|
storage_type original, result;
|
|
756
|
-
uint32_t tmp;
|
|
811
|
+
std::uint32_t tmp;
|
|
757
812
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
758
813
|
__asm__ __volatile__\
|
|
759
814
|
(\
|
|
@@ -770,14 +825,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
770
825
|
|
|
771
826
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
772
827
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
828
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
773
829
|
|
|
774
830
|
return original;
|
|
775
831
|
}
|
|
776
832
|
|
|
777
|
-
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order)
|
|
833
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
778
834
|
{
|
|
835
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
779
836
|
storage_type original, result;
|
|
780
|
-
uint32_t tmp;
|
|
837
|
+
std::uint32_t tmp;
|
|
781
838
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
782
839
|
__asm__ __volatile__\
|
|
783
840
|
(\
|
|
@@ -794,14 +851,16 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
794
851
|
|
|
795
852
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
796
853
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
854
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
797
855
|
|
|
798
856
|
return original;
|
|
799
857
|
}
|
|
800
858
|
|
|
801
|
-
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order)
|
|
859
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
802
860
|
{
|
|
861
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
803
862
|
storage_type original, result;
|
|
804
|
-
uint32_t tmp;
|
|
863
|
+
std::uint32_t tmp;
|
|
805
864
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
806
865
|
__asm__ __volatile__\
|
|
807
866
|
(\
|
|
@@ -818,16 +877,17 @@ struct core_arch_operations< 4u, Signed, Interprocess > :
|
|
|
818
877
|
|
|
819
878
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
820
879
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
880
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
821
881
|
|
|
822
882
|
return original;
|
|
823
883
|
}
|
|
824
884
|
|
|
825
|
-
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order)
|
|
885
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
|
|
826
886
|
{
|
|
827
887
|
return !!exchange(storage, (storage_type)1, order);
|
|
828
888
|
}
|
|
829
889
|
|
|
830
|
-
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order)
|
|
890
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
|
|
831
891
|
{
|
|
832
892
|
store(storage, (storage_type)0, order);
|
|
833
893
|
}
|
|
@@ -854,19 +914,49 @@ template< bool Signed, bool Interprocess >
|
|
|
854
914
|
struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
855
915
|
public core_arch_operations_gcc_aarch32_base
|
|
856
916
|
{
|
|
857
|
-
|
|
917
|
+
using storage_type = typename storage_traits< 8u >::type;
|
|
858
918
|
|
|
859
|
-
static
|
|
860
|
-
static
|
|
861
|
-
static
|
|
862
|
-
static
|
|
919
|
+
static constexpr std::size_t storage_size = 8u;
|
|
920
|
+
static constexpr std::size_t storage_alignment = 8u;
|
|
921
|
+
static constexpr bool is_signed = Signed;
|
|
922
|
+
static constexpr bool is_interprocess = Interprocess;
|
|
863
923
|
|
|
864
|
-
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order)
|
|
924
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
865
925
|
{
|
|
866
|
-
|
|
926
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
927
|
+
storage_type original;
|
|
928
|
+
std::uint32_t tmp;
|
|
929
|
+
if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
|
|
930
|
+
{
|
|
931
|
+
__asm__ __volatile__
|
|
932
|
+
(
|
|
933
|
+
"1:\n\t"
|
|
934
|
+
"ldrexd %1, %H1, %2\n\t"
|
|
935
|
+
"stlexd %0, %3, %H3, %2\n\t"
|
|
936
|
+
"teq %0, #0\n\t"
|
|
937
|
+
"bne 1b\n\t"
|
|
938
|
+
: "=&r" (tmp), "=&r" (original), "+Q" (storage)
|
|
939
|
+
: "r" (v)
|
|
940
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
|
|
941
|
+
);
|
|
942
|
+
}
|
|
943
|
+
else
|
|
944
|
+
{
|
|
945
|
+
__asm__ __volatile__
|
|
946
|
+
(
|
|
947
|
+
"1:\n\t"
|
|
948
|
+
"ldrexd %1, %H1, %2\n\t"
|
|
949
|
+
"strexd %0, %3, %H3, %2\n\t"
|
|
950
|
+
"teq %0, #0\n\t"
|
|
951
|
+
"bne 1b\n\t"
|
|
952
|
+
: "=&r" (tmp), "=&r" (original), "+Q" (storage)
|
|
953
|
+
: "r" (v)
|
|
954
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
|
|
955
|
+
);
|
|
956
|
+
}
|
|
867
957
|
}
|
|
868
958
|
|
|
869
|
-
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order)
|
|
959
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) noexcept
|
|
870
960
|
{
|
|
871
961
|
storage_type original;
|
|
872
962
|
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
@@ -887,14 +977,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
887
977
|
: "Q" (storage) // %1
|
|
888
978
|
);
|
|
889
979
|
}
|
|
980
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
890
981
|
|
|
891
982
|
return original;
|
|
892
983
|
}
|
|
893
984
|
|
|
894
|
-
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order)
|
|
985
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
895
986
|
{
|
|
987
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
896
988
|
storage_type original;
|
|
897
|
-
uint32_t tmp;
|
|
989
|
+
std::uint32_t tmp;
|
|
898
990
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
899
991
|
__asm__ __volatile__\
|
|
900
992
|
(\
|
|
@@ -910,13 +1002,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
910
1002
|
|
|
911
1003
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
912
1004
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
1005
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
913
1006
|
|
|
914
1007
|
return original;
|
|
915
1008
|
}
|
|
916
1009
|
|
|
917
1010
|
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
918
|
-
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
|
|
919
1012
|
{
|
|
1013
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
920
1014
|
storage_type original;
|
|
921
1015
|
bool success;
|
|
922
1016
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -940,13 +1034,15 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
940
1034
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
941
1035
|
|
|
942
1036
|
expected = original;
|
|
1037
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
943
1038
|
|
|
944
1039
|
return success;
|
|
945
1040
|
}
|
|
946
1041
|
|
|
947
1042
|
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
948
|
-
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order)
|
|
1043
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) noexcept
|
|
949
1044
|
{
|
|
1045
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, success_order);
|
|
950
1046
|
storage_type original;
|
|
951
1047
|
bool success;
|
|
952
1048
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
@@ -972,14 +1068,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
972
1068
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
973
1069
|
|
|
974
1070
|
expected = original;
|
|
1071
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, (success ? success_order : failure_order));
|
|
975
1072
|
|
|
976
1073
|
return success;
|
|
977
1074
|
}
|
|
978
1075
|
|
|
979
|
-
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order)
|
|
1076
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
980
1077
|
{
|
|
1078
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
981
1079
|
storage_type original, result;
|
|
982
|
-
uint32_t tmp;
|
|
1080
|
+
std::uint32_t tmp;
|
|
983
1081
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
984
1082
|
__asm__ __volatile__\
|
|
985
1083
|
(\
|
|
@@ -997,14 +1095,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
997
1095
|
|
|
998
1096
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
999
1097
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
1098
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
1000
1099
|
|
|
1001
1100
|
return original;
|
|
1002
1101
|
}
|
|
1003
1102
|
|
|
1004
|
-
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order)
|
|
1103
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
1005
1104
|
{
|
|
1105
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
1006
1106
|
storage_type original, result;
|
|
1007
|
-
uint32_t tmp;
|
|
1107
|
+
std::uint32_t tmp;
|
|
1008
1108
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
1009
1109
|
__asm__ __volatile__\
|
|
1010
1110
|
(\
|
|
@@ -1022,14 +1122,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
1022
1122
|
|
|
1023
1123
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
1024
1124
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
1125
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
1025
1126
|
|
|
1026
1127
|
return original;
|
|
1027
1128
|
}
|
|
1028
1129
|
|
|
1029
|
-
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order)
|
|
1130
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
1030
1131
|
{
|
|
1132
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
1031
1133
|
storage_type original, result;
|
|
1032
|
-
uint32_t tmp;
|
|
1134
|
+
std::uint32_t tmp;
|
|
1033
1135
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
1034
1136
|
__asm__ __volatile__\
|
|
1035
1137
|
(\
|
|
@@ -1047,14 +1149,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
1047
1149
|
|
|
1048
1150
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
1049
1151
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
1152
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
1050
1153
|
|
|
1051
1154
|
return original;
|
|
1052
1155
|
}
|
|
1053
1156
|
|
|
1054
|
-
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order)
|
|
1157
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
1055
1158
|
{
|
|
1159
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
1056
1160
|
storage_type original, result;
|
|
1057
|
-
uint32_t tmp;
|
|
1161
|
+
std::uint32_t tmp;
|
|
1058
1162
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
1059
1163
|
__asm__ __volatile__\
|
|
1060
1164
|
(\
|
|
@@ -1072,14 +1176,16 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
1072
1176
|
|
|
1073
1177
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
1074
1178
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
1179
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
1075
1180
|
|
|
1076
1181
|
return original;
|
|
1077
1182
|
}
|
|
1078
1183
|
|
|
1079
|
-
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order)
|
|
1184
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) noexcept
|
|
1080
1185
|
{
|
|
1186
|
+
BOOST_ATOMIC_DETAIL_TSAN_RELEASE(&storage, order);
|
|
1081
1187
|
storage_type original, result;
|
|
1082
|
-
uint32_t tmp;
|
|
1188
|
+
std::uint32_t tmp;
|
|
1083
1189
|
#define BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN(ld_mo, st_mo)\
|
|
1084
1190
|
__asm__ __volatile__\
|
|
1085
1191
|
(\
|
|
@@ -1097,16 +1203,17 @@ struct core_arch_operations< 8u, Signed, Interprocess > :
|
|
|
1097
1203
|
|
|
1098
1204
|
BOOST_ATOMIC_DETAIL_AARCH32_MO_SWITCH(order)
|
|
1099
1205
|
#undef BOOST_ATOMIC_DETAIL_AARCH32_MO_INSN
|
|
1206
|
+
BOOST_ATOMIC_DETAIL_TSAN_ACQUIRE(&storage, order);
|
|
1100
1207
|
|
|
1101
1208
|
return original;
|
|
1102
1209
|
}
|
|
1103
1210
|
|
|
1104
|
-
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order)
|
|
1211
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) noexcept
|
|
1105
1212
|
{
|
|
1106
1213
|
return !!exchange(storage, (storage_type)1, order);
|
|
1107
1214
|
}
|
|
1108
1215
|
|
|
1109
|
-
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order)
|
|
1216
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) noexcept
|
|
1110
1217
|
{
|
|
1111
1218
|
store(storage, (storage_type)0, order);
|
|
1112
1219
|
}
|