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) 2011 Helge Bahmann
|
|
7
7
|
* Copyright (c) 2013 Tim Blechmann
|
|
8
|
-
* Copyright (c) 2014, 2020 Andrey Semashev
|
|
8
|
+
* Copyright (c) 2014, 2020-2025 Andrey Semashev
|
|
9
9
|
*/
|
|
10
10
|
/*!
|
|
11
11
|
* \file atomic/atomic.hpp
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
#define BOOST_ATOMIC_ATOMIC_HPP_INCLUDED_
|
|
18
18
|
|
|
19
19
|
#include <cstddef>
|
|
20
|
-
#include <
|
|
20
|
+
#include <cstdint>
|
|
21
|
+
#include <type_traits>
|
|
21
22
|
#include <boost/memory_order.hpp>
|
|
22
23
|
#include <boost/atomic/capabilities.hpp>
|
|
23
24
|
#include <boost/atomic/detail/config.hpp>
|
|
24
25
|
#include <boost/atomic/detail/classify.hpp>
|
|
25
26
|
#include <boost/atomic/detail/atomic_impl.hpp>
|
|
26
27
|
#include <boost/atomic/detail/type_traits/is_trivially_copyable.hpp>
|
|
27
|
-
#include <boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp>
|
|
28
28
|
#include <boost/atomic/detail/header.hpp>
|
|
29
29
|
|
|
30
30
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
@@ -40,141 +40,131 @@ class atomic :
|
|
|
40
40
|
public atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type, false >
|
|
41
41
|
{
|
|
42
42
|
private:
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
using base_type = atomics::detail::base_atomic< T, typename atomics::detail::classify< T >::type, false >;
|
|
44
|
+
using value_arg_type = typename base_type::value_arg_type;
|
|
45
45
|
|
|
46
46
|
public:
|
|
47
|
-
|
|
47
|
+
using value_type = typename base_type::value_type;
|
|
48
48
|
|
|
49
49
|
static_assert(sizeof(value_type) > 0u, "boost::atomic<T> requires T to be a complete type");
|
|
50
|
-
#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE)
|
|
51
50
|
static_assert(atomics::detail::is_trivially_copyable< value_type >::value, "boost::atomic<T> requires T to be a trivially copyable type");
|
|
52
|
-
#endif
|
|
53
51
|
|
|
54
52
|
public:
|
|
55
|
-
|
|
56
|
-
{
|
|
57
|
-
}
|
|
53
|
+
atomic() = default;
|
|
58
54
|
|
|
59
|
-
BOOST_FORCEINLINE
|
|
55
|
+
BOOST_FORCEINLINE constexpr atomic(value_arg_type v) noexcept : base_type(v)
|
|
60
56
|
{
|
|
61
57
|
}
|
|
62
58
|
|
|
63
|
-
|
|
59
|
+
atomic(atomic const&) = delete;
|
|
60
|
+
atomic& operator= (atomic const&) = delete;
|
|
61
|
+
atomic& operator= (atomic const&) volatile = delete;
|
|
62
|
+
|
|
63
|
+
BOOST_FORCEINLINE value_type operator= (value_arg_type v) noexcept
|
|
64
64
|
{
|
|
65
65
|
this->store(v);
|
|
66
66
|
return v;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
BOOST_FORCEINLINE value_type operator= (value_arg_type v) volatile
|
|
69
|
+
BOOST_FORCEINLINE value_type operator= (value_arg_type v) volatile noexcept
|
|
70
70
|
{
|
|
71
71
|
this->store(v);
|
|
72
72
|
return v;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
BOOST_FORCEINLINE operator value_type() const volatile
|
|
75
|
+
BOOST_FORCEINLINE operator value_type() const volatile noexcept
|
|
76
76
|
{
|
|
77
77
|
return this->load();
|
|
78
78
|
}
|
|
79
|
-
|
|
80
|
-
BOOST_DELETED_FUNCTION(atomic(atomic const&))
|
|
81
|
-
BOOST_DELETED_FUNCTION(atomic& operator= (atomic const&))
|
|
82
|
-
BOOST_DELETED_FUNCTION(atomic& operator= (atomic const&) volatile)
|
|
83
79
|
};
|
|
84
80
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
typedef atomic< int_fast32_t > atomic_int_fast32_t;
|
|
132
|
-
typedef atomic< uint_fast32_t > atomic_uint_fast32_t;
|
|
133
|
-
typedef atomic< int_fast64_t > atomic_int_fast64_t;
|
|
134
|
-
typedef atomic< uint_fast64_t > atomic_uint_fast64_t;
|
|
135
|
-
typedef atomic< intmax_t > atomic_intmax_t;
|
|
136
|
-
typedef atomic< uintmax_t > atomic_uintmax_t;
|
|
81
|
+
using atomic_char = atomic< char >;
|
|
82
|
+
using atomic_uchar = atomic< unsigned char >;
|
|
83
|
+
using atomic_schar = atomic< signed char >;
|
|
84
|
+
using atomic_ushort = atomic< unsigned short >;
|
|
85
|
+
using atomic_short = atomic< short >;
|
|
86
|
+
using atomic_uint = atomic< unsigned int >;
|
|
87
|
+
using atomic_int = atomic< int >;
|
|
88
|
+
using atomic_ulong = atomic< unsigned long >;
|
|
89
|
+
using atomic_long = atomic< long >;
|
|
90
|
+
using atomic_ullong = atomic< unsigned long long >;
|
|
91
|
+
using atomic_llong = atomic< long long >;
|
|
92
|
+
using atomic_address = atomic< void* >;
|
|
93
|
+
using atomic_bool = atomic< bool >;
|
|
94
|
+
using atomic_wchar_t = atomic< wchar_t >;
|
|
95
|
+
#if defined(__cpp_char8_t) && (__cpp_char8_t >= 201811)
|
|
96
|
+
using atomic_char8_t = atomic< char8_t >;
|
|
97
|
+
#endif
|
|
98
|
+
using atomic_char16_t = atomic< char16_t >;
|
|
99
|
+
using atomic_char32_t = atomic< char32_t >;
|
|
100
|
+
|
|
101
|
+
using atomic_uint8_t = atomic< std::uint8_t >;
|
|
102
|
+
using atomic_int8_t = atomic< std::int8_t >;
|
|
103
|
+
using atomic_uint16_t = atomic< std::uint16_t >;
|
|
104
|
+
using atomic_int16_t = atomic< std::int16_t >;
|
|
105
|
+
using atomic_uint32_t = atomic< std::uint32_t >;
|
|
106
|
+
using atomic_int32_t = atomic< std::int32_t >;
|
|
107
|
+
using atomic_uint64_t = atomic< std::uint64_t >;
|
|
108
|
+
using atomic_int64_t = atomic< std::int64_t >;
|
|
109
|
+
using atomic_int_least8_t = atomic< std::int_least8_t >;
|
|
110
|
+
using atomic_uint_least8_t = atomic< std::uint_least8_t >;
|
|
111
|
+
using atomic_int_least16_t = atomic< std::int_least16_t >;
|
|
112
|
+
using atomic_uint_least16_t = atomic< std::uint_least16_t >;
|
|
113
|
+
using atomic_int_least32_t = atomic< std::int_least32_t >;
|
|
114
|
+
using atomic_uint_least32_t = atomic< std::uint_least32_t >;
|
|
115
|
+
using atomic_int_least64_t = atomic< std::int_least64_t >;
|
|
116
|
+
using atomic_uint_least64_t = atomic< std::uint_least64_t >;
|
|
117
|
+
using atomic_int_fast8_t = atomic< std::int_fast8_t >;
|
|
118
|
+
using atomic_uint_fast8_t = atomic< std::uint_fast8_t >;
|
|
119
|
+
using atomic_int_fast16_t = atomic< std::int_fast16_t >;
|
|
120
|
+
using atomic_uint_fast16_t = atomic< std::uint_fast16_t >;
|
|
121
|
+
using atomic_int_fast32_t = atomic< std::int_fast32_t >;
|
|
122
|
+
using atomic_uint_fast32_t = atomic< std::uint_fast32_t >;
|
|
123
|
+
using atomic_int_fast64_t = atomic< std::int_fast64_t >;
|
|
124
|
+
using atomic_uint_fast64_t = atomic< std::uint_fast64_t >;
|
|
125
|
+
using atomic_intmax_t = atomic< std::intmax_t >;
|
|
126
|
+
using atomic_uintmax_t = atomic< std::uintmax_t >;
|
|
137
127
|
|
|
138
128
|
#if !defined(BOOST_ATOMIC_NO_FLOATING_POINT)
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
129
|
+
using atomic_float_t = atomic< float >;
|
|
130
|
+
using atomic_double_t = atomic< double >;
|
|
131
|
+
using atomic_long_double_t = atomic< long double >;
|
|
142
132
|
#endif
|
|
143
133
|
|
|
144
|
-
|
|
145
|
-
|
|
134
|
+
using atomic_size_t = atomic< std::size_t >;
|
|
135
|
+
using atomic_ptrdiff_t = atomic< std::ptrdiff_t >;
|
|
146
136
|
|
|
147
|
-
#if defined(
|
|
148
|
-
|
|
149
|
-
|
|
137
|
+
#if defined(UINTPTR_MAX)
|
|
138
|
+
using atomic_intptr_t = atomic< std::intptr_t >;
|
|
139
|
+
using atomic_uintptr_t = atomic< std::uintptr_t >;
|
|
150
140
|
#endif
|
|
151
141
|
|
|
152
142
|
// Select the lock-free atomic types that has natively supported waiting/notifying operations.
|
|
153
143
|
// Prefer 32-bit types the most as those have the best performance on current 32 and 64-bit architectures.
|
|
154
144
|
#if BOOST_ATOMIC_INT32_LOCK_FREE == 2 && BOOST_ATOMIC_HAS_NATIVE_INT32_WAIT_NOTIFY == 2
|
|
155
|
-
|
|
156
|
-
|
|
145
|
+
using atomic_unsigned_lock_free = atomic< std::uint32_t >;
|
|
146
|
+
using atomic_signed_lock_free = atomic< std::int32_t >;
|
|
157
147
|
#elif BOOST_ATOMIC_INT64_LOCK_FREE == 2 && BOOST_ATOMIC_HAS_NATIVE_INT64_WAIT_NOTIFY == 2
|
|
158
|
-
|
|
159
|
-
|
|
148
|
+
using atomic_unsigned_lock_free = atomic< std::uint64_t >;
|
|
149
|
+
using atomic_signed_lock_free = atomic< std::int64_t >;
|
|
160
150
|
#elif BOOST_ATOMIC_INT16_LOCK_FREE == 2 && BOOST_ATOMIC_HAS_NATIVE_INT16_WAIT_NOTIFY == 2
|
|
161
|
-
|
|
162
|
-
|
|
151
|
+
using atomic_unsigned_lock_free = atomic< std::uint16_t >;
|
|
152
|
+
using atomic_signed_lock_free = atomic< std::int16_t >;
|
|
163
153
|
#elif BOOST_ATOMIC_INT8_LOCK_FREE == 2 && BOOST_ATOMIC_HAS_NATIVE_INT8_WAIT_NOTIFY == 2
|
|
164
|
-
|
|
165
|
-
|
|
154
|
+
using atomic_unsigned_lock_free = atomic< std::uint8_t >;
|
|
155
|
+
using atomic_signed_lock_free = atomic< std::int8_t >;
|
|
166
156
|
#elif BOOST_ATOMIC_INT32_LOCK_FREE == 2
|
|
167
|
-
|
|
168
|
-
|
|
157
|
+
using atomic_unsigned_lock_free = atomic< std::uint32_t >;
|
|
158
|
+
using atomic_signed_lock_free = atomic< std::int32_t >;
|
|
169
159
|
#elif BOOST_ATOMIC_INT64_LOCK_FREE == 2
|
|
170
|
-
|
|
171
|
-
|
|
160
|
+
using atomic_unsigned_lock_free = atomic< std::uint64_t >;
|
|
161
|
+
using atomic_signed_lock_free = atomic< std::int64_t >;
|
|
172
162
|
#elif BOOST_ATOMIC_INT16_LOCK_FREE == 2
|
|
173
|
-
|
|
174
|
-
|
|
163
|
+
using atomic_unsigned_lock_free = atomic< std::uint16_t >;
|
|
164
|
+
using atomic_signed_lock_free = atomic< std::int16_t >;
|
|
175
165
|
#elif BOOST_ATOMIC_INT8_LOCK_FREE == 2
|
|
176
|
-
|
|
177
|
-
|
|
166
|
+
using atomic_unsigned_lock_free = atomic< std::uint8_t >;
|
|
167
|
+
using atomic_signed_lock_free = atomic< std::int8_t >;
|
|
178
168
|
#else
|
|
179
169
|
#define BOOST_ATOMIC_DETAIL_NO_LOCK_FREE_TYPEDEFS
|
|
180
170
|
#endif
|
|
@@ -186,37 +176,31 @@ using atomics::atomic;
|
|
|
186
176
|
using atomics::atomic_char;
|
|
187
177
|
using atomics::atomic_uchar;
|
|
188
178
|
using atomics::atomic_schar;
|
|
189
|
-
using atomics::atomic_uint8_t;
|
|
190
|
-
using atomics::atomic_int8_t;
|
|
191
179
|
using atomics::atomic_ushort;
|
|
192
180
|
using atomics::atomic_short;
|
|
193
|
-
using atomics::atomic_uint16_t;
|
|
194
|
-
using atomics::atomic_int16_t;
|
|
195
181
|
using atomics::atomic_uint;
|
|
196
182
|
using atomics::atomic_int;
|
|
197
|
-
using atomics::atomic_uint32_t;
|
|
198
|
-
using atomics::atomic_int32_t;
|
|
199
183
|
using atomics::atomic_ulong;
|
|
200
184
|
using atomics::atomic_long;
|
|
201
|
-
using atomics::atomic_uint64_t;
|
|
202
|
-
using atomics::atomic_int64_t;
|
|
203
|
-
#ifdef BOOST_HAS_LONG_LONG
|
|
204
185
|
using atomics::atomic_ullong;
|
|
205
186
|
using atomics::atomic_llong;
|
|
206
|
-
#endif
|
|
207
187
|
using atomics::atomic_address;
|
|
208
188
|
using atomics::atomic_bool;
|
|
209
189
|
using atomics::atomic_wchar_t;
|
|
210
190
|
#if defined(__cpp_char8_t) && __cpp_char8_t >= 201811
|
|
211
191
|
using atomics::atomic_char8_t;
|
|
212
192
|
#endif
|
|
213
|
-
#if !defined(BOOST_NO_CXX11_CHAR16_T)
|
|
214
193
|
using atomics::atomic_char16_t;
|
|
215
|
-
#endif
|
|
216
|
-
#if !defined(BOOST_NO_CXX11_CHAR32_T)
|
|
217
194
|
using atomics::atomic_char32_t;
|
|
218
|
-
#endif
|
|
219
195
|
|
|
196
|
+
using atomics::atomic_uint8_t;
|
|
197
|
+
using atomics::atomic_int8_t;
|
|
198
|
+
using atomics::atomic_uint16_t;
|
|
199
|
+
using atomics::atomic_int16_t;
|
|
200
|
+
using atomics::atomic_uint32_t;
|
|
201
|
+
using atomics::atomic_int32_t;
|
|
202
|
+
using atomics::atomic_uint64_t;
|
|
203
|
+
using atomics::atomic_int64_t;
|
|
220
204
|
using atomics::atomic_int_least8_t;
|
|
221
205
|
using atomics::atomic_uint_least8_t;
|
|
222
206
|
using atomics::atomic_int_least16_t;
|
|
@@ -245,7 +229,7 @@ using atomics::atomic_long_double_t;
|
|
|
245
229
|
using atomics::atomic_size_t;
|
|
246
230
|
using atomics::atomic_ptrdiff_t;
|
|
247
231
|
|
|
248
|
-
#if defined(
|
|
232
|
+
#if defined(UINTPTR_MAX)
|
|
249
233
|
using atomics::atomic_intptr_t;
|
|
250
234
|
using atomics::atomic_uintptr_t;
|
|
251
235
|
#endif
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) 2011 Helge Bahmann
|
|
7
7
|
* Copyright (c) 2013 Tim Blechmann
|
|
8
|
-
* Copyright (c) 2014, 2020 Andrey Semashev
|
|
8
|
+
* Copyright (c) 2014, 2020-2025 Andrey Semashev
|
|
9
9
|
*/
|
|
10
10
|
/*!
|
|
11
11
|
* \file atomic/atomic_flag.hpp
|
|
@@ -29,7 +29,7 @@ namespace boost {
|
|
|
29
29
|
namespace atomics {
|
|
30
30
|
|
|
31
31
|
//! Atomic flag
|
|
32
|
-
|
|
32
|
+
using atomic_flag = atomics::detail::atomic_flag_impl< false >;
|
|
33
33
|
|
|
34
34
|
} // namespace atomics
|
|
35
35
|
|
|
@@ -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-
|
|
6
|
+
* Copyright (c) 2020-2025 Andrey Semashev
|
|
7
7
|
*/
|
|
8
8
|
/*!
|
|
9
9
|
* \file atomic/atomic_ref.hpp
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
#ifndef BOOST_ATOMIC_ATOMIC_REF_HPP_INCLUDED_
|
|
15
15
|
#define BOOST_ATOMIC_ATOMIC_REF_HPP_INCLUDED_
|
|
16
16
|
|
|
17
|
+
#include <type_traits>
|
|
17
18
|
#include <boost/assert.hpp>
|
|
18
19
|
#include <boost/memory_order.hpp>
|
|
19
20
|
#include <boost/atomic/capabilities.hpp>
|
|
@@ -37,40 +38,39 @@ class atomic_ref :
|
|
|
37
38
|
public atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, false >
|
|
38
39
|
{
|
|
39
40
|
private:
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
using base_type = atomics::detail::base_atomic_ref< T, typename atomics::detail::classify< T >::type, false >;
|
|
42
|
+
using value_arg_type = typename base_type::value_arg_type;
|
|
42
43
|
|
|
43
44
|
public:
|
|
44
|
-
|
|
45
|
+
using value_type = typename base_type::value_type;
|
|
45
46
|
|
|
46
47
|
static_assert(sizeof(value_type) > 0u, "boost::atomic_ref<T> requires T to be a complete type");
|
|
47
|
-
#if !defined(BOOST_ATOMIC_DETAIL_NO_CXX11_IS_TRIVIALLY_COPYABLE)
|
|
48
48
|
static_assert(atomics::detail::is_trivially_copyable< value_type >::value, "boost::atomic_ref<T> requires T to be a trivially copyable type");
|
|
49
|
-
#endif
|
|
50
49
|
|
|
51
50
|
private:
|
|
52
|
-
|
|
51
|
+
using storage_type = typename base_type::storage_type;
|
|
53
52
|
|
|
54
53
|
public:
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
atomic_ref(atomic_ref const&) = default;
|
|
55
|
+
|
|
56
|
+
BOOST_FORCEINLINE explicit atomic_ref(value_type& v) noexcept : base_type(v)
|
|
57
57
|
{
|
|
58
58
|
// Check that referenced object alignment satisfies required alignment
|
|
59
59
|
BOOST_ASSERT((((atomics::detail::uintptr_t)this->m_value) & (base_type::required_alignment - 1u)) == 0u);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
atomic_ref& operator= (atomic_ref const&) = delete;
|
|
63
|
+
|
|
64
|
+
BOOST_FORCEINLINE value_type operator= (value_arg_type v) const noexcept
|
|
63
65
|
{
|
|
64
66
|
this->store(v);
|
|
65
67
|
return v;
|
|
66
68
|
}
|
|
67
69
|
|
|
68
|
-
BOOST_FORCEINLINE operator value_type() const
|
|
70
|
+
BOOST_FORCEINLINE operator value_type() const noexcept
|
|
69
71
|
{
|
|
70
72
|
return this->load();
|
|
71
73
|
}
|
|
72
|
-
|
|
73
|
-
BOOST_DELETED_FUNCTION(atomic_ref& operator= (atomic_ref const&))
|
|
74
74
|
};
|
|
75
75
|
|
|
76
76
|
#if !defined(BOOST_NO_CXX17_DEDUCTION_GUIDES)
|
|
@@ -80,7 +80,7 @@ atomic_ref(T&) -> atomic_ref< T >;
|
|
|
80
80
|
|
|
81
81
|
//! Atomic reference factory function
|
|
82
82
|
template< typename T >
|
|
83
|
-
BOOST_FORCEINLINE atomic_ref< T > make_atomic_ref(T& value)
|
|
83
|
+
BOOST_FORCEINLINE atomic_ref< T > make_atomic_ref(T& value) noexcept
|
|
84
84
|
{
|
|
85
85
|
return atomic_ref< T >(value);
|
|
86
86
|
}
|
|
@@ -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) 2018 Andrey Semashev
|
|
6
|
+
* Copyright (c) 2018, 2025 Andrey Semashev
|
|
7
7
|
*/
|
|
8
8
|
/*!
|
|
9
9
|
* \file atomic/detail/addressof.hpp
|
|
@@ -40,9 +40,9 @@ namespace detail {
|
|
|
40
40
|
template< typename T >
|
|
41
41
|
BOOST_FORCEINLINE
|
|
42
42
|
#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF)
|
|
43
|
-
|
|
43
|
+
constexpr
|
|
44
44
|
#endif
|
|
45
|
-
T* addressof(T& value)
|
|
45
|
+
T* addressof(T& value) noexcept
|
|
46
46
|
{
|
|
47
47
|
#if defined(BOOST_ATOMIC_DETAIL_HAS_BUILTIN_ADDRESSOF)
|
|
48
48
|
return __builtin_addressof(value);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) 2011 Helge Bahmann
|
|
7
7
|
* Copyright (c) 2013 Tim Blechmann
|
|
8
|
-
* Copyright (c) 2014, 2020 Andrey Semashev
|
|
8
|
+
* Copyright (c) 2014, 2020-2025 Andrey Semashev
|
|
9
9
|
*/
|
|
10
10
|
/*!
|
|
11
11
|
* \file atomic/detail/atomic_flag_impl.hpp
|
|
@@ -16,8 +16,12 @@
|
|
|
16
16
|
#ifndef BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_IMPL_HPP_INCLUDED_
|
|
17
17
|
#define BOOST_ATOMIC_DETAIL_ATOMIC_FLAG_IMPL_HPP_INCLUDED_
|
|
18
18
|
|
|
19
|
+
#include <chrono>
|
|
20
|
+
#include <utility>
|
|
21
|
+
#include <type_traits>
|
|
19
22
|
#include <boost/assert.hpp>
|
|
20
23
|
#include <boost/memory_order.hpp>
|
|
24
|
+
#include <boost/atomic/wait_result.hpp>
|
|
21
25
|
#include <boost/atomic/detail/config.hpp>
|
|
22
26
|
#include <boost/atomic/detail/core_operations.hpp>
|
|
23
27
|
#include <boost/atomic/detail/wait_operations.hpp>
|
|
@@ -37,53 +41,52 @@ namespace boost {
|
|
|
37
41
|
namespace atomics {
|
|
38
42
|
namespace detail {
|
|
39
43
|
|
|
40
|
-
#if defined(BOOST_ATOMIC_DETAIL_NO_CXX11_CONSTEXPR_UNION_INIT) || defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX)
|
|
41
|
-
#define BOOST_ATOMIC_NO_ATOMIC_FLAG_INIT
|
|
42
|
-
#else
|
|
43
44
|
#define BOOST_ATOMIC_FLAG_INIT {}
|
|
44
|
-
#endif
|
|
45
45
|
|
|
46
46
|
//! Atomic flag implementation
|
|
47
47
|
template< bool IsInterprocess >
|
|
48
48
|
struct atomic_flag_impl
|
|
49
49
|
{
|
|
50
50
|
// Prefer 4-byte storage as most platforms support waiting/notifying operations without a lock pool for 32-bit integers
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
using core_operations = atomics::detail::core_operations< 4u, false, IsInterprocess >;
|
|
52
|
+
using wait_operations = atomics::detail::wait_operations< core_operations >;
|
|
53
|
+
using storage_type = typename core_operations::storage_type;
|
|
54
54
|
|
|
55
|
-
static
|
|
56
|
-
static
|
|
55
|
+
static constexpr bool is_always_lock_free = core_operations::is_always_lock_free;
|
|
56
|
+
static constexpr bool always_has_native_wait_notify = wait_operations::always_has_native_wait_notify;
|
|
57
57
|
|
|
58
58
|
BOOST_ATOMIC_DETAIL_ALIGNED_VAR_TPL(core_operations::storage_alignment, storage_type, m_storage);
|
|
59
59
|
|
|
60
|
-
BOOST_FORCEINLINE
|
|
60
|
+
BOOST_FORCEINLINE constexpr atomic_flag_impl() noexcept : m_storage(0u)
|
|
61
61
|
{
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
atomic_flag_impl(atomic_flag_impl const&) = delete;
|
|
65
|
+
atomic_flag_impl& operator= (atomic_flag_impl const&) = delete;
|
|
66
|
+
|
|
67
|
+
BOOST_FORCEINLINE bool is_lock_free() const volatile noexcept
|
|
65
68
|
{
|
|
66
69
|
return is_always_lock_free;
|
|
67
70
|
}
|
|
68
71
|
|
|
69
|
-
BOOST_FORCEINLINE bool has_native_wait_notify() const volatile
|
|
72
|
+
BOOST_FORCEINLINE bool has_native_wait_notify() const volatile noexcept
|
|
70
73
|
{
|
|
71
74
|
return wait_operations::has_native_wait_notify(m_storage);
|
|
72
75
|
}
|
|
73
76
|
|
|
74
|
-
BOOST_FORCEINLINE bool test(memory_order order = memory_order_seq_cst) const volatile
|
|
77
|
+
BOOST_FORCEINLINE bool test(memory_order order = memory_order_seq_cst) const volatile noexcept
|
|
75
78
|
{
|
|
76
79
|
BOOST_ASSERT(order != memory_order_release);
|
|
77
80
|
BOOST_ASSERT(order != memory_order_acq_rel);
|
|
78
81
|
return !!core_operations::load(m_storage, order);
|
|
79
82
|
}
|
|
80
83
|
|
|
81
|
-
BOOST_FORCEINLINE bool test_and_set(memory_order order = memory_order_seq_cst) volatile
|
|
84
|
+
BOOST_FORCEINLINE bool test_and_set(memory_order order = memory_order_seq_cst) volatile noexcept
|
|
82
85
|
{
|
|
83
86
|
return core_operations::test_and_set(m_storage, order);
|
|
84
87
|
}
|
|
85
88
|
|
|
86
|
-
BOOST_FORCEINLINE void clear(memory_order order = memory_order_seq_cst) volatile
|
|
89
|
+
BOOST_FORCEINLINE void clear(memory_order order = memory_order_seq_cst) volatile noexcept
|
|
87
90
|
{
|
|
88
91
|
BOOST_ASSERT(order != memory_order_consume);
|
|
89
92
|
BOOST_ASSERT(order != memory_order_acquire);
|
|
@@ -91,7 +94,7 @@ struct atomic_flag_impl
|
|
|
91
94
|
core_operations::clear(m_storage, order);
|
|
92
95
|
}
|
|
93
96
|
|
|
94
|
-
BOOST_FORCEINLINE bool wait(bool old_val, memory_order order = memory_order_seq_cst) const volatile
|
|
97
|
+
BOOST_FORCEINLINE bool wait(bool old_val, memory_order order = memory_order_seq_cst) const volatile noexcept
|
|
95
98
|
{
|
|
96
99
|
BOOST_ASSERT(order != memory_order_release);
|
|
97
100
|
BOOST_ASSERT(order != memory_order_acq_rel);
|
|
@@ -99,25 +102,50 @@ struct atomic_flag_impl
|
|
|
99
102
|
return !!wait_operations::wait(m_storage, static_cast< storage_type >(old_val), order);
|
|
100
103
|
}
|
|
101
104
|
|
|
102
|
-
|
|
105
|
+
template< typename Clock, typename Duration >
|
|
106
|
+
BOOST_FORCEINLINE wait_result< bool >
|
|
107
|
+
wait_until(bool old_val, std::chrono::time_point< Clock, Duration > timeout, memory_order order = memory_order_seq_cst) const volatile
|
|
108
|
+
noexcept(noexcept(wait_operations::wait_until(
|
|
109
|
+
std::declval< storage_type const volatile& >(), std::declval< storage_type >(), timeout, order, std::declval< bool& >())))
|
|
110
|
+
{
|
|
111
|
+
BOOST_ASSERT(order != memory_order_release);
|
|
112
|
+
BOOST_ASSERT(order != memory_order_acq_rel);
|
|
113
|
+
|
|
114
|
+
bool timed_out = false;
|
|
115
|
+
storage_type new_value = wait_operations::wait_until(m_storage, static_cast< storage_type >(old_val), timeout, order, timed_out);
|
|
116
|
+
return wait_result< bool >(!!new_value, timed_out);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
template< typename Rep, typename Period >
|
|
120
|
+
BOOST_FORCEINLINE wait_result< bool >
|
|
121
|
+
wait_for(bool old_val, std::chrono::duration< Rep, Period > timeout, memory_order order = memory_order_seq_cst) const volatile
|
|
122
|
+
noexcept(noexcept(wait_operations::wait_for(
|
|
123
|
+
std::declval< storage_type const volatile& >(), std::declval< storage_type >(), timeout, order, std::declval< bool& >())))
|
|
124
|
+
{
|
|
125
|
+
BOOST_ASSERT(order != memory_order_release);
|
|
126
|
+
BOOST_ASSERT(order != memory_order_acq_rel);
|
|
127
|
+
|
|
128
|
+
bool timed_out = false;
|
|
129
|
+
storage_type new_value = wait_operations::wait_for(m_storage, static_cast< storage_type >(old_val), timeout, order, timed_out);
|
|
130
|
+
return wait_result< bool >(!!new_value, timed_out);
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
BOOST_FORCEINLINE void notify_one() volatile noexcept
|
|
103
134
|
{
|
|
104
135
|
wait_operations::notify_one(m_storage);
|
|
105
136
|
}
|
|
106
137
|
|
|
107
|
-
BOOST_FORCEINLINE void notify_all() volatile
|
|
138
|
+
BOOST_FORCEINLINE void notify_all() volatile noexcept
|
|
108
139
|
{
|
|
109
140
|
wait_operations::notify_all(m_storage);
|
|
110
141
|
}
|
|
111
|
-
|
|
112
|
-
BOOST_DELETED_FUNCTION(atomic_flag_impl(atomic_flag_impl const&))
|
|
113
|
-
BOOST_DELETED_FUNCTION(atomic_flag_impl& operator= (atomic_flag_impl const&))
|
|
114
142
|
};
|
|
115
143
|
|
|
116
144
|
#if defined(BOOST_NO_CXX17_INLINE_VARIABLES)
|
|
117
145
|
template< bool IsInterprocess >
|
|
118
|
-
|
|
146
|
+
constexpr bool atomic_flag_impl< IsInterprocess >::is_always_lock_free;
|
|
119
147
|
template< bool IsInterprocess >
|
|
120
|
-
|
|
148
|
+
constexpr bool atomic_flag_impl< IsInterprocess >::always_has_native_wait_notify;
|
|
121
149
|
#endif
|
|
122
150
|
|
|
123
151
|
} // namespace detail
|