passenger 6.0.23 → 6.0.24
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.
Potentially problematic release.
This version of passenger might be problematic. Click here for more details.
- 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>
|