passenger 6.0.23 → 6.0.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +26 -1
- data/Rakefile +7 -3
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +17 -2
- data/build/apache2.rb +1 -1
- data/build/basics.rb +10 -4
- data/build/cxx_tests.rb +18 -7
- data/build/support/cxx_dependency_map.rb +40 -6
- data/build/test_basics.rb +4 -12
- data/package.json +1 -1
- data/passenger.gemspec +1 -1
- data/src/agent/Core/ApplicationPool/Group/InitializationAndShutdown.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +10 -2
- data/src/agent/Core/ApplicationPool/Group/LifetimeAndBasics.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Miscellaneous.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +9 -0
- data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +63 -50
- data/src/agent/Core/ApplicationPool/Group/SessionManagement.cpp +19 -9
- data/src/agent/Core/ApplicationPool/Group/SpawningAndRestarting.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group/Verification.cpp +8 -0
- data/src/agent/Core/ApplicationPool/Group.h +15 -5
- data/src/agent/Core/ApplicationPool/Pool/AnalyticsCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GeneralUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/GroupUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/Miscellaneous.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +5 -0
- data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +11 -1
- data/src/agent/Core/ApplicationPool/Pool.h +0 -2
- data/src/agent/Core/ApplicationPool/Process.h +22 -6
- data/src/agent/Core/ApplicationPool/Session.h +6 -1
- data/src/agent/Core/Config.h +7 -3
- data/src/agent/Core/Controller/Config.h +1 -1
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -53
- data/src/agent/Core/SpawningKit/Handshake/Session.h +3 -0
- data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
- data/src/agent/Core/SpawningKit/SmartSpawner.h +6 -2
- data/src/agent/Core/SpawningKit/Spawner.h +4 -0
- data/src/agent/Shared/Fundamentals/AbortHandler.cpp +88 -9
- data/src/agent/Shared/Fundamentals/AbortHandler.h +2 -0
- data/src/agent/Shared/Fundamentals/Initialization.cpp +9 -3
- data/src/agent/Shared/Fundamentals/Initialization.h +3 -3
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +6 -7
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h.cxxcodebuilder +3 -0
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +2 -1
- data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h.cxxcodebuilder +2 -1
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/DataStructures/StringMap.h +0 -1
- data/src/cxx_supportlib/FileTools/PathManip.cpp +1 -1
- data/src/cxx_supportlib/SafeLibev.h +1 -3
- data/src/cxx_supportlib/ServerKit/Hooks.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpHeaderParser.h +0 -1
- data/src/cxx_supportlib/ServerKit/HttpServer.h +15 -10
- data/src/cxx_supportlib/ServerKit/Server.h +0 -6
- data/src/cxx_supportlib/Utils/AsyncSignalSafeUtils.h +2 -0
- data/src/cxx_supportlib/Utils/SpeedMeter.h +0 -3
- data/src/cxx_supportlib/oxt/implementation.cpp +11 -0
- data/src/cxx_supportlib/oxt/system_calls.cpp +10 -3
- data/src/cxx_supportlib/oxt/thread.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/as_tuple.hpp +35 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_immediate_executor.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/associator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +74 -68
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_random_access_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_readable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_file.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_writable_pipe.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_allocator.hpp +88 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_cancellation_slot.hpp +91 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +105 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_immediate_executor.hpp +90 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer_registration.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_after.hpp +303 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/cancel_at.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl/co_composed.hpp → co_composed.hpp} +208 -61
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +10 -201
- data/src/cxx_supportlib/vendor-modified/boost/asio/composed.hpp +415 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +214 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/default_completion_token.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/deferred.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_message.hpp → detail/completion_message.hpp} +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_payload.hpp → detail/completion_payload.hpp} +30 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/detail/channel_handler.hpp → detail/completion_payload_handler.hpp} +15 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +26 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +14 -118
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +36 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +7 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +44 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/initiation_base.hpp +64 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +20 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +23 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timed_cancel_op.hpp +363 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +29 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/basic_concurrent_channel.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_composed.hpp +2 -114
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_receive_op.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_functions.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_send_op.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/channel_service.hpp +17 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/coro_promise_allocator.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/impl/channel_service.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detail/partial_promise.hpp +3 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/as_single.hpp +12 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/coro.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/parallel_group.hpp +38 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/promise.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_coro.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/use_promise.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/immediate.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/append.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/as_tuple.hpp +45 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_after.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/cancel_at.hpp +270 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +60 -166
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/consign.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/prepend.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +26 -177
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +16 -82
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +13 -286
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/redirect_error.hpp +55 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +26 -185
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +16 -87
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +12 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +127 -28
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +70 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +114 -36
- data/src/cxx_supportlib/vendor-modified/boost/asio/redirect_error.hpp +43 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/registered_buffer.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +147 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +74 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +42 -11
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +15 -37
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +151 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +611 -102
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +47 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocation_type.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +14 -14
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +55 -23
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/function_detector.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_pair.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +96 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +19 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_resource.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +86 -52
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/devector.hpp +145 -65
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +105 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +30 -22
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +19 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +31 -24
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +45 -43
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +45 -33
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +222 -73
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/minstd_rand.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/detail/string_view.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +53 -5
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_in_range.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/span.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/type_name.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +22 -34
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +141 -38
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/algorithm.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hash.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +22 -17
- data/src/cxx_supportlib/vendor-modified/boost/libs/random/src/random_device.cpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/config_begin.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/launder.hpp +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/workaround.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/mp11/version.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/requires_cxx11.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category_message.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set.hpp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/concurrent_flat_set_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fca.hpp +22 -6
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/concurrent_table.hpp +38 -10
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/core.hpp +111 -2
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/cumulative_stats.hpp +177 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/foa/table.hpp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/unordered/hash_traits.hpp +33 -7
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_flat_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_map_fwd.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_node_set_fwd.hpp +14 -0
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +17 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +1 -43
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/ruby_supportlib/phusion_passenger/config/compile_nginx_engine_command.rb +6 -2
- data/src/ruby_supportlib/phusion_passenger/config/install_standalone_runtime_command.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/config/nginx_engine_compiler.rb +12 -4
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +5 -1
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +21 -8
@@ -76,7 +76,7 @@ class private_adaptive_node_pool
|
|
76
76
|
private_adaptive_node_pool &operator=(const private_adaptive_node_pool &);
|
77
77
|
|
78
78
|
public:
|
79
|
-
|
79
|
+
BOOST_STATIC_CONSTEXPR std::size_t nodes_per_block = NodesPerBlock;
|
80
80
|
|
81
81
|
//!Constructor. Never throws
|
82
82
|
private_adaptive_node_pool()
|
@@ -49,10 +49,10 @@ namespace container {
|
|
49
49
|
|
50
50
|
namespace adaptive_pool_flag {
|
51
51
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
52
|
+
BOOST_CONTAINER_CONSTANT_VAR unsigned int none = 0u;
|
53
|
+
BOOST_CONTAINER_CONSTANT_VAR unsigned int align_only = 1u << 0u;
|
54
|
+
BOOST_CONTAINER_CONSTANT_VAR unsigned int size_ordered = 1u << 1u;
|
55
|
+
BOOST_CONTAINER_CONSTANT_VAR unsigned int address_ordered = 1u << 2u;
|
56
56
|
|
57
57
|
} //namespace adaptive_pool_flag{
|
58
58
|
|
@@ -213,11 +213,11 @@ template<class MultiallocationChain, class VoidPointer, class SizeType, unsigned
|
|
213
213
|
struct adaptive_pool_types
|
214
214
|
{
|
215
215
|
typedef VoidPointer void_pointer;
|
216
|
-
|
216
|
+
BOOST_STATIC_CONSTEXPR unsigned ordered = (Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered));
|
217
217
|
typedef block_container_traits<VoidPointer, SizeType, ordered> block_container_traits_t;
|
218
218
|
typedef typename block_container_traits_t::hook_t hook_t;
|
219
219
|
typedef hdr_offset_holder_t<SizeType> hdr_offset_holder;
|
220
|
-
|
220
|
+
BOOST_STATIC_CONSTEXPR unsigned int order_flags = Flags & (adaptive_pool_flag::size_ordered | adaptive_pool_flag::address_ordered);
|
221
221
|
typedef MultiallocationChain free_nodes_t;
|
222
222
|
|
223
223
|
struct block_info_t
|
@@ -253,11 +253,11 @@ template< std::size_t alignment
|
|
253
253
|
, std::size_t overhead_percent>
|
254
254
|
struct candidate_power_of_2_ct_helper
|
255
255
|
{
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
256
|
+
BOOST_STATIC_CONSTEXPR std::size_t hdr_subblock_elements_alone = (alignment - hdr_size - payload_per_allocation)/real_node_size;
|
257
|
+
BOOST_STATIC_CONSTEXPR std::size_t hdr_subblock_elements_first = (alignment - hdr_size - payload_per_allocation)/real_node_size;
|
258
|
+
BOOST_STATIC_CONSTEXPR std::size_t elements_per_b_subblock_mid = (alignment - hdr_offset_size)/real_node_size;
|
259
|
+
BOOST_STATIC_CONSTEXPR std::size_t elements_per_b_subblock_end = (alignment - hdr_offset_size - payload_per_allocation)/real_node_size;
|
260
|
+
BOOST_STATIC_CONSTEXPR std::size_t num_b_subblock =
|
261
261
|
hdr_subblock_elements_alone >= min_elements_per_block
|
262
262
|
? 0
|
263
263
|
: ( ((hdr_subblock_elements_first + elements_per_b_subblock_end) >= min_elements_per_block)
|
@@ -266,18 +266,18 @@ struct candidate_power_of_2_ct_helper
|
|
266
266
|
)
|
267
267
|
;
|
268
268
|
|
269
|
-
|
269
|
+
BOOST_STATIC_CONSTEXPR std::size_t num_b_subblock_mid = (num_b_subblock > 1) ? (num_b_subblock - 1) : 0;
|
270
270
|
|
271
|
-
|
271
|
+
BOOST_STATIC_CONSTEXPR std::size_t total_nodes = (num_b_subblock == 0)
|
272
272
|
? hdr_subblock_elements_alone
|
273
273
|
: ( (num_b_subblock == 1)
|
274
274
|
? (hdr_subblock_elements_first + elements_per_b_subblock_end)
|
275
275
|
: (hdr_subblock_elements_first + num_b_subblock_mid*elements_per_b_subblock_mid + elements_per_b_subblock_end)
|
276
276
|
)
|
277
277
|
;
|
278
|
-
|
279
|
-
|
280
|
-
|
278
|
+
BOOST_STATIC_CONSTEXPR std::size_t total_data = total_nodes*real_node_size;
|
279
|
+
BOOST_STATIC_CONSTEXPR std::size_t total_size = alignment*(num_b_subblock+1);
|
280
|
+
BOOST_STATIC_CONSTEXPR bool overhead_satisfied = (total_size - total_data)*100/total_size < overhead_percent;
|
281
281
|
};
|
282
282
|
|
283
283
|
template< std::size_t initial_alignment
|
@@ -299,7 +299,7 @@ struct candidate_power_of_2_ct
|
|
299
299
|
, hdr_offset_size
|
300
300
|
, overhead_percent> helper_t;
|
301
301
|
|
302
|
-
|
302
|
+
BOOST_STATIC_CONSTEXPR std::size_t candidate_power_of_2 = initial_alignment << std::size_t(!helper_t::overhead_satisfied);
|
303
303
|
|
304
304
|
typedef typename candidate_power_of_2_ct
|
305
305
|
< candidate_power_of_2
|
@@ -312,9 +312,9 @@ struct candidate_power_of_2_ct
|
|
312
312
|
, !helper_t::overhead_satisfied
|
313
313
|
>::type type;
|
314
314
|
|
315
|
-
|
316
|
-
|
317
|
-
|
315
|
+
BOOST_STATIC_CONSTEXPR std::size_t alignment = type::alignment;
|
316
|
+
BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = type::num_subblocks;
|
317
|
+
BOOST_STATIC_CONSTEXPR std::size_t real_num_node = type::real_num_node;
|
318
318
|
};
|
319
319
|
|
320
320
|
template< std::size_t initial_alignment
|
@@ -354,9 +354,9 @@ struct candidate_power_of_2_ct
|
|
354
354
|
, hdr_offset_size
|
355
355
|
, overhead_percent> helper_t;
|
356
356
|
|
357
|
-
|
358
|
-
|
359
|
-
|
357
|
+
BOOST_STATIC_CONSTEXPR std::size_t alignment = initial_alignment;
|
358
|
+
BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = helper_t::num_b_subblock+1;
|
359
|
+
BOOST_STATIC_CONSTEXPR std::size_t real_num_node = helper_t::total_nodes;
|
360
360
|
};
|
361
361
|
|
362
362
|
/////////////////////////////////////////////
|
@@ -429,13 +429,13 @@ class private_adaptive_node_pool_impl_common
|
|
429
429
|
typedef typename SegmentManagerBase::size_type size_type;
|
430
430
|
//Flags
|
431
431
|
//align_only
|
432
|
-
|
432
|
+
BOOST_STATIC_CONSTEXPR bool AlignOnly = (Flags & adaptive_pool_flag::align_only) != 0;
|
433
433
|
typedef bool_<AlignOnly> IsAlignOnly;
|
434
434
|
typedef true_ AlignOnlyTrue;
|
435
435
|
typedef false_ AlignOnlyFalse;
|
436
436
|
|
437
437
|
typedef typename SegmentManagerBase::void_pointer void_pointer;
|
438
|
-
|
438
|
+
BOOST_STATIC_CONSTEXPR typename SegmentManagerBase::
|
439
439
|
size_type PayloadPerAllocation = SegmentManagerBase::PayloadPerAllocation;
|
440
440
|
|
441
441
|
typedef typename boost::intrusive::pointer_traits
|
@@ -453,9 +453,9 @@ class private_adaptive_node_pool_impl_common
|
|
453
453
|
typedef typename adaptive_pool_types_t::hdr_offset_holder hdr_offset_holder;
|
454
454
|
typedef private_adaptive_node_pool_impl_common this_type;
|
455
455
|
|
456
|
-
|
457
|
-
|
458
|
-
|
456
|
+
BOOST_STATIC_CONSTEXPR size_type MaxAlign = alignment_of<void_pointer>::value;
|
457
|
+
BOOST_STATIC_CONSTEXPR size_type HdrSize = ((sizeof(block_info_t)-1)/MaxAlign+1)*MaxAlign;
|
458
|
+
BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = ((sizeof(hdr_offset_holder)-1)/MaxAlign+1)*MaxAlign;
|
459
459
|
|
460
460
|
segment_mngr_base_ptr_t mp_segment_mngr_base; //Segment manager
|
461
461
|
block_container_t m_block_container; //Intrusive block list
|
@@ -981,9 +981,9 @@ template< class SizeType
|
|
981
981
|
, bool AlignOnly>
|
982
982
|
struct calculate_alignment_ct
|
983
983
|
{
|
984
|
-
|
985
|
-
|
986
|
-
|
984
|
+
BOOST_STATIC_CONSTEXPR std::size_t alignment = upper_power_of_2_ct<SizeType, HdrSize + RealNodeSize*NodesPerBlock>::value;
|
985
|
+
BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = 0;
|
986
|
+
BOOST_STATIC_CONSTEXPR std::size_t real_num_node = (alignment - PayloadPerAllocation - HdrSize)/RealNodeSize;
|
987
987
|
};
|
988
988
|
|
989
989
|
template< class SizeType
|
@@ -1013,9 +1013,9 @@ struct calculate_alignment_ct
|
|
1013
1013
|
, OverheadPercent
|
1014
1014
|
>::type type;
|
1015
1015
|
|
1016
|
-
|
1017
|
-
|
1018
|
-
|
1016
|
+
BOOST_STATIC_CONSTEXPR std::size_t alignment = type::alignment;
|
1017
|
+
BOOST_STATIC_CONSTEXPR std::size_t num_subblocks = type::num_subblocks;
|
1018
|
+
BOOST_STATIC_CONSTEXPR std::size_t real_num_node = type::real_num_node;
|
1019
1019
|
};
|
1020
1020
|
|
1021
1021
|
|
@@ -1046,17 +1046,17 @@ class private_adaptive_node_pool_impl_ct
|
|
1046
1046
|
typedef typename base_t::multiallocation_chain multiallocation_chain;
|
1047
1047
|
typedef typename base_t::segment_manager_base_type segment_manager_base_type;
|
1048
1048
|
|
1049
|
-
|
1049
|
+
BOOST_STATIC_CONSTEXPR typename base_t::size_type PayloadPerAllocation = base_t::PayloadPerAllocation;
|
1050
1050
|
|
1051
1051
|
//align_only
|
1052
|
-
|
1052
|
+
BOOST_STATIC_CONSTEXPR bool AlignOnly = base_t::AlignOnly;
|
1053
1053
|
|
1054
1054
|
private:
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1055
|
+
BOOST_STATIC_CONSTEXPR size_type MaxAlign = base_t::MaxAlign;
|
1056
|
+
BOOST_STATIC_CONSTEXPR size_type HdrSize = base_t::HdrSize;
|
1057
|
+
BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = base_t::HdrOffsetSize;
|
1058
1058
|
|
1059
|
-
|
1059
|
+
BOOST_STATIC_CONSTEXPR size_type RealNodeSize = lcm_ct<NodeSize, alignment_of<void_pointer>::value>::value;
|
1060
1060
|
|
1061
1061
|
typedef calculate_alignment_ct
|
1062
1062
|
< size_type, HdrSize, PayloadPerAllocation
|
@@ -1065,9 +1065,9 @@ class private_adaptive_node_pool_impl_ct
|
|
1065
1065
|
//Round the size to a power of two value.
|
1066
1066
|
//This is the total memory size (including payload) that we want to
|
1067
1067
|
//allocate from the general-purpose allocator
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1068
|
+
BOOST_STATIC_CONSTEXPR size_type NumSubBlocks = data_t::num_subblocks;
|
1069
|
+
BOOST_STATIC_CONSTEXPR size_type RealNumNode = data_t::real_num_node;
|
1070
|
+
BOOST_STATIC_CONSTEXPR size_type RealBlockAlignment = data_t::alignment;
|
1071
1071
|
|
1072
1072
|
public:
|
1073
1073
|
|
@@ -1165,14 +1165,14 @@ class private_adaptive_node_pool_impl_rt
|
|
1165
1165
|
typedef typename impl_t::size_type size_type;
|
1166
1166
|
typedef typename impl_t::multiallocation_chain multiallocation_chain;
|
1167
1167
|
|
1168
|
-
|
1168
|
+
BOOST_STATIC_CONSTEXPR typename impl_t::size_type PayloadPerAllocation = impl_t::PayloadPerAllocation;
|
1169
1169
|
|
1170
1170
|
//Flags
|
1171
1171
|
//align_only
|
1172
|
-
|
1172
|
+
BOOST_STATIC_CONSTEXPR bool AlignOnly = impl_t::AlignOnly;
|
1173
1173
|
|
1174
|
-
|
1175
|
-
|
1174
|
+
BOOST_STATIC_CONSTEXPR size_type HdrSize = impl_t::HdrSize;
|
1175
|
+
BOOST_STATIC_CONSTEXPR size_type HdrOffsetSize = impl_t::HdrOffsetSize;
|
1176
1176
|
|
1177
1177
|
public:
|
1178
1178
|
|
@@ -39,6 +39,7 @@
|
|
39
39
|
|
40
40
|
#include <boost/move/utility_core.hpp>
|
41
41
|
#include <boost/move/detail/force_ptr.hpp>
|
42
|
+
#include <boost/move/detail/launder.hpp>
|
42
43
|
// other
|
43
44
|
#include <boost/assert.hpp>
|
44
45
|
|
@@ -138,8 +139,8 @@ struct insert_value_initialized_n_proxy
|
|
138
139
|
while (n){
|
139
140
|
--n;
|
140
141
|
storage_t v;
|
141
|
-
alloc_traits::construct(a,
|
142
|
-
value_type *vp = move_detail::
|
142
|
+
alloc_traits::construct(a, (value_type*)&v);
|
143
|
+
value_type *vp = move_detail::launder_cast<value_type *>(&v);
|
143
144
|
value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
|
144
145
|
*p = ::boost::move(*vp);
|
145
146
|
++p;
|
@@ -165,8 +166,8 @@ struct insert_default_initialized_n_proxy
|
|
165
166
|
while (n){
|
166
167
|
--n;
|
167
168
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
|
168
|
-
alloc_traits::construct(a,
|
169
|
-
value_type *vp = move_detail::
|
169
|
+
alloc_traits::construct(a, (value_type*)&v, default_init);
|
170
|
+
value_type *vp = move_detail::launder_cast<value_type *>(&v);
|
170
171
|
value_destructor<Allocator> on_exit(a, *vp); (void)on_exit;
|
171
172
|
*p = ::boost::move(*vp);
|
172
173
|
++p;
|
@@ -181,7 +182,7 @@ struct insert_copy_proxy
|
|
181
182
|
typedef boost::container::allocator_traits<Allocator> alloc_traits;
|
182
183
|
typedef typename alloc_traits::value_type value_type;
|
183
184
|
|
184
|
-
|
185
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
185
186
|
|
186
187
|
inline explicit insert_copy_proxy(const value_type &v)
|
187
188
|
: v_(v)
|
@@ -211,7 +212,7 @@ struct insert_move_proxy
|
|
211
212
|
typedef boost::container::allocator_traits<Allocator> alloc_traits;
|
212
213
|
typedef typename alloc_traits::value_type value_type;
|
213
214
|
|
214
|
-
|
215
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
215
216
|
|
216
217
|
inline explicit insert_move_proxy(value_type &v)
|
217
218
|
: v_(v)
|
@@ -264,7 +265,7 @@ struct insert_nonmovable_emplace_proxy
|
|
264
265
|
typedef typename alloc_traits::value_type value_type;
|
265
266
|
typedef typename build_number_seq<sizeof...(Args)>::type index_tuple_t;
|
266
267
|
|
267
|
-
|
268
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
268
269
|
|
269
270
|
inline explicit insert_nonmovable_emplace_proxy(BOOST_FWD_REF(Args)... args)
|
270
271
|
: args_(args...)
|
@@ -295,7 +296,7 @@ struct insert_emplace_proxy
|
|
295
296
|
typedef typename base_t::value_type value_type;
|
296
297
|
typedef typename base_t::index_tuple_t index_tuple_t;
|
297
298
|
|
298
|
-
|
299
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
299
300
|
|
300
301
|
inline explicit insert_emplace_proxy(BOOST_FWD_REF(Args)... args)
|
301
302
|
: base_t(::boost::forward<Args>(args)...)
|
@@ -312,8 +313,8 @@ struct insert_emplace_proxy
|
|
312
313
|
{
|
313
314
|
BOOST_ASSERT(n ==1); (void)n;
|
314
315
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
|
315
|
-
alloc_traits::construct(a,
|
316
|
-
value_type *vp = move_detail::
|
316
|
+
alloc_traits::construct(a, (value_type*)&v, ::boost::forward<Args>(get<IdxPack>(this->args_))...);
|
317
|
+
value_type *vp = move_detail::launder_cast<value_type *>(&v);
|
317
318
|
BOOST_CONTAINER_TRY{
|
318
319
|
*p = ::boost::move(*vp);
|
319
320
|
}
|
@@ -331,7 +332,7 @@ template<class Allocator>
|
|
331
332
|
struct insert_emplace_proxy<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
|
332
333
|
: public insert_move_proxy<Allocator>
|
333
334
|
{
|
334
|
-
|
335
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
335
336
|
|
336
337
|
inline explicit insert_emplace_proxy(typename boost::container::allocator_traits<Allocator>::value_type &&v)
|
337
338
|
: insert_move_proxy<Allocator>(v)
|
@@ -348,7 +349,7 @@ struct insert_emplace_proxy<Allocator
|
|
348
349
|
: public insert_copy_proxy<Allocator>
|
349
350
|
{
|
350
351
|
|
351
|
-
|
352
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
352
353
|
|
353
354
|
inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
354
355
|
: insert_copy_proxy<Allocator>(v)
|
@@ -359,7 +360,7 @@ template<class Allocator>
|
|
359
360
|
struct insert_emplace_proxy<Allocator, typename boost::container::allocator_traits<Allocator>::value_type &>
|
360
361
|
: public insert_copy_proxy<Allocator>
|
361
362
|
{
|
362
|
-
|
363
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
363
364
|
|
364
365
|
inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
365
366
|
: insert_copy_proxy<Allocator>(v)
|
@@ -372,7 +373,7 @@ struct insert_emplace_proxy<Allocator
|
|
372
373
|
>
|
373
374
|
: public insert_copy_proxy<Allocator>
|
374
375
|
{
|
375
|
-
|
376
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
376
377
|
|
377
378
|
inline explicit insert_emplace_proxy(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
378
379
|
: insert_copy_proxy<Allocator>(v)
|
@@ -396,7 +397,7 @@ struct insert_nonmovable_emplace_proxy##N\
|
|
396
397
|
typedef boost::container::allocator_traits<Allocator> alloc_traits;\
|
397
398
|
typedef typename alloc_traits::value_type value_type;\
|
398
399
|
\
|
399
|
-
|
400
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;\
|
400
401
|
\
|
401
402
|
inline explicit insert_nonmovable_emplace_proxy##N(BOOST_MOVE_UREF##N)\
|
402
403
|
BOOST_MOVE_COLON##N BOOST_MOVE_FWD_INIT##N {}\
|
@@ -425,7 +426,7 @@ struct insert_emplace_proxy_arg##N\
|
|
425
426
|
typedef typename base_t::value_type value_type;\
|
426
427
|
typedef boost::container::allocator_traits<Allocator> alloc_traits;\
|
427
428
|
\
|
428
|
-
|
429
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;\
|
429
430
|
\
|
430
431
|
inline explicit insert_emplace_proxy_arg##N(BOOST_MOVE_UREF##N)\
|
431
432
|
: base_t(BOOST_MOVE_FWD##N){}\
|
@@ -435,8 +436,8 @@ struct insert_emplace_proxy_arg##N\
|
|
435
436
|
{\
|
436
437
|
BOOST_ASSERT(n == 1); (void)n;\
|
437
438
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
|
438
|
-
alloc_traits::construct(a,
|
439
|
-
value_type *vp = move_detail::
|
439
|
+
alloc_traits::construct(a, (value_type*)&v BOOST_MOVE_I##N BOOST_MOVE_MFWD##N);\
|
440
|
+
value_type *vp = move_detail::launder_cast<value_type *>(&v);\
|
440
441
|
BOOST_CONTAINER_TRY{\
|
441
442
|
*p = ::boost::move(*vp);\
|
442
443
|
}\
|
@@ -459,7 +460,7 @@ template<class Allocator>
|
|
459
460
|
struct insert_emplace_proxy_arg1<Allocator, ::boost::rv<typename boost::container::allocator_traits<Allocator>::value_type> >
|
460
461
|
: public insert_move_proxy<Allocator>
|
461
462
|
{
|
462
|
-
|
463
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
463
464
|
|
464
465
|
inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &v)
|
465
466
|
: insert_move_proxy<Allocator>(v)
|
@@ -470,7 +471,7 @@ template<class Allocator>
|
|
470
471
|
struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
|
471
472
|
: public insert_copy_proxy<Allocator>
|
472
473
|
{
|
473
|
-
|
474
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
474
475
|
|
475
476
|
inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
476
477
|
: insert_copy_proxy<Allocator>(v)
|
@@ -484,7 +485,7 @@ template<class Allocator>
|
|
484
485
|
struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type>
|
485
486
|
: public insert_move_proxy<Allocator>
|
486
487
|
{
|
487
|
-
|
488
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
488
489
|
|
489
490
|
inline explicit insert_emplace_proxy_arg1(typename boost::container::allocator_traits<Allocator>::value_type &&v)
|
490
491
|
: insert_move_proxy<Allocator>(v)
|
@@ -500,7 +501,7 @@ struct insert_emplace_proxy_arg1<Allocator
|
|
500
501
|
>
|
501
502
|
: public insert_copy_proxy<Allocator>
|
502
503
|
{
|
503
|
-
|
504
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
504
505
|
|
505
506
|
inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
506
507
|
: insert_copy_proxy<Allocator>(v)
|
@@ -511,7 +512,7 @@ template<class Allocator>
|
|
511
512
|
struct insert_emplace_proxy_arg1<Allocator, typename boost::container::allocator_traits<Allocator>::value_type &>
|
512
513
|
: public insert_copy_proxy<Allocator>
|
513
514
|
{
|
514
|
-
|
515
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
515
516
|
|
516
517
|
inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
517
518
|
: insert_copy_proxy<Allocator>(v)
|
@@ -524,7 +525,7 @@ struct insert_emplace_proxy_arg1<Allocator
|
|
524
525
|
>
|
525
526
|
: public insert_copy_proxy<Allocator>
|
526
527
|
{
|
527
|
-
|
528
|
+
BOOST_STATIC_CONSTEXPR bool single_value = true;
|
528
529
|
|
529
530
|
inline explicit insert_emplace_proxy_arg1(const typename boost::container::allocator_traits<Allocator>::value_type &v)
|
530
531
|
: insert_copy_proxy<Allocator>(v)
|
@@ -42,13 +42,13 @@ enum allocation_type_v
|
|
42
42
|
|
43
43
|
typedef unsigned int allocation_type;
|
44
44
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type allocate_new = (allocation_type)allocate_new_v;
|
46
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type expand_fwd = (allocation_type)expand_fwd_v;
|
47
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type expand_bwd = (allocation_type)expand_bwd_v;
|
48
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type shrink_in_place = (allocation_type)shrink_in_place_v;
|
49
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type try_shrink_in_place= (allocation_type)try_shrink_in_place_v;
|
50
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type nothrow_allocation = (allocation_type)nothrow_allocation_v;
|
51
|
+
BOOST_CONTAINER_CONSTANT_VAR allocation_type zero_memory = (allocation_type)zero_memory_v;
|
52
52
|
|
53
53
|
} //namespace container {
|
54
54
|
} //namespace boost {
|
@@ -74,11 +74,11 @@ class block_list_base
|
|
74
74
|
{
|
75
75
|
list_node m_list;
|
76
76
|
|
77
|
-
|
77
|
+
BOOST_STATIC_CONSTEXPR std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
|
78
78
|
|
79
79
|
public:
|
80
80
|
|
81
|
-
|
81
|
+
BOOST_STATIC_CONSTEXPR std::size_t header_size = std::size_t(sizeof(DerivedFromBlockListHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
|
82
82
|
|
83
83
|
explicit block_list_base()
|
84
84
|
{ list_algo::init_header(&m_list); }
|
@@ -68,11 +68,11 @@ class block_slist_base
|
|
68
68
|
{
|
69
69
|
slist_node m_slist;
|
70
70
|
|
71
|
-
|
71
|
+
BOOST_STATIC_CONSTEXPR std::size_t MaxAlignMinus1 = memory_resource::max_align-1u;
|
72
72
|
|
73
73
|
public:
|
74
74
|
|
75
|
-
|
75
|
+
BOOST_STATIC_CONSTEXPR std::size_t header_size = std::size_t(sizeof(DerivedFromBlockSlistHeader) + MaxAlignMinus1) & std::size_t(~MaxAlignMinus1);
|
76
76
|
|
77
77
|
explicit block_slist_base()
|
78
78
|
{ slist_algo::init_header(&m_slist); }
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include <boost/container/allocator_traits.hpp>
|
25
25
|
#include <boost/container/detail/iterators.hpp>
|
26
26
|
#include <boost/container/detail/value_init.hpp>
|
27
|
+
#include <boost/container/detail/is_pair.hpp>
|
27
28
|
|
28
29
|
namespace boost {
|
29
30
|
namespace container {
|
@@ -62,9 +63,42 @@ BOOST_CONTAINER_FORCEINLINE void construct_in_place(Allocator &a, T *dest, empla
|
|
62
63
|
|
63
64
|
//Assignment
|
64
65
|
|
66
|
+
template<class T, class U>
|
67
|
+
BOOST_CONTAINER_FORCEINLINE
|
68
|
+
typename dtl::disable_if_c
|
69
|
+
< dtl::is_pair<typename dtl::remove_reference<T>::type>::value
|
70
|
+
&& dtl::is_pair<typename dtl::remove_reference<U>::type>::value
|
71
|
+
, void>::type
|
72
|
+
assign_in_place_ref(T &t, BOOST_FWD_REF(U) u)
|
73
|
+
{ t = ::boost::forward<U>(u); }
|
74
|
+
|
75
|
+
template<class T, class U>
|
76
|
+
BOOST_CONTAINER_FORCEINLINE
|
77
|
+
typename dtl::enable_if_c
|
78
|
+
< dtl::is_pair<typename dtl::remove_reference<T>::type>::value
|
79
|
+
&& dtl::is_pair<typename dtl::remove_reference<U>::type>::value
|
80
|
+
, void>::type
|
81
|
+
assign_in_place_ref(T &t, const U &u)
|
82
|
+
{
|
83
|
+
assign_in_place_ref(t.first, u.first);
|
84
|
+
assign_in_place_ref(t.second, u.second);
|
85
|
+
}
|
86
|
+
|
87
|
+
template<class T, class U>
|
88
|
+
BOOST_CONTAINER_FORCEINLINE
|
89
|
+
typename dtl::enable_if_c
|
90
|
+
< dtl::is_pair<typename dtl::remove_reference<T>::type>::value
|
91
|
+
&& dtl::is_pair<typename dtl::remove_reference<U>::type>::value
|
92
|
+
, void>::type
|
93
|
+
assign_in_place_ref(T &t, BOOST_RV_REF(U) u)
|
94
|
+
{
|
95
|
+
assign_in_place_ref(t.first, ::boost::move(u.first));
|
96
|
+
assign_in_place_ref(t.second, ::boost::move(u.second));
|
97
|
+
}
|
98
|
+
|
65
99
|
template<class DstIt, class InpIt>
|
66
100
|
BOOST_CONTAINER_FORCEINLINE void assign_in_place(DstIt dest, InpIt source)
|
67
|
-
{ *dest
|
101
|
+
{ assign_in_place_ref(*dest, *source); }
|
68
102
|
|
69
103
|
template<class DstIt, class U>
|
70
104
|
BOOST_CONTAINER_FORCEINLINE void assign_in_place(DstIt dest, value_init_construct_iterator<U>)
|
@@ -50,7 +50,7 @@
|
|
50
50
|
# pragma GCC diagnostic ignored "-Wstringop-overflow"
|
51
51
|
# endif
|
52
52
|
//GCC 12 seems a bit confused about array access error with small_vector
|
53
|
-
# if defined(BOOST_GCC) && (
|
53
|
+
# if defined(BOOST_GCC) && (BOOST_GCC >= 110000)
|
54
54
|
# pragma GCC diagnostic ignored "-Wstringop-overread"
|
55
55
|
# pragma GCC diagnostic ignored "-Wstringop-overflow"
|
56
56
|
# endif
|
@@ -64,7 +64,7 @@ namespace dtl {
|
|
64
64
|
template<class I>
|
65
65
|
struct are_elements_contiguous
|
66
66
|
{
|
67
|
-
|
67
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
68
68
|
};
|
69
69
|
|
70
70
|
/////////////////////////
|
@@ -74,7 +74,7 @@ struct are_elements_contiguous
|
|
74
74
|
template<class T>
|
75
75
|
struct are_elements_contiguous<T*>
|
76
76
|
{
|
77
|
-
|
77
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
78
78
|
};
|
79
79
|
|
80
80
|
/////////////////////////
|
@@ -115,7 +115,7 @@ namespace dtl {
|
|
115
115
|
template <class Pointer, bool IsConst>
|
116
116
|
struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst> >
|
117
117
|
{
|
118
|
-
|
118
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
119
119
|
};
|
120
120
|
|
121
121
|
|
@@ -126,7 +126,7 @@ struct are_elements_contiguous<boost::container::vec_iterator<Pointer, IsConst>
|
|
126
126
|
template <class PointedType, class DifferenceType, class OffsetType, std::size_t OffsetAlignment>
|
127
127
|
struct are_elements_contiguous< ::boost::interprocess::offset_ptr<PointedType, DifferenceType, OffsetType, OffsetAlignment> >
|
128
128
|
{
|
129
|
-
|
129
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
130
130
|
};
|
131
131
|
|
132
132
|
template <typename I, typename O>
|
@@ -185,20 +185,20 @@ private:
|
|
185
185
|
template <class U> static two test(int, ...);
|
186
186
|
template <class U> static char test(int, const wrapper<U::single_value>*);
|
187
187
|
public:
|
188
|
-
|
188
|
+
BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0, 0)) == 1;
|
189
189
|
void dummy() {}
|
190
190
|
};
|
191
191
|
|
192
192
|
template<class InsertionProxy, bool = has_single_value<InsertionProxy>::value>
|
193
193
|
struct is_single_value_proxy_impl
|
194
194
|
{
|
195
|
-
|
195
|
+
BOOST_STATIC_CONSTEXPR bool value = InsertionProxy::single_value;
|
196
196
|
};
|
197
197
|
|
198
198
|
template<class InsertionProxy>
|
199
199
|
struct is_single_value_proxy_impl<InsertionProxy, false>
|
200
200
|
{
|
201
|
-
|
201
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
202
202
|
};
|
203
203
|
|
204
204
|
template<class InsertionProxy>
|
@@ -293,7 +293,7 @@ template <typename O>
|
|
293
293
|
struct is_memzero_initializable
|
294
294
|
{
|
295
295
|
typedef typename ::boost::container::iterator_traits<O>::value_type value_type;
|
296
|
-
|
296
|
+
BOOST_STATIC_CONSTEXPR bool value = are_elements_contiguous<O>::value &&
|
297
297
|
( dtl::is_integral<value_type>::value || dtl::is_enum<value_type>::value
|
298
298
|
#if defined(BOOST_CONTAINER_MEMZEROED_POINTER_IS_NULL)
|
299
299
|
|| dtl::is_pointer<value_type>::value
|
@@ -1111,7 +1111,7 @@ inline typename dtl::disable_if_memtransfer_copy_assignable<F, G, void>::type
|
|
1111
1111
|
boost::container::destroy_alloc_n(a, large_range_f, std::size_t(n_j - n_i));
|
1112
1112
|
}
|
1113
1113
|
|
1114
|
-
|
1114
|
+
BOOST_CONTAINER_CONSTANT_VAR std::size_t DeepSwapAllocNMaxStorage = std::size_t(1) << std::size_t(11); //2K bytes
|
1115
1115
|
|
1116
1116
|
template
|
1117
1117
|
<std::size_t MaxTmpBytes
|
@@ -1496,8 +1496,8 @@ void expand_backward_forward_and_insert_alloc_move_backward
|
|
1496
1496
|
{
|
1497
1497
|
typedef std::size_t size_type;
|
1498
1498
|
typedef typename allocator_traits<Allocator>::value_type value_type;
|
1499
|
-
|
1500
|
-
|
1499
|
+
BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
|
1500
|
+
BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
|
1501
1501
|
|
1502
1502
|
typedef typename dtl::if_c
|
1503
1503
|
<trivial_dctr
|
@@ -1796,8 +1796,8 @@ inline void expand_backward_forward_and_insert_alloc_move_forward
|
|
1796
1796
|
{
|
1797
1797
|
typedef std::size_t size_type;
|
1798
1798
|
typedef typename allocator_traits<Allocator>::value_type value_type;
|
1799
|
-
|
1800
|
-
|
1799
|
+
BOOST_STATIC_CONSTEXPR bool trivial_dctr_after_move = has_trivial_destructor_after_move<value_type>::value;
|
1800
|
+
BOOST_STATIC_CONSTEXPR bool trivial_dctr = dtl::is_trivially_destructible<value_type>::value;
|
1801
1801
|
|
1802
1802
|
typedef typename dtl::if_c
|
1803
1803
|
<trivial_dctr
|
@@ -62,7 +62,7 @@ namespace dtl {
|
|
62
62
|
template<class X>
|
63
63
|
static no_type test(...);
|
64
64
|
|
65
|
-
|
65
|
+
BOOST_STATIC_CONSTEXPR bool value = sizeof(test<T>(0)) == sizeof(yes_type);
|
66
66
|
};
|
67
67
|
|
68
68
|
template <class T, class InnerAlloc, class ...Args>
|