passenger 6.1.0 → 6.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG +32 -2
- data/Rakefile +6 -13
- data/bin/passenger-install-apache2-module +15 -19
- data/bin/passenger-install-nginx-module +42 -44
- data/bin/passenger-status +9 -10
- data/build/common_library.rb +4 -4
- data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +1 -1
- data/build/test_basics.rb +4 -3
- data/dev/copy_boost_headers +54 -40
- data/dev/ruby_server.rb +1 -1
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/assert.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +94 -110
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +52 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_impl.hpp +641 -285
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +593 -260
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +37 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/chrono.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +16 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +25 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +204 -97
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +251 -122
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_alpha.hpp +56 -56
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_arm.hpp +129 -129
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_ppc.hpp +253 -125
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_sparc.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_x86.hpp +193 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_arm.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_msvc_x86.hpp +96 -97
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +24 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_cas_based.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +27 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_sync.hpp +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_linux_arm.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extending_cas_based_arithmetic.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +21 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +170 -98
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +209 -119
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +95 -95
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +148 -76
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +293 -123
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +87 -71
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +88 -88
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +4 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +110 -49
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/has_posix_clock_traits.hpp +51 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_conversions.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +69 -30
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +51 -31
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +31 -31
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/has_unique_object_representations.hpp +2 -5
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +20 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_darwin_ulock.hpp +90 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +80 -11
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +160 -15
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +327 -38
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +276 -33
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +260 -20
- data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +14 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/atomic/posix_clock_traits_fwd.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/thread_pause.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/wait_result.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +108 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +1235 -1009
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +23 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +88 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/operator_new_helpers.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +72 -13
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +31 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +37 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +23 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +72 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +3 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +54 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/devector.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +32 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +27 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +37 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +23 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +41 -20
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_fwd.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash_is_avalanching.hpp +57 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/bit.hpp +29 -29
- data/src/cxx_supportlib/vendor-modified/boost/core/cmath.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/data.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/demangle.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/assert.hpp +18 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/sp_thread_sleep.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/static_assert.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +16 -10
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +35 -27
- data/src/cxx_supportlib/vendor-modified/boost/core/scoped_enum.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/size.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +20 -9
- data/src/cxx_supportlib/vendor-modified/boost/cregex.hpp +0 -5
- data/src/cxx_supportlib/vendor-modified/boost/describe/detail/config.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/describe/modifiers.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_rebind.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +43 -64
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_undef.hpp +1 -5
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/eval_if_default.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +103 -117
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/conjunction.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/disjunction.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/negation.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/type_traits/type_identity.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +32 -38
- data/src/cxx_supportlib/vendor-modified/boost/iterator/enable_if_convertible.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/interoperable.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/iterator/is_iterator.hpp +16 -16
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +162 -309
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +52 -161
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +3 -11
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +804 -977
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +24 -17
- data/src/cxx_supportlib/vendor-modified/boost/iterator/min_category.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/minimum_category.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +56 -57
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +123 -156
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/buffer_view.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +43 -50
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +23 -27
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +10 -11
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_basic_unlockedbuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +6 -7
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/type_traits.hpp +81 -0
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +1 -12
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +8 -26
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/std_ns_begin.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/mp11/algorithm.hpp +11 -44
- data/src/cxx_supportlib/vendor-modified/boost/mp11/detail/mp_map_find.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/mp11/set.hpp +33 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/and.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/na_assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/ptr_to_ref.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitand.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/bitor.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/mpl/or.hpp +2 -6
- data/src/cxx_supportlib/vendor-modified/boost/pool/pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/pool/simple_segregated_storage.hpp +0 -13
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/limits/to_seq_256.hpp +190 -190
- data/src/cxx_supportlib/vendor-modified/boost/random/beta_distribution.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/config.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/size.hpp +41 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/xoshiro_base.hpp +472 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/random/gamma_distribution.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/generalized_inverse_gaussian_distribution.hpp +339 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +12 -14
- data/src/cxx_supportlib/vendor-modified/boost/random/inverse_gaussian_distribution.hpp +226 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/mersenne_twister.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/mixmax.hpp +63 -63
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_constant_distribution.hpp +7 -10
- data/src/cxx_supportlib/vendor-modified/boost/random/piecewise_linear_distribution.hpp +8 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -3
- data/src/cxx_supportlib/vendor-modified/boost/random/splitmix64.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/random/xoshiro.hpp +488 -0
- data/src/cxx_supportlib/vendor-modified/boost/random.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/has_member_size.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/detail/msvc_has_iterator_workaround.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/range/size_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +35 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +18 -101
- data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/unicode_iterator.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/regex_traits.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/user.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex.hpp +63 -17
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_creator.hpp +71 -16
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/basic_regex_parser.hpp +22 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/c_regex_traits.hpp +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/char_regex_traits.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cpp_regex_traits.hpp +11 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/cregex.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/error_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/icu.hpp +40 -38
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_category.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/iterator_traits.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_flags.hpp +39 -37
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/match_results.hpp +46 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/mem_block_cache.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/object_cache.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/pattern_except.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher.hpp +57 -8
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_common.hpp +21 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/perl_matcher_non_recursive.hpp +18 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regbase.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_format.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_fwd.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_grep.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_iterator.hpp +11 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_match.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_merge.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_raw_buffer.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_replace.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_search.hpp +12 -9
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_split.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_token_iterator.hpp +16 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_traits_defaults.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/regex_workaround.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/states.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/sub_match.hpp +54 -49
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/syntax_type.hpp +64 -62
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_iterator.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/u32regex_token_iterator.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/unicode_iterator.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v5/w32_regex_traits.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex_fwd.hpp +0 -4
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/deprecated_macros.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +2 -77
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +1 -64
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +0 -77
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_cxx20_constexpr.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +5 -28
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +41 -40
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +0 -18
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +31 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +34 -8
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/unordered/{unordered_printers.hpp → detail/unordered_printers.hpp} +34 -36
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +6 -49
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/nginx_module/ContentHandler.c +2 -0
- data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/install_agent_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +3 -5
- data/src/ruby_supportlib/phusion_passenger/config/installation_utils.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +5 -3
- data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +6 -13
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +29 -30
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -3
- data/src/ruby_supportlib/phusion_passenger/standalone/config_utils.rb +2 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/utils/terminal_choice_menu.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/vendor/crash_watch/gdb_controller.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +8 -8
- metadata +26 -99
- data/src/cxx_supportlib/vendor-modified/boost/align/aligned_alloc.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_posix.hpp +0 -41
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/aligned_alloc_sunos.hpp +0 -34
- data/src/cxx_supportlib/vendor-modified/boost/align/detail/is_alignment.hpp +0 -28
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +0 -68
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_enum.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_nothrow_default_constructible.hpp +0 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/remove_cv.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_on_address.hpp +0 -64
- data/src/cxx_supportlib/vendor-modified/boost/cerrno.hpp +0 -15
- data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/detail/select_type.hpp +0 -36
- data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/enable_if.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/internals.hpp +0 -35
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +0 -120
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_debug.cpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +0 -31
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/regex/config/cwchar.hpp +0 -207
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/static_mutex.hpp +0 -182
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +0 -797
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +0 -1598
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +0 -3174
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/c_regex_traits.hpp +0 -511
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/char_regex_traits.hpp +0 -81
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +0 -1237
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +0 -213
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/error_type.hpp +0 -59
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/icu.hpp +0 -1516
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +0 -54
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_category.hpp +0 -91
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/iterator_traits.hpp +0 -135
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +0 -161
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +0 -716
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/mem_block_cache.hpp +0 -183
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/object_cache.hpp +0 -171
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/pattern_except.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +0 -645
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +0 -1030
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +0 -1947
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +0 -1131
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/primary_transform.hpp +0 -146
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/protected_call.hpp +0 -83
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regbase.hpp +0 -180
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex.hpp +0 -166
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -1158
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_fwd.hpp +0 -73
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_grep.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -195
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_match.hpp +0 -382
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_merge.hpp +0 -93
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +0 -241
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_replace.hpp +0 -99
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_search.hpp +0 -217
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +0 -174
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -327
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +0 -189
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +0 -997
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +0 -237
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/states.hpp +0 -321
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +0 -516
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/syntax_type.hpp +0 -105
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +0 -360
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/unicode_iterator.hpp +0 -871
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +0 -1229
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +0 -79
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +0 -63
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +0 -88
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +0 -104
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +0 -72
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +0 -152
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +0 -185
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +0 -148
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +0 -170
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +0 -200
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +0 -194
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +0 -179
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +0 -147
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +0 -174
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +0 -141
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +0 -165
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +0 -163
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +0 -30
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +0 -69
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +0 -128
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +0 -96
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +0 -86
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +0 -94
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
4
|
* http://www.boost.org/LICENSE_1_0.txt)
|
|
5
5
|
*
|
|
6
|
-
* Copyright (c) 2020 Andrey Semashev
|
|
6
|
+
* Copyright (c) 2020-2025 Andrey Semashev
|
|
7
7
|
*/
|
|
8
8
|
/*!
|
|
9
9
|
* \file atomic/detail/futex.hpp
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
#pragma once
|
|
24
24
|
#endif
|
|
25
25
|
|
|
26
|
-
#if defined(__linux__)
|
|
26
|
+
#if defined(__linux__)
|
|
27
27
|
|
|
28
28
|
#include <sys/syscall.h>
|
|
29
29
|
|
|
@@ -33,16 +33,10 @@
|
|
|
33
33
|
// On some 32-bit targets (e.g. riscv32) SYS_futex is not defined and instead SYS_futex_time64 is implemented,
|
|
34
34
|
// which is equivalent to SYS_futex but uses 64-bit time_t.
|
|
35
35
|
#define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS_futex_time64
|
|
36
|
+
#define BOOST_ATOMIC_DETAIL_FUTEX_TIME64
|
|
36
37
|
#elif defined(__NR_futex)
|
|
37
38
|
// Some Android NDKs (Google NDK and older Crystax.NET NDK versions) don't define SYS_futex.
|
|
38
39
|
#define BOOST_ATOMIC_DETAIL_SYS_FUTEX __NR_futex
|
|
39
|
-
#elif defined(SYS___futex)
|
|
40
|
-
// NetBSD defines SYS___futex, which has slightly different parameters. Basically, it has decoupled timeout and val2 parameters:
|
|
41
|
-
// int __futex(int *addr1, int op, int val1, const struct timespec *timeout, int *addr2, int val2, int val3);
|
|
42
|
-
// https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/syscall.h
|
|
43
|
-
// http://bxr.su/NetBSD/sys/kern/sys_futex.c
|
|
44
|
-
#define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS___futex
|
|
45
|
-
#define BOOST_ATOMIC_DETAIL_NETBSD_FUTEX
|
|
46
40
|
#endif
|
|
47
41
|
|
|
48
42
|
#elif defined(__OpenBSD__)
|
|
@@ -52,51 +46,97 @@
|
|
|
52
46
|
// https://github.com/openbsd/src/commit/cafeb892b121ee89c39c2b940e8ccd6950f50009
|
|
53
47
|
|
|
54
48
|
#include <sys/param.h>
|
|
49
|
+
#include <cerrno>
|
|
55
50
|
|
|
56
51
|
#if OpenBSD >= 201711
|
|
57
52
|
#define BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX
|
|
58
|
-
#endif
|
|
53
|
+
#endif // OpenBSD >= 201711
|
|
54
|
+
|
|
55
|
+
#elif defined(__NETBSD__) || defined(__NetBSD__)
|
|
56
|
+
|
|
57
|
+
#include <sys/syscall.h>
|
|
58
|
+
|
|
59
|
+
#if defined(SYS___futex)
|
|
60
|
+
// NetBSD defines SYS___futex, which has slightly different parameters. Basically, it has decoupled timeout and val2 parameters:
|
|
61
|
+
// int __futex(int *addr1, int op, int val1, const struct timespec *timeout, int *addr2, int val2, int val3);
|
|
62
|
+
// https://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/sys/sys/syscall.h
|
|
63
|
+
// http://bxr.su/NetBSD/sys/kern/sys_futex.c
|
|
64
|
+
#define BOOST_ATOMIC_DETAIL_SYS_FUTEX SYS___futex
|
|
65
|
+
#define BOOST_ATOMIC_DETAIL_NETBSD_FUTEX
|
|
66
|
+
#endif // defined(SYS___futex)
|
|
59
67
|
|
|
60
68
|
#endif
|
|
61
69
|
|
|
62
70
|
#if defined(BOOST_ATOMIC_DETAIL_SYS_FUTEX) || defined(BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX)
|
|
63
71
|
|
|
64
|
-
#include <cstddef>
|
|
65
72
|
#if defined(__linux__)
|
|
66
73
|
#include <linux/futex.h>
|
|
67
74
|
#else
|
|
68
75
|
#include <sys/futex.h>
|
|
69
76
|
#endif
|
|
70
|
-
#include <
|
|
77
|
+
#include <time.h> // timespec
|
|
78
|
+
#include <cstdint>
|
|
71
79
|
#include <boost/atomic/detail/intptr.hpp>
|
|
72
80
|
#include <boost/atomic/detail/header.hpp>
|
|
73
81
|
|
|
74
82
|
#define BOOST_ATOMIC_DETAIL_HAS_FUTEX
|
|
75
83
|
|
|
84
|
+
// Note: On Android, futex.h is lacking many definitions, but the actual Linux kernel supports the API in full.
|
|
85
|
+
#if defined(FUTEX_WAIT_BITSET)
|
|
86
|
+
#define BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET FUTEX_WAIT_BITSET
|
|
87
|
+
#elif defined(__ANDROID__)
|
|
88
|
+
#define BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET 9
|
|
89
|
+
#endif
|
|
90
|
+
|
|
76
91
|
#if defined(FUTEX_PRIVATE_FLAG)
|
|
77
92
|
#define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG FUTEX_PRIVATE_FLAG
|
|
78
93
|
#elif defined(__ANDROID__)
|
|
79
|
-
// On Android, futex.h is lacking many definitions, but the actual Linux kernel supports the API in full.
|
|
80
94
|
#define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG 128
|
|
81
95
|
#else
|
|
82
96
|
#define BOOST_ATOMIC_DETAIL_FUTEX_PRIVATE_FLAG 0
|
|
83
97
|
#endif
|
|
84
98
|
|
|
99
|
+
#if defined(FUTEX_CLOCK_REALTIME)
|
|
100
|
+
#define BOOST_ATOMIC_DETAIL_FUTEX_CLOCK_REALTIME FUTEX_CLOCK_REALTIME
|
|
101
|
+
#elif defined(__ANDROID__)
|
|
102
|
+
#define BOOST_ATOMIC_DETAIL_FUTEX_CLOCK_REALTIME 256
|
|
103
|
+
#endif
|
|
104
|
+
|
|
85
105
|
namespace boost {
|
|
86
106
|
namespace atomics {
|
|
87
107
|
namespace detail {
|
|
88
108
|
|
|
109
|
+
#if defined(BOOST_ATOMIC_DETAIL_FUTEX_TIME64)
|
|
110
|
+
|
|
111
|
+
//! An equivalent of `timespec` that uses 64-bit members when the userland `timespec` is 32-bit
|
|
112
|
+
struct futex_timespec
|
|
113
|
+
{
|
|
114
|
+
std::int64_t tv_sec;
|
|
115
|
+
std::int64_t tv_nsec;
|
|
116
|
+
|
|
117
|
+
futex_timespec() = default;
|
|
118
|
+
explicit futex_timespec(::timespec ts) noexcept :
|
|
119
|
+
tv_sec(ts.tv_sec), tv_nsec(ts.tv_nsec)
|
|
120
|
+
{}
|
|
121
|
+
};
|
|
122
|
+
|
|
123
|
+
#else // defined(BOOST_ATOMIC_DETAIL_FUTEX_TIME64)
|
|
124
|
+
|
|
125
|
+
using futex_timespec = ::timespec;
|
|
126
|
+
|
|
127
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_FUTEX_TIME64)
|
|
128
|
+
|
|
89
129
|
//! Invokes an operation on the futex
|
|
90
|
-
BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const
|
|
130
|
+
BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const futex_timespec* timeout = nullptr, void* addr2 = nullptr, unsigned int val3 = 0u) noexcept
|
|
91
131
|
{
|
|
92
132
|
#if defined(BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX)
|
|
93
133
|
return ::futex
|
|
94
134
|
(
|
|
95
|
-
static_cast< volatile uint32_t* >(addr1),
|
|
135
|
+
static_cast< volatile std::uint32_t* >(addr1),
|
|
96
136
|
op,
|
|
97
137
|
static_cast< int >(val1),
|
|
98
|
-
|
|
99
|
-
static_cast< volatile uint32_t* >(addr2)
|
|
138
|
+
timeout,
|
|
139
|
+
static_cast< volatile std::uint32_t* >(addr2)
|
|
100
140
|
);
|
|
101
141
|
#elif defined(BOOST_ATOMIC_DETAIL_NETBSD_FUTEX)
|
|
102
142
|
// Pass 0 in val2.
|
|
@@ -107,71 +147,92 @@ BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, const
|
|
|
107
147
|
}
|
|
108
148
|
|
|
109
149
|
//! Invokes an operation on the futex
|
|
110
|
-
BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, unsigned int val2, void* addr2 =
|
|
150
|
+
BOOST_FORCEINLINE int futex_invoke(void* addr1, int op, unsigned int val1, unsigned int val2, void* addr2 = nullptr, unsigned int val3 = 0u) noexcept
|
|
111
151
|
{
|
|
112
152
|
#if defined(BOOST_ATOMIC_DETAIL_OPENBSD_FUTEX)
|
|
113
153
|
return ::futex
|
|
114
154
|
(
|
|
115
|
-
static_cast< volatile uint32_t* >(addr1),
|
|
155
|
+
static_cast< volatile std::uint32_t* >(addr1),
|
|
116
156
|
op,
|
|
117
157
|
static_cast< int >(val1),
|
|
118
|
-
reinterpret_cast< const
|
|
119
|
-
static_cast< volatile uint32_t* >(addr2)
|
|
158
|
+
reinterpret_cast< const futex_timespec* >(static_cast< atomics::detail::uintptr_t >(val2)),
|
|
159
|
+
static_cast< volatile std::uint32_t* >(addr2)
|
|
120
160
|
);
|
|
121
161
|
#elif defined(BOOST_ATOMIC_DETAIL_NETBSD_FUTEX)
|
|
122
|
-
// Pass
|
|
123
|
-
return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< void* >(
|
|
162
|
+
// Pass nullptr in timeout.
|
|
163
|
+
return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< void* >(nullptr), addr2, val2, val3);
|
|
124
164
|
#else
|
|
125
165
|
return ::syscall(BOOST_ATOMIC_DETAIL_SYS_FUTEX, addr1, op, val1, static_cast< atomics::detail::uintptr_t >(val2), addr2, val3);
|
|
126
166
|
#endif
|
|
127
167
|
}
|
|
128
168
|
|
|
129
169
|
//! Checks that the value \c pval is \c expected and blocks
|
|
130
|
-
BOOST_FORCEINLINE int futex_wait(void* pval, unsigned int expected)
|
|
170
|
+
BOOST_FORCEINLINE int futex_wait(void* pval, unsigned int expected, int flags) noexcept
|
|
131
171
|
{
|
|
132
|
-
|
|
172
|
+
int res = futex_invoke(pval, FUTEX_WAIT | flags, expected);
|
|
173
|
+
#if defined(OpenBSD) && (OpenBSD < 202111)
|
|
174
|
+
// In older OpenBSD versions, futex(2) returned error code directly instead of setting errno and returning -1.
|
|
175
|
+
// This was fixed in OpenBSD 7.0 (https://github.com/openbsd/src/commit/3288ea8fbfe504db25b57dd18b664a1aa377e4bf).
|
|
176
|
+
// This primarily affects FUTEX_WAIT. For FUTEX_WAKE and FUTEX_REQUEUE the returned value may be positive
|
|
177
|
+
// on successful completion of the call and there seem to be no errors that can be returned. Other functions
|
|
178
|
+
// are not supported on OpenBSD 7.0 and older.
|
|
179
|
+
if (res > 0)
|
|
180
|
+
{
|
|
181
|
+
errno = res;
|
|
182
|
+
res = -1;
|
|
183
|
+
}
|
|
184
|
+
#endif // defined(OpenBSD) && (OpenBSD < 202111)
|
|
185
|
+
return res;
|
|
133
186
|
}
|
|
134
187
|
|
|
135
|
-
//! Checks that the value \c pval is \c expected and blocks
|
|
136
|
-
BOOST_FORCEINLINE int
|
|
188
|
+
//! Checks that the value \c pval is \c expected and blocks until timeout
|
|
189
|
+
BOOST_FORCEINLINE int futex_wait_for(void* pval, unsigned int expected, futex_timespec const& timeout, int flags) noexcept
|
|
137
190
|
{
|
|
138
|
-
|
|
191
|
+
int res = futex_invoke(pval, FUTEX_WAIT | flags, expected, &timeout);
|
|
192
|
+
#if defined(OpenBSD) && (OpenBSD < 202111)
|
|
193
|
+
// See the comment in futex_wait
|
|
194
|
+
if (res > 0)
|
|
195
|
+
{
|
|
196
|
+
errno = res;
|
|
197
|
+
res = -1;
|
|
198
|
+
}
|
|
199
|
+
#endif // defined(OpenBSD) && (OpenBSD < 202111)
|
|
200
|
+
return res;
|
|
139
201
|
}
|
|
140
202
|
|
|
141
|
-
|
|
142
|
-
BOOST_FORCEINLINE int futex_signal(void* pval, unsigned int count = 1u) BOOST_NOEXCEPT
|
|
143
|
-
{
|
|
144
|
-
return futex_invoke(pval, FUTEX_WAKE, count);
|
|
145
|
-
}
|
|
203
|
+
#if defined(BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET)
|
|
146
204
|
|
|
147
|
-
//!
|
|
148
|
-
BOOST_FORCEINLINE int
|
|
205
|
+
//! Checks that the value \c pval is \c expected and blocks until timeout
|
|
206
|
+
BOOST_FORCEINLINE int futex_wait_until(void* pval, unsigned int expected, futex_timespec const& timeout, int flags) noexcept
|
|
149
207
|
{
|
|
150
|
-
return futex_invoke(pval,
|
|
208
|
+
return futex_invoke(pval, BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET | flags, expected, &timeout, nullptr, ~static_cast< unsigned int >(0u));
|
|
151
209
|
}
|
|
152
210
|
|
|
153
|
-
|
|
154
|
-
BOOST_FORCEINLINE int futex_broadcast(void* pval) BOOST_NOEXCEPT
|
|
155
|
-
{
|
|
156
|
-
return futex_signal(pval, (~static_cast< unsigned int >(0u)) >> 1);
|
|
157
|
-
}
|
|
211
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_FUTEX_WAIT_BITSET)
|
|
158
212
|
|
|
159
|
-
//! Wakes
|
|
160
|
-
BOOST_FORCEINLINE int
|
|
213
|
+
//! Wakes the specified number of threads waiting on the futex
|
|
214
|
+
BOOST_FORCEINLINE int futex_signal(void* pval, int flags, unsigned int count = 1u) noexcept
|
|
161
215
|
{
|
|
162
|
-
return
|
|
216
|
+
return futex_invoke(pval, FUTEX_WAKE | flags, count);
|
|
163
217
|
}
|
|
164
218
|
|
|
165
|
-
//! Wakes
|
|
166
|
-
BOOST_FORCEINLINE int
|
|
219
|
+
//! Wakes all threads waiting on the futex
|
|
220
|
+
BOOST_FORCEINLINE int futex_broadcast(void* pval, int flags) noexcept
|
|
167
221
|
{
|
|
168
|
-
return
|
|
222
|
+
return futex_signal(pval, flags, (~static_cast< unsigned int >(0u)) >> 1u);
|
|
169
223
|
}
|
|
170
224
|
|
|
171
225
|
//! Wakes the wake_count threads waiting on the futex pval1 and requeues up to requeue_count of the blocked threads onto another futex pval2
|
|
172
|
-
BOOST_FORCEINLINE int
|
|
226
|
+
BOOST_FORCEINLINE int futex_requeue
|
|
227
|
+
(
|
|
228
|
+
void* pval1,
|
|
229
|
+
void* pval2,
|
|
230
|
+
int flags,
|
|
231
|
+
unsigned int wake_count = 1u,
|
|
232
|
+
unsigned int requeue_count = (~static_cast< unsigned int >(0u)) >> 1u
|
|
233
|
+
) noexcept
|
|
173
234
|
{
|
|
174
|
-
return futex_invoke(pval1, FUTEX_REQUEUE |
|
|
235
|
+
return futex_invoke(pval1, FUTEX_REQUEUE | flags, wake_count, requeue_count, pval2);
|
|
175
236
|
}
|
|
176
237
|
|
|
177
238
|
} // namespace detail
|
data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp
CHANGED
|
@@ -50,7 +50,7 @@ namespace detail {
|
|
|
50
50
|
* propagate constants even when functions are marked with BOOST_FORCEINLINE. In this case
|
|
51
51
|
* all atomic operaions will be executed with seq_cst semantics.
|
|
52
52
|
*/
|
|
53
|
-
BOOST_FORCEINLINE
|
|
53
|
+
BOOST_FORCEINLINE constexpr int convert_memory_order_to_gcc(memory_order order) noexcept
|
|
54
54
|
{
|
|
55
55
|
return (order == memory_order_relaxed ? __ATOMIC_RELAXED : (order == memory_order_consume ? __ATOMIC_CONSUME :
|
|
56
56
|
(order == memory_order_acquire ? __ATOMIC_ACQUIRE : (order == memory_order_release ? __ATOMIC_RELEASE :
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 Andrey Semashev
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file atomic/has_posix_clock_traits.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header contains utilities for working with \c posix_clock_traits.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ATOMIC_DETAIL_HAS_POSIX_CLOCK_TRAITS_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ATOMIC_DETAIL_HAS_POSIX_CLOCK_TRAITS_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <sys/types.h> // clockid_t
|
|
18
|
+
#include <type_traits>
|
|
19
|
+
#include <boost/atomic/posix_clock_traits_fwd.hpp>
|
|
20
|
+
#include <boost/atomic/detail/config.hpp>
|
|
21
|
+
#include <boost/atomic/detail/header.hpp>
|
|
22
|
+
|
|
23
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
24
|
+
#pragma once
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace atomics {
|
|
29
|
+
namespace detail {
|
|
30
|
+
|
|
31
|
+
template< typename Clock >
|
|
32
|
+
struct has_posix_clock_traits_impl
|
|
33
|
+
{
|
|
34
|
+
template< typename T, clockid_t = posix_clock_traits< T >::clock_id >
|
|
35
|
+
static std::true_type check_posix_clock_traits_clock_id(T*);
|
|
36
|
+
static std::false_type check_posix_clock_traits_clock_id(...);
|
|
37
|
+
|
|
38
|
+
using type = decltype(has_posix_clock_traits_impl< Clock >::check_posix_clock_traits_clock_id(static_cast< Clock* >(nullptr)));
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
//! Checks if there exists a specialization of \c posix_clock_traits for \c Clock
|
|
42
|
+
template< typename Clock >
|
|
43
|
+
using has_posix_clock_traits = typename has_posix_clock_traits_impl< Clock >::type;
|
|
44
|
+
|
|
45
|
+
} // namespace detail
|
|
46
|
+
} // namespace atomics
|
|
47
|
+
} // namespace boost
|
|
48
|
+
|
|
49
|
+
#include <boost/atomic/detail/footer.hpp>
|
|
50
|
+
|
|
51
|
+
#endif // BOOST_ATOMIC_DETAIL_HAS_POSIX_CLOCK_TRAITS_HPP_INCLUDED_
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
#if defined(__SIZEOF_POINTER__)
|
|
40
40
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER __SIZEOF_POINTER__
|
|
41
41
|
#elif defined(_MSC_VER)
|
|
42
|
-
#if defined(_M_AMD64) || defined(_M_ARM64) || defined(_M_IA64)
|
|
42
|
+
#if defined(_M_AMD64) || defined(_M_ARM64) || defined(_M_ARM64EC) || defined(_M_IA64)
|
|
43
43
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8
|
|
44
44
|
#else
|
|
45
45
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4
|
|
@@ -52,45 +52,40 @@
|
|
|
52
52
|
|
|
53
53
|
// Try to deduce sizes from limits
|
|
54
54
|
#include <limits.h>
|
|
55
|
-
#
|
|
56
|
-
#if __has_include(<stdint.h>)
|
|
57
|
-
#include <stdint.h>
|
|
58
|
-
#endif
|
|
59
|
-
#endif
|
|
60
|
-
#include <boost/cstdint.hpp>
|
|
55
|
+
#include <cstdint>
|
|
61
56
|
|
|
62
57
|
#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT)
|
|
63
|
-
#if (USHRT_MAX
|
|
58
|
+
#if (USHRT_MAX == 0xff)
|
|
64
59
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 1
|
|
65
|
-
#elif (USHRT_MAX
|
|
60
|
+
#elif (USHRT_MAX == 0xffff)
|
|
66
61
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 2
|
|
67
|
-
#elif (USHRT_MAX
|
|
62
|
+
#elif (USHRT_MAX == 0xffffffff)
|
|
68
63
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 4
|
|
69
|
-
#elif (USHRT_MAX
|
|
64
|
+
#elif (USHRT_MAX == UINT64_C(0xffffffffffffffff))
|
|
70
65
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_SHORT 8
|
|
71
66
|
#endif
|
|
72
67
|
#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT)
|
|
73
68
|
|
|
74
69
|
#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT)
|
|
75
|
-
#if (UINT_MAX
|
|
70
|
+
#if (UINT_MAX == 0xff)
|
|
76
71
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 1
|
|
77
|
-
#elif (UINT_MAX
|
|
72
|
+
#elif (UINT_MAX == 0xffff)
|
|
78
73
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 2
|
|
79
|
-
#elif (UINT_MAX
|
|
74
|
+
#elif (UINT_MAX == 0xffffffff)
|
|
80
75
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 4
|
|
81
|
-
#elif (UINT_MAX
|
|
76
|
+
#elif (UINT_MAX == UINT64_C(0xffffffffffffffff))
|
|
82
77
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_INT 8
|
|
83
78
|
#endif
|
|
84
79
|
#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT)
|
|
85
80
|
|
|
86
81
|
#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG)
|
|
87
|
-
#if (ULONG_MAX
|
|
82
|
+
#if (ULONG_MAX == 0xff)
|
|
88
83
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 1
|
|
89
|
-
#elif (ULONG_MAX
|
|
84
|
+
#elif (ULONG_MAX == 0xffff)
|
|
90
85
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 2
|
|
91
|
-
#elif (ULONG_MAX
|
|
86
|
+
#elif (ULONG_MAX == 0xffffffff)
|
|
92
87
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 4
|
|
93
|
-
#elif (ULONG_MAX
|
|
88
|
+
#elif (ULONG_MAX == UINT64_C(0xffffffffffffffff))
|
|
94
89
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LONG 8
|
|
95
90
|
#endif
|
|
96
91
|
#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG)
|
|
@@ -100,7 +95,7 @@
|
|
|
100
95
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8
|
|
101
96
|
#else
|
|
102
97
|
|
|
103
|
-
// The list of the non-standard macros (the ones except ULLONG_MAX) is taken from cstdint.hpp
|
|
98
|
+
// The list of the non-standard macros (the ones except ULLONG_MAX) is taken from boost/cstdint.hpp
|
|
104
99
|
#if defined(ULLONG_MAX)
|
|
105
100
|
#define BOOST_ATOMIC_DETAIL_ULLONG_MAX ULLONG_MAX
|
|
106
101
|
#elif defined(ULONG_LONG_MAX)
|
|
@@ -111,13 +106,13 @@
|
|
|
111
106
|
#define BOOST_ATOMIC_DETAIL_ULLONG_MAX _LLONG_MAX
|
|
112
107
|
#endif
|
|
113
108
|
|
|
114
|
-
#if (BOOST_ATOMIC_DETAIL_ULLONG_MAX
|
|
109
|
+
#if (BOOST_ATOMIC_DETAIL_ULLONG_MAX == 0xff)
|
|
115
110
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 1
|
|
116
|
-
#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX
|
|
111
|
+
#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX == 0xffff)
|
|
117
112
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 2
|
|
118
|
-
#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX
|
|
113
|
+
#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX == 0xffffffff)
|
|
119
114
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 4
|
|
120
|
-
#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX
|
|
115
|
+
#elif (BOOST_ATOMIC_DETAIL_ULLONG_MAX == UINT64_C(0xffffffffffffffff))
|
|
121
116
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_LLONG 8
|
|
122
117
|
#endif
|
|
123
118
|
|
|
@@ -125,11 +120,11 @@
|
|
|
125
120
|
#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG)
|
|
126
121
|
|
|
127
122
|
#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && defined(UINTPTR_MAX)
|
|
128
|
-
#if (UINTPTR_MAX
|
|
123
|
+
#if (UINTPTR_MAX == 0xffff)
|
|
129
124
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 2
|
|
130
|
-
#elif (UINTPTR_MAX
|
|
125
|
+
#elif (UINTPTR_MAX == 0xffffffff)
|
|
131
126
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4
|
|
132
|
-
#elif (UINTPTR_MAX
|
|
127
|
+
#elif (UINTPTR_MAX == UINT64_C(0xffffffffffffffff))
|
|
133
128
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8
|
|
134
129
|
#endif
|
|
135
130
|
#endif // !defined(BOOST_ATOMIC_DETAIL_SIZEOF_POINTER) && defined(UINTPTR_MAX)
|
|
@@ -139,18 +134,17 @@
|
|
|
139
134
|
#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T)
|
|
140
135
|
|
|
141
136
|
#include <wchar.h>
|
|
142
|
-
#include <boost/cstdint.hpp>
|
|
143
137
|
|
|
144
138
|
#if defined(_MSC_VER) && (_MSC_VER <= 1310 || defined(UNDER_CE) && _MSC_VER <= 1500)
|
|
145
139
|
// MSVC 7.1 and MSVC 8 (arm) define WCHAR_MAX to a value not suitable for constant expressions
|
|
146
140
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2
|
|
147
|
-
#elif (WCHAR_MAX
|
|
141
|
+
#elif (WCHAR_MAX == 0xff) || (WCHAR_MAX == 0x7f)
|
|
148
142
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 1
|
|
149
|
-
#elif (WCHAR_MAX
|
|
143
|
+
#elif (WCHAR_MAX == 0xffff) || (WCHAR_MAX == 0x7fff)
|
|
150
144
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2
|
|
151
|
-
#elif (WCHAR_MAX
|
|
145
|
+
#elif (WCHAR_MAX == 0xffffffff) || (WCHAR_MAX == 0x7fffffff)
|
|
152
146
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 4
|
|
153
|
-
#elif (WCHAR_MAX
|
|
147
|
+
#elif (WCHAR_MAX == UINT64_C(0xffffffffffffffff)) || (WCHAR_MAX == INT64_C(0x7fffffffffffffff))
|
|
154
148
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 8
|
|
155
149
|
#endif
|
|
156
150
|
#endif
|
|
@@ -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/integral_conversions.hpp
|
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
#ifndef BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_
|
|
15
15
|
#define BOOST_ATOMIC_DETAIL_INTEGRAL_CONVERSIONS_HPP_INCLUDED_
|
|
16
16
|
|
|
17
|
+
#include <type_traits>
|
|
17
18
|
#include <boost/atomic/detail/config.hpp>
|
|
18
19
|
#include <boost/atomic/detail/bitwise_cast.hpp>
|
|
19
|
-
#include <boost/atomic/detail/type_traits/integral_constant.hpp>
|
|
20
20
|
#include <boost/atomic/detail/type_traits/is_signed.hpp>
|
|
21
21
|
#include <boost/atomic/detail/type_traits/make_signed.hpp>
|
|
22
22
|
#include <boost/atomic/detail/type_traits/make_unsigned.hpp>
|
|
@@ -31,7 +31,7 @@ namespace atomics {
|
|
|
31
31
|
namespace detail {
|
|
32
32
|
|
|
33
33
|
template< typename Output, typename Input >
|
|
34
|
-
BOOST_FORCEINLINE Output zero_extend_impl(Input input,
|
|
34
|
+
BOOST_FORCEINLINE Output zero_extend_impl(Input input, std::true_type) noexcept
|
|
35
35
|
{
|
|
36
36
|
// Note: If we are casting with truncation or to the same-sized output, don't cause signed integer overflow by this chain of conversions
|
|
37
37
|
return atomics::detail::bitwise_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Output >::type >(
|
|
@@ -39,64 +39,64 @@ BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::true_typ
|
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
template< typename Output, typename Input >
|
|
42
|
-
BOOST_FORCEINLINE Output zero_extend_impl(Input input,
|
|
42
|
+
BOOST_FORCEINLINE Output zero_extend_impl(Input input, std::false_type) noexcept
|
|
43
43
|
{
|
|
44
44
|
return static_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Input >::type >(input));
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
//! Zero-extends or truncates (wraps) input operand to fit in the output type
|
|
48
48
|
template< typename Output, typename Input >
|
|
49
|
-
BOOST_FORCEINLINE Output zero_extend(Input input)
|
|
49
|
+
BOOST_FORCEINLINE Output zero_extend(Input input) noexcept
|
|
50
50
|
{
|
|
51
|
-
return atomics::detail::zero_extend_impl< Output >(input,
|
|
51
|
+
return atomics::detail::zero_extend_impl< Output >(input, std::integral_constant< bool, atomics::detail::is_signed< Output >::value >());
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
//! Truncates (wraps) input operand to fit in the output type
|
|
55
55
|
template< typename Output, typename Input >
|
|
56
|
-
BOOST_FORCEINLINE Output integral_truncate(Input input)
|
|
56
|
+
BOOST_FORCEINLINE Output integral_truncate(Input input) noexcept
|
|
57
57
|
{
|
|
58
58
|
// zero_extend does the truncation
|
|
59
59
|
return atomics::detail::zero_extend< Output >(input);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
62
|
template< typename Output, typename Input >
|
|
63
|
-
BOOST_FORCEINLINE Output sign_extend_impl(Input input,
|
|
63
|
+
BOOST_FORCEINLINE Output sign_extend_impl(Input input, std::true_type) noexcept
|
|
64
64
|
{
|
|
65
65
|
return atomics::detail::integral_truncate< Output >(input);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
template< typename Output, typename Input >
|
|
69
|
-
BOOST_FORCEINLINE Output sign_extend_impl(Input input,
|
|
69
|
+
BOOST_FORCEINLINE Output sign_extend_impl(Input input, std::false_type) noexcept
|
|
70
70
|
{
|
|
71
71
|
return static_cast< Output >(atomics::detail::bitwise_cast< typename atomics::detail::make_signed< Input >::type >(input));
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
//! Sign-extends or truncates (wraps) input operand to fit in the output type
|
|
75
75
|
template< typename Output, typename Input >
|
|
76
|
-
BOOST_FORCEINLINE Output sign_extend(Input input)
|
|
76
|
+
BOOST_FORCEINLINE Output sign_extend(Input input) noexcept
|
|
77
77
|
{
|
|
78
|
-
return atomics::detail::sign_extend_impl< Output >(input,
|
|
78
|
+
return atomics::detail::sign_extend_impl< Output >(input, std::integral_constant< bool, sizeof(Output) <= sizeof(Input) >());
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
//! Sign-extends or truncates (wraps) input operand to fit in the output type
|
|
82
82
|
template< typename Output, typename Input >
|
|
83
|
-
BOOST_FORCEINLINE Output integral_extend(Input input,
|
|
83
|
+
BOOST_FORCEINLINE Output integral_extend(Input input, std::true_type) noexcept
|
|
84
84
|
{
|
|
85
85
|
return atomics::detail::sign_extend< Output >(input);
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
//! Zero-extends or truncates (wraps) input operand to fit in the output type
|
|
89
89
|
template< typename Output, typename Input >
|
|
90
|
-
BOOST_FORCEINLINE Output integral_extend(Input input,
|
|
90
|
+
BOOST_FORCEINLINE Output integral_extend(Input input, std::false_type) noexcept
|
|
91
91
|
{
|
|
92
92
|
return atomics::detail::zero_extend< Output >(input);
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
//! Sign- or zero-extends or truncates (wraps) input operand to fit in the output type
|
|
96
96
|
template< bool Signed, typename Output, typename Input >
|
|
97
|
-
BOOST_FORCEINLINE Output integral_extend(Input input)
|
|
97
|
+
BOOST_FORCEINLINE Output integral_extend(Input input) noexcept
|
|
98
98
|
{
|
|
99
|
-
return atomics::detail::integral_extend< Output >(input,
|
|
99
|
+
return atomics::detail::integral_extend< Output >(input, std::integral_constant< bool, Signed >());
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
} // namespace detail
|