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