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
@@ -969,6 +969,23 @@ class map
|
|
969
969
|
inline size_type erase(const key_type& x)
|
970
970
|
{ return this->base_t::erase_unique(x); }
|
971
971
|
|
972
|
+
//! <b>Requires</b>: This overload is available only if
|
973
|
+
//! key_compare::is_transparent exists.
|
974
|
+
//!
|
975
|
+
//! <b>Effects</b>: If present, erases the element in the container with key equivalent to x.
|
976
|
+
//!
|
977
|
+
//! <b>Returns</b>: Returns the number of erased elements (0/1).
|
978
|
+
template <class K>
|
979
|
+
inline BOOST_CONTAINER_DOC1ST
|
980
|
+
(size_type
|
981
|
+
, typename dtl::enable_if_c<
|
982
|
+
dtl::is_transparent<key_compare>::value && //transparent
|
983
|
+
!dtl::is_convertible<K BOOST_MOVE_I iterator>::value && //not convertible to iterator
|
984
|
+
!dtl::is_convertible<K BOOST_MOVE_I const_iterator>::value //not convertible to const_iterator
|
985
|
+
BOOST_MOVE_I size_type>::type)
|
986
|
+
erase(const K& x)
|
987
|
+
{ return this->base_t::erase_unique(x); }
|
988
|
+
|
972
989
|
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED)
|
973
990
|
|
974
991
|
//! <b>Effects</b>: Erases the element pointed to by p.
|
@@ -1376,7 +1393,7 @@ template <class Key, class T, class Compare, class Allocator, class Options>
|
|
1376
1393
|
struct has_trivial_destructor_after_move<boost::container::map<Key, T, Compare, Allocator, Options> >
|
1377
1394
|
{
|
1378
1395
|
typedef ::boost::container::dtl::tree<std::pair<const Key, T>, int, Compare, Allocator, Options> tree;
|
1379
|
-
|
1396
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
1380
1397
|
};
|
1381
1398
|
|
1382
1399
|
namespace container {
|
@@ -2298,7 +2315,7 @@ template <class Key, class T, class Compare, class Allocator, class Options>
|
|
2298
2315
|
struct has_trivial_destructor_after_move<boost::container::multimap<Key, T, Compare, Allocator, Options> >
|
2299
2316
|
{
|
2300
2317
|
typedef ::boost::container::dtl::tree<std::pair<const Key, T>, int, Compare, Allocator, Options> tree;
|
2301
|
-
|
2318
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
2302
2319
|
};
|
2303
2320
|
|
2304
2321
|
namespace container {
|
@@ -8,8 +8,8 @@
|
|
8
8
|
//
|
9
9
|
//////////////////////////////////////////////////////////////////////////////
|
10
10
|
|
11
|
-
#ifndef
|
12
|
-
#define
|
11
|
+
#ifndef BOOST_CONTAINER_NODE_ALLOCATOR_HPP
|
12
|
+
#define BOOST_CONTAINER_NODE_ALLOCATOR_HPP
|
13
13
|
|
14
14
|
#ifndef BOOST_CONFIG_HPP
|
15
15
|
# include <boost/config.hpp>
|
@@ -26,6 +26,7 @@
|
|
26
26
|
#include <boost/container/detail/node_pool.hpp>
|
27
27
|
#include <boost/container/detail/mpl.hpp>
|
28
28
|
#include <boost/container/detail/multiallocation_chain.hpp>
|
29
|
+
#include <boost/move/detail/iterator_to_raw_pointer.hpp>
|
29
30
|
#include <boost/container/detail/dlmalloc.hpp>
|
30
31
|
#include <boost/container/detail/singleton.hpp>
|
31
32
|
|
@@ -62,7 +63,7 @@ class node_allocator
|
|
62
63
|
typedef unsigned int allocation_type;
|
63
64
|
typedef node_allocator<T, NodesPerBlock, Version> self_t;
|
64
65
|
|
65
|
-
|
66
|
+
BOOST_STATIC_CONSTEXPR std::size_t nodes_per_block = NodesPerBlock;
|
66
67
|
|
67
68
|
BOOST_CONTAINER_STATIC_ASSERT((Version <=2));
|
68
69
|
#endif
|
@@ -225,7 +226,10 @@ class node_allocator
|
|
225
226
|
typedef dtl::singleton_default<shared_pool_t> singleton_t;
|
226
227
|
typename shared_pool_t::multiallocation_chain ch;
|
227
228
|
singleton_t::instance().allocate_nodes(num_elements, ch);
|
228
|
-
chain.incorporate_after(chain.before_begin()
|
229
|
+
chain.incorporate_after(chain.before_begin()
|
230
|
+
, (T*)boost::movelib::iterator_to_raw_pointer(ch.begin())
|
231
|
+
, (T*)boost::movelib::iterator_to_raw_pointer(ch.last())
|
232
|
+
, ch.size());
|
229
233
|
}
|
230
234
|
|
231
235
|
//!Deallocates memory previously allocated with allocate_one().
|
@@ -246,7 +250,10 @@ class node_allocator
|
|
246
250
|
typedef dtl::shared_node_pool
|
247
251
|
<sizeof(T), NodesPerBlock> shared_pool_t;
|
248
252
|
typedef dtl::singleton_default<shared_pool_t> singleton_t;
|
249
|
-
typename shared_pool_t::multiallocation_chain ch
|
253
|
+
typename shared_pool_t::multiallocation_chain ch
|
254
|
+
( boost::movelib::iterator_to_raw_pointer(chain.begin())
|
255
|
+
, boost::movelib::iterator_to_raw_pointer(chain.last())
|
256
|
+
, chain.size());
|
250
257
|
singleton_t::instance().deallocate_nodes(ch);
|
251
258
|
}
|
252
259
|
|
@@ -285,8 +292,8 @@ class node_allocator
|
|
285
292
|
void deallocate_many(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
|
286
293
|
{
|
287
294
|
BOOST_CONTAINER_STATIC_ASSERT(( Version > 1 ));
|
288
|
-
void *first =
|
289
|
-
void *last =
|
295
|
+
void *first = boost::movelib::iterator_to_raw_pointer(chain.begin());
|
296
|
+
void *last = boost::movelib::iterator_to_raw_pointer(chain.last());
|
290
297
|
size_t num = chain.size();
|
291
298
|
dlmalloc_memchain ch;
|
292
299
|
BOOST_CONTAINER_MEMCHAIN_INIT_FROM(&ch, first, last, num);
|
@@ -337,4 +344,4 @@ class node_allocator
|
|
337
344
|
|
338
345
|
#include <boost/container/detail/config_end.hpp>
|
339
346
|
|
340
|
-
#endif //#ifndef
|
347
|
+
#endif //#ifndef BOOST_CONTAINER_NODE_ALLOCATOR_HPP
|
@@ -23,6 +23,7 @@
|
|
23
23
|
#include <boost/container/detail/workaround.hpp>
|
24
24
|
#include <boost/container/detail/placement_new.hpp>
|
25
25
|
#include <boost/move/detail/to_raw_pointer.hpp>
|
26
|
+
#include <boost/move/detail/launder.hpp>
|
26
27
|
#include <boost/container/allocator_traits.hpp>
|
27
28
|
#include <boost/container/detail/mpl.hpp>
|
28
29
|
|
@@ -146,7 +147,7 @@ class node_handle
|
|
146
147
|
}
|
147
148
|
|
148
149
|
void destroy_alloc() BOOST_NOEXCEPT
|
149
|
-
{
|
150
|
+
{ move_detail::launder_cast<nallocator_type*>(&m_nalloc_storage)->~nallocator_type(); }
|
150
151
|
|
151
152
|
node_pointer &get_node_pointer() BOOST_NOEXCEPT
|
152
153
|
{ return m_ptr; }
|
@@ -231,7 +232,7 @@ class node_handle
|
|
231
232
|
if(was_nh_non_null){
|
232
233
|
if(was_this_non_null){
|
233
234
|
this->destroy_deallocate_node();
|
234
|
-
|
235
|
+
BOOST_IF_CONSTEXPR(nator_traits::propagate_on_container_move_assignment::value){
|
235
236
|
this->node_alloc() = ::boost::move(nh.node_alloc());
|
236
237
|
}
|
237
238
|
}
|
@@ -335,7 +336,7 @@ class node_handle
|
|
335
336
|
|
336
337
|
if(was_nh_non_null){
|
337
338
|
if(was_this_non_null){
|
338
|
-
|
339
|
+
BOOST_IF_CONSTEXPR(nator_traits::propagate_on_container_swap::value){
|
339
340
|
::boost::adl_move_swap(this->node_alloc(), nh.node_alloc());
|
340
341
|
}
|
341
342
|
}
|
@@ -381,7 +382,7 @@ class node_handle
|
|
381
382
|
nallocator_type &node_alloc() BOOST_NOEXCEPT
|
382
383
|
{
|
383
384
|
BOOST_ASSERT(!empty());
|
384
|
-
return *
|
385
|
+
return *move_detail::launder_cast<nallocator_type*>(&m_nalloc_storage);
|
385
386
|
}
|
386
387
|
|
387
388
|
|
@@ -391,7 +392,7 @@ class node_handle
|
|
391
392
|
const nallocator_type &node_alloc() const BOOST_NOEXCEPT
|
392
393
|
{
|
393
394
|
BOOST_ASSERT(!empty());
|
394
|
-
return *
|
395
|
+
return *move_detail::launder_cast<const nallocator_type*>(&m_nalloc_storage);
|
395
396
|
}
|
396
397
|
|
397
398
|
//! <b>Effects</b>: x.swap(y).
|
@@ -52,8 +52,8 @@ enum tree_type_enum
|
|
52
52
|
template<tree_type_enum TreeType, bool OptimizeSize>
|
53
53
|
struct tree_opt
|
54
54
|
{
|
55
|
-
|
56
|
-
|
55
|
+
BOOST_STATIC_CONSTEXPR boost::container::tree_type_enum tree_type = TreeType;
|
56
|
+
BOOST_STATIC_CONSTEXPR bool optimize_size = OptimizeSize;
|
57
57
|
};
|
58
58
|
|
59
59
|
typedef tree_opt<red_black_tree, true> tree_assoc_defaults;
|
@@ -116,10 +116,10 @@ using tree_assoc_options_t = typename boost::container::tree_assoc_options<Optio
|
|
116
116
|
template<bool StoreHash, bool CacheBegin, bool LinearBuckets, bool FastmodBuckets>
|
117
117
|
struct hash_opt
|
118
118
|
{
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
119
|
+
BOOST_STATIC_CONSTEXPR bool store_hash = StoreHash;
|
120
|
+
BOOST_STATIC_CONSTEXPR bool cache_begin = CacheBegin;
|
121
|
+
BOOST_STATIC_CONSTEXPR bool linear_buckets = LinearBuckets;
|
122
|
+
BOOST_STATIC_CONSTEXPR bool fastmod_buckets = FastmodBuckets;
|
123
123
|
};
|
124
124
|
|
125
125
|
typedef hash_opt<false, false, false, false> hash_assoc_defaults;
|
@@ -203,13 +203,13 @@ struct default_if_void<void, Default>
|
|
203
203
|
template<std::size_t N, std::size_t DefaultN>
|
204
204
|
struct default_if_zero
|
205
205
|
{
|
206
|
-
|
206
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = N;
|
207
207
|
};
|
208
208
|
|
209
209
|
template<std::size_t DefaultN>
|
210
210
|
struct default_if_zero<0u, DefaultN>
|
211
211
|
{
|
212
|
-
|
212
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = DefaultN;
|
213
213
|
};
|
214
214
|
|
215
215
|
|
@@ -364,7 +364,7 @@ template<class GrowthType, std::size_t InplaceAlignment>
|
|
364
364
|
struct small_vector_opt
|
365
365
|
{
|
366
366
|
typedef GrowthType growth_factor_type;
|
367
|
-
|
367
|
+
BOOST_STATIC_CONSTEXPR std::size_t inplace_alignment = InplaceAlignment;
|
368
368
|
};
|
369
369
|
|
370
370
|
typedef small_vector_opt<void, 0u> small_vector_null_opt;
|
@@ -430,8 +430,8 @@ BOOST_INTRUSIVE_OPTION_CONSTANT(throw_on_overflow, bool, ThrowOnOverflow, throw_
|
|
430
430
|
template<bool ThrowOnOverflow, std::size_t InplaceAlignment>
|
431
431
|
struct static_vector_opt
|
432
432
|
{
|
433
|
-
|
434
|
-
|
433
|
+
BOOST_STATIC_CONSTEXPR bool throw_on_overflow = ThrowOnOverflow;
|
434
|
+
BOOST_STATIC_CONSTEXPR std::size_t inplace_alignment = InplaceAlignment;
|
435
435
|
};
|
436
436
|
|
437
437
|
typedef static_vector_opt<true, 0u> static_vector_null_opt;
|
@@ -515,7 +515,7 @@ template<class GrowthType, class StoredSizeType, std::size_t FreeFraction>
|
|
515
515
|
struct devector_opt
|
516
516
|
: vector_opt<GrowthType, StoredSizeType>
|
517
517
|
{
|
518
|
-
|
518
|
+
BOOST_STATIC_CONSTEXPR std::size_t free_fraction = FreeFraction;
|
519
519
|
};
|
520
520
|
|
521
521
|
typedef devector_opt<void, void, 0u> devector_null_opt;
|
@@ -606,8 +606,8 @@ using devector_options_t = typename boost::container::devector_options<Options..
|
|
606
606
|
template<std::size_t BlockBytes, std::size_t BlockSize>
|
607
607
|
struct deque_opt
|
608
608
|
{
|
609
|
-
|
610
|
-
|
609
|
+
BOOST_STATIC_CONSTEXPR std::size_t block_bytes = BlockBytes;
|
610
|
+
BOOST_STATIC_CONSTEXPR std::size_t block_size = BlockSize;
|
611
611
|
BOOST_CONTAINER_STATIC_ASSERT_MSG(!(block_bytes && block_size), "block_bytes and block_size can't be specified at the same time");
|
612
612
|
};
|
613
613
|
|
@@ -617,7 +617,7 @@ typedef deque_opt<0u, 0u> deque_null_opt;
|
|
617
617
|
|
618
618
|
//! Helper metafunction to combine options into a single type to be used
|
619
619
|
//! by \c boost::container::deque.
|
620
|
-
//! Supported options are: \c boost::container::block_bytes
|
620
|
+
//! Supported options are: \c boost::container::block_bytes and \c boost::container::block_size
|
621
621
|
#if defined(BOOST_CONTAINER_DOXYGEN_INVOKED) || defined(BOOST_CONTAINER_VARIADIC_TEMPLATES)
|
622
622
|
template<class ...Options>
|
623
623
|
#else
|
@@ -32,7 +32,7 @@ class memory_resource
|
|
32
32
|
{
|
33
33
|
public:
|
34
34
|
// For exposition only
|
35
|
-
|
35
|
+
BOOST_STATIC_CONSTEXPR std::size_t max_align =
|
36
36
|
boost::move_detail::alignment_of<boost::move_detail::max_align_t>::value;
|
37
37
|
|
38
38
|
//! <b>Effects</b>: Destroys
|
@@ -70,7 +70,7 @@ class BOOST_CONTAINER_DECL monotonic_buffer_resource
|
|
70
70
|
//! to the upstream allocator
|
71
71
|
//!
|
72
72
|
//! <b>Note</b>: Non-standard extension.
|
73
|
-
|
73
|
+
BOOST_STATIC_CONSTEXPR std::size_t initial_next_buffer_size = 32u*sizeof(void*);
|
74
74
|
|
75
75
|
//! <b>Requires</b>: `upstream` shall be the address of a valid memory resource or `nullptr`
|
76
76
|
//!
|
@@ -36,19 +36,19 @@ namespace pmr_dtl {
|
|
36
36
|
template<class T>
|
37
37
|
struct max_allocator_alignment
|
38
38
|
{
|
39
|
-
|
39
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = 1;
|
40
40
|
};
|
41
41
|
|
42
42
|
template<class T>
|
43
43
|
struct max_allocator_alignment< ::boost::container::new_allocator<T> >
|
44
44
|
{
|
45
|
-
|
45
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = boost::move_detail::alignment_of<boost::move_detail::max_align_t>::value;
|
46
46
|
};
|
47
47
|
|
48
48
|
template<class T>
|
49
49
|
struct max_allocator_alignment< std::allocator<T> >
|
50
50
|
{
|
51
|
-
|
51
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = boost::move_detail::alignment_of<boost::move_detail::max_align_t>::value;
|
52
52
|
};
|
53
53
|
|
54
54
|
} //namespace pmr_dtl
|
@@ -56,7 +56,7 @@ struct is_scoped_allocator_imp
|
|
56
56
|
template <typename T>
|
57
57
|
static int test(...);
|
58
58
|
|
59
|
-
|
59
|
+
BOOST_STATIC_CONSTEXPR bool value = (sizeof(yes_type) == sizeof(test<Allocator>(0)));
|
60
60
|
};
|
61
61
|
|
62
62
|
template<class MaybeScopedAlloc, bool = is_scoped_allocator_imp<MaybeScopedAlloc>::value >
|
@@ -1026,7 +1026,7 @@ template <class Key, class Compare, class Allocator, class Options>
|
|
1026
1026
|
struct has_trivial_destructor_after_move<boost::container::set<Key, Compare, Allocator, Options> >
|
1027
1027
|
{
|
1028
1028
|
typedef ::boost::container::dtl::tree<Key, void, Compare, Allocator, Options> tree;
|
1029
|
-
|
1029
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
1030
1030
|
};
|
1031
1031
|
|
1032
1032
|
namespace container {
|
@@ -1681,7 +1681,7 @@ template <class Key, class Compare, class Allocator, class Options>
|
|
1681
1681
|
struct has_trivial_destructor_after_move<boost::container::multiset<Key, Compare, Allocator, Options> >
|
1682
1682
|
{
|
1683
1683
|
typedef ::boost::container::dtl::tree<Key, void, Compare, Allocator, Options> tree;
|
1684
|
-
|
1684
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<tree>::value;
|
1685
1685
|
};
|
1686
1686
|
|
1687
1687
|
namespace container {
|
@@ -47,7 +47,7 @@
|
|
47
47
|
#include <boost/move/detail/fwd_macros.hpp>
|
48
48
|
#endif
|
49
49
|
#include <boost/move/detail/move_helpers.hpp>
|
50
|
-
|
50
|
+
|
51
51
|
// std
|
52
52
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
53
53
|
#include <initializer_list>
|
@@ -368,28 +368,14 @@ class slist
|
|
368
368
|
BOOST_NOEXCEPT_IF(allocator_traits_type::propagate_on_container_move_assignment::value
|
369
369
|
|| allocator_traits_type::is_always_equal::value)
|
370
370
|
{
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
|
378
|
-
|
379
|
-
//going to be equal after this function (either propagated or already equal)
|
380
|
-
if(propagate_alloc || allocators_equal){
|
381
|
-
//Destroy
|
382
|
-
this->clear();
|
383
|
-
//Move allocator if needed
|
384
|
-
this->AllocHolder::move_assign_alloc(sr);
|
385
|
-
//Obtain resources
|
386
|
-
this->icont() = boost::move(sr.icont());
|
387
|
-
}
|
388
|
-
//Else do a one by one move
|
389
|
-
else{
|
390
|
-
this->assign( boost::make_move_iterator(sr.begin())
|
391
|
-
, boost::make_move_iterator(sr.end()));
|
392
|
-
}
|
371
|
+
if (BOOST_LIKELY(this != &x)) {
|
372
|
+
//We know resources can be transferred at comiple time if both allocators are
|
373
|
+
//always equal or the allocator is going to be propagated
|
374
|
+
const bool can_steal_resources_alloc
|
375
|
+
= allocator_traits_type::propagate_on_container_move_assignment::value
|
376
|
+
|| allocator_traits_type::is_always_equal::value;
|
377
|
+
dtl::bool_<can_steal_resources_alloc> flag;
|
378
|
+
this->priv_move_assign(boost::move(x), flag);
|
393
379
|
}
|
394
380
|
return *this;
|
395
381
|
}
|
@@ -1579,6 +1565,27 @@ class slist
|
|
1579
1565
|
|
1580
1566
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
1581
1567
|
private:
|
1568
|
+
void priv_move_assign(BOOST_RV_REF(slist) x, dtl::bool_<true> /*steal_resources*/)
|
1569
|
+
{
|
1570
|
+
//Destroy objects but retain memory in case x reuses it in the future
|
1571
|
+
this->clear();
|
1572
|
+
//Move allocator if needed
|
1573
|
+
this->AllocHolder::move_assign_alloc(x);
|
1574
|
+
//Obtain resources
|
1575
|
+
this->icont() = boost::move(x.icont());
|
1576
|
+
}
|
1577
|
+
|
1578
|
+
void priv_move_assign(BOOST_RV_REF(slist) x, dtl::bool_<false> /*steal_resources*/)
|
1579
|
+
{
|
1580
|
+
//We can't guarantee a compile-time equal allocator or propagation so fallback to runtime
|
1581
|
+
//Resources can be transferred if both allocators are equal
|
1582
|
+
if (this->node_alloc() == x.node_alloc()) {
|
1583
|
+
this->priv_move_assign(boost::move(x), dtl::true_());
|
1584
|
+
}
|
1585
|
+
else {
|
1586
|
+
this->assign(boost::make_move_iterator(x.begin()), boost::make_move_iterator(x.end()));
|
1587
|
+
}
|
1588
|
+
}
|
1582
1589
|
|
1583
1590
|
template<class U>
|
1584
1591
|
void priv_push_front(BOOST_FWD_REF(U) x)
|
@@ -1666,7 +1673,7 @@ struct has_trivial_destructor_after_move<boost::container::slist<T, Allocator> >
|
|
1666
1673
|
{
|
1667
1674
|
typedef typename boost::container::slist<T, Allocator>::allocator_type allocator_type;
|
1668
1675
|
typedef typename ::boost::container::allocator_traits<allocator_type>::pointer pointer;
|
1669
|
-
|
1676
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<allocator_type>::value &&
|
1670
1677
|
::boost::has_trivial_destructor_after_move<pointer>::value;
|
1671
1678
|
};
|
1672
1679
|
|
@@ -39,7 +39,6 @@
|
|
39
39
|
#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
40
40
|
#include <boost/move/detail/fwd_macros.hpp>
|
41
41
|
#endif
|
42
|
-
#include <boost/move/detail/force_ptr.hpp>
|
43
42
|
|
44
43
|
//std
|
45
44
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
@@ -284,7 +283,7 @@ class small_vector_allocator
|
|
284
283
|
{ return !(l == r); }
|
285
284
|
|
286
285
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
287
|
-
|
286
|
+
public:
|
288
287
|
|
289
288
|
typedef small_vector_base<value_type, allocator_type, Options> derived_type;
|
290
289
|
typedef typename dtl::vector_for_small_vector
|
@@ -305,13 +304,13 @@ struct small_vector_storage
|
|
305
304
|
typedef typename dtl::aligned_storage
|
306
305
|
<sizeof(T)*N, Alignment>::type storage_type;
|
307
306
|
storage_type m_storage;
|
308
|
-
|
307
|
+
BOOST_STATIC_CONSTEXPR std::size_t sms_size = sizeof(storage_type)/sizeof(T);
|
309
308
|
};
|
310
309
|
|
311
310
|
template<class T, std::size_t Alignment>
|
312
311
|
struct small_vector_storage<T, 0u, Alignment>
|
313
312
|
{
|
314
|
-
|
313
|
+
BOOST_STATIC_CONSTEXPR std::size_t sms_size = 0u;
|
315
314
|
};
|
316
315
|
|
317
316
|
//! This class consists of common code from all small_vector<T, N> types that don't depend on the
|
@@ -347,9 +346,10 @@ class small_vector_base
|
|
347
346
|
public:
|
348
347
|
//Make it public as it will be inherited by small_vector and container
|
349
348
|
//must have this public member
|
350
|
-
typedef typename real_allocator<T, SecAlloc>::type
|
351
|
-
typedef typename allocator_traits<
|
352
|
-
template portable_rebind_alloc<void>::type
|
349
|
+
typedef typename real_allocator<T, SecAlloc>::type underlying_allocator_t;
|
350
|
+
typedef typename allocator_traits<underlying_allocator_t>::
|
351
|
+
template portable_rebind_alloc<void>::type void_underlying_allocator_t;
|
352
|
+
typedef small_vector_allocator<T, void_underlying_allocator_t, Options>allocator_type;
|
353
353
|
typedef typename dtl::get_small_vector_opt<Options>::type options_t;
|
354
354
|
typedef typename dtl::vector_for_small_vector
|
355
355
|
<T, SecAlloc, Options>::type base_type;
|
@@ -357,12 +357,13 @@ class small_vector_base
|
|
357
357
|
typedef typename allocator_traits<allocator_type>::const_pointer const_pointer;
|
358
358
|
typedef typename allocator_traits<allocator_type>::void_pointer void_pointer;
|
359
359
|
typedef typename allocator_traits<allocator_type>::const_void_pointer const_void_pointer;
|
360
|
-
typedef
|
360
|
+
typedef typename base_type::size_type size_type;
|
361
|
+
|
361
362
|
|
362
363
|
private:
|
363
364
|
BOOST_COPYABLE_AND_MOVABLE(small_vector_base)
|
364
365
|
|
365
|
-
friend class small_vector_allocator<T,
|
366
|
+
friend class small_vector_allocator<T, void_underlying_allocator_t, Options>;
|
366
367
|
|
367
368
|
inline
|
368
369
|
const_pointer internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW
|
@@ -378,18 +379,26 @@ class small_vector_base
|
|
378
379
|
|
379
380
|
public:
|
380
381
|
|
382
|
+
BOOST_CONTAINER_ATTRIBUTE_NODISCARD bool is_small() const
|
383
|
+
{ return this->internal_storage() == this->data(); }
|
384
|
+
|
381
385
|
protected:
|
382
386
|
|
383
|
-
inline explicit small_vector_base(initial_capacity_t,
|
387
|
+
inline explicit small_vector_base(initial_capacity_t, size_type initial_capacity)
|
384
388
|
: base_type(initial_capacity_t(), this->internal_storage(), initial_capacity)
|
385
389
|
{}
|
386
390
|
|
387
391
|
template<class AllocFwd>
|
388
|
-
inline explicit small_vector_base(initial_capacity_t,
|
392
|
+
inline explicit small_vector_base(initial_capacity_t, size_type capacity, BOOST_FWD_REF(AllocFwd) a)
|
389
393
|
: base_type(initial_capacity_t(), this->internal_storage(), capacity, ::boost::forward<AllocFwd>(a))
|
390
394
|
{}
|
391
395
|
|
392
|
-
|
396
|
+
template<class AllocFwd>
|
397
|
+
inline explicit small_vector_base(initial_capacity_t, size_type capacity, BOOST_FWD_REF(AllocFwd) a, small_vector_base &x)
|
398
|
+
: base_type(initial_capacity_t(), this->internal_storage(), capacity, ::boost::forward<AllocFwd>(a), x)
|
399
|
+
{}
|
400
|
+
|
401
|
+
inline explicit small_vector_base(maybe_initial_capacity_t, size_type initial_capacity, size_type initial_size)
|
393
402
|
: base_type( maybe_initial_capacity_t()
|
394
403
|
, (initial_capacity >= initial_size) ? this->internal_storage() : pointer()
|
395
404
|
, (initial_capacity >= initial_size) ? initial_capacity : initial_size
|
@@ -397,7 +406,7 @@ class small_vector_base
|
|
397
406
|
{}
|
398
407
|
|
399
408
|
template<class AllocFwd>
|
400
|
-
inline explicit small_vector_base(maybe_initial_capacity_t,
|
409
|
+
inline explicit small_vector_base(maybe_initial_capacity_t, size_type initial_capacity, size_type initial_size, BOOST_FWD_REF(AllocFwd) a)
|
401
410
|
: base_type(maybe_initial_capacity_t()
|
402
411
|
, (initial_capacity >= initial_size) ? this->internal_storage() : pointer()
|
403
412
|
, (initial_capacity >= initial_size) ? initial_capacity : initial_size
|
@@ -405,11 +414,17 @@ class small_vector_base
|
|
405
414
|
)
|
406
415
|
{}
|
407
416
|
|
417
|
+
void prot_shrink_to_fit_small(const size_type small_capacity)
|
418
|
+
{ this->base_type::prot_shrink_to_fit_small(this->internal_storage(), small_capacity); }
|
419
|
+
|
408
420
|
using base_type::protected_set_size;
|
409
421
|
|
410
422
|
//~small_vector_base(){}
|
411
423
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
412
424
|
|
425
|
+
inline void prot_swap(small_vector_base& other, size_type internal_capacity_value)
|
426
|
+
{ this->base_type::prot_swap_small(other, internal_capacity_value); }
|
427
|
+
|
413
428
|
public:
|
414
429
|
inline small_vector_base& operator=(BOOST_COPY_ASSIGN_REF(small_vector_base) other)
|
415
430
|
{ return static_cast<small_vector_base&>(this->base_type::operator=(static_cast<base_type const&>(other))); }
|
@@ -418,24 +433,8 @@ class small_vector_base
|
|
418
433
|
{ return static_cast<small_vector_base&>(this->base_type::operator=(BOOST_MOVE_BASE(base_type, other))); }
|
419
434
|
|
420
435
|
inline void swap(small_vector_base &other)
|
421
|
-
{ return this->base_type::
|
436
|
+
{ return this->base_type::prot_swap_small(other, 0u); }
|
422
437
|
|
423
|
-
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
424
|
-
protected:
|
425
|
-
void move_construct_impl(base_type &x)
|
426
|
-
{
|
427
|
-
if(base_type::is_propagable_from(x.get_stored_allocator(), x.data(), this->base_type::get_stored_allocator(), true)){
|
428
|
-
this->steal_resources(x);
|
429
|
-
}
|
430
|
-
else{
|
431
|
-
const typename base_type::size_type sz = x.size();
|
432
|
-
::boost::container::uninitialized_move_alloc_n_source
|
433
|
-
(this->base_type::get_stored_allocator(), x.begin(), sz, this->begin());
|
434
|
-
this->protected_set_size(sz);
|
435
|
-
x.clear();
|
436
|
-
}
|
437
|
-
}
|
438
|
-
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
439
438
|
};
|
440
439
|
|
441
440
|
#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
@@ -449,7 +448,7 @@ template<class T, std::size_t N, class Options>
|
|
449
448
|
struct small_vector_storage_definer
|
450
449
|
{
|
451
450
|
typedef typename dtl::get_small_vector_opt<Options>::type options_t;
|
452
|
-
|
451
|
+
BOOST_STATIC_CONSTEXPR std::size_t final_alignment =
|
453
452
|
options_t::inplace_alignment ? options_t::inplace_alignment : dtl::alignment_of<T>::value;
|
454
453
|
typedef small_vector_storage<T, N, final_alignment> type;
|
455
454
|
};
|
@@ -488,7 +487,7 @@ template<class T, class VoidAlloc, class Options>
|
|
488
487
|
inline typename small_vector_allocator<T, VoidAlloc, Options>::const_pointer
|
489
488
|
small_vector_allocator<T, VoidAlloc, Options>::internal_storage() const BOOST_NOEXCEPT_OR_NOTHROW
|
490
489
|
{
|
491
|
-
const vector_type& v =
|
490
|
+
const vector_type& v = *static_cast<const vector_type*>(static_cast<const void *>(this));
|
492
491
|
BOOST_ASSERT((std::size_t(this) % dtl::alignment_of< small_vector_storage_offset<T, allocator_type, Options> >::value) == 0);
|
493
492
|
const char *addr = reinterpret_cast<const char*>(&v);
|
494
493
|
typedef typename boost::intrusive::pointer_traits<pointer>::template rebind_pointer<const char>::type const_char_pointer;
|
@@ -501,7 +500,7 @@ template <class T, class VoidAlloc, class Options>
|
|
501
500
|
inline typename small_vector_allocator<T, VoidAlloc, Options>::pointer
|
502
501
|
small_vector_allocator<T, VoidAlloc, Options>::internal_storage() BOOST_NOEXCEPT_OR_NOTHROW
|
503
502
|
{
|
504
|
-
vector_type& v =
|
503
|
+
vector_type& v = *static_cast<vector_type*>(static_cast<void*>(this));
|
505
504
|
BOOST_ASSERT((std::size_t(this) % dtl::alignment_of< small_vector_storage_offset<T, allocator_type, Options> >::value) == 0);
|
506
505
|
char* addr = reinterpret_cast<char*>(&v);
|
507
506
|
typedef typename boost::intrusive::pointer_traits<pointer>::template rebind_pointer<char>::type char_pointer;
|
@@ -550,7 +549,7 @@ class small_vector
|
|
550
549
|
typedef typename base_type::size_type size_type;
|
551
550
|
typedef typename base_type::value_type value_type;
|
552
551
|
|
553
|
-
inline static
|
552
|
+
inline static size_type internal_capacity()
|
554
553
|
{ return static_capacity; }
|
555
554
|
|
556
555
|
typedef allocator_traits<typename base_type::allocator_type> allocator_traits_type;
|
@@ -558,7 +557,7 @@ class small_vector
|
|
558
557
|
#endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
|
559
558
|
|
560
559
|
//! @brief The capacity/max size of the container
|
561
|
-
|
560
|
+
BOOST_STATIC_CONSTEXPR size_type static_capacity = small_vector_storage_definer<T, N, Options>::type::sms_size;
|
562
561
|
|
563
562
|
public:
|
564
563
|
inline small_vector()
|
@@ -627,17 +626,17 @@ class small_vector
|
|
627
626
|
{ this->assign(other.cbegin(), other.cend()); }
|
628
627
|
|
629
628
|
inline explicit small_vector(BOOST_RV_REF(base_type) other)
|
630
|
-
: base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator()))
|
631
|
-
{
|
629
|
+
: base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator()), other)
|
630
|
+
{}
|
632
631
|
|
633
632
|
inline small_vector(BOOST_RV_REF(small_vector) other)
|
634
633
|
BOOST_NOEXCEPT_IF(boost::container::dtl::is_nothrow_move_constructible<value_type>::value)
|
635
|
-
: base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator()))
|
636
|
-
{
|
634
|
+
: base_type(initial_capacity_t(), internal_capacity(), ::boost::move(other.get_stored_allocator()), other)
|
635
|
+
{}
|
637
636
|
|
638
637
|
inline small_vector(BOOST_RV_REF(small_vector) other, const allocator_type &a)
|
639
|
-
: base_type(initial_capacity_t(), internal_capacity(), a)
|
640
|
-
{
|
638
|
+
: base_type(initial_capacity_t(), internal_capacity(), a, other)
|
639
|
+
{}
|
641
640
|
|
642
641
|
#if !defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST)
|
643
642
|
inline small_vector(std::initializer_list<value_type> il, const allocator_type& a = allocator_type())
|
@@ -663,7 +662,10 @@ class small_vector
|
|
663
662
|
{ return static_cast<small_vector&>(this->base_type::operator=(boost::move(other))); }
|
664
663
|
|
665
664
|
inline void swap(small_vector &other)
|
666
|
-
{ return this->base_type::
|
665
|
+
{ return this->base_type::prot_swap(other, static_capacity); }
|
666
|
+
|
667
|
+
inline void shrink_to_fit()
|
668
|
+
{ this->base_type::prot_shrink_to_fit_small(this->internal_capacity()); }
|
667
669
|
};
|
668
670
|
|
669
671
|
}}
|
@@ -678,7 +680,7 @@ template <class T, class Allocator>
|
|
678
680
|
struct has_trivial_destructor_after_move<boost::container::vector<T, Allocator> >
|
679
681
|
{
|
680
682
|
typedef typename ::boost::container::allocator_traits<Allocator>::pointer pointer;
|
681
|
-
|
683
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<Allocator>::value &&
|
682
684
|
::boost::has_trivial_destructor_after_move<pointer>::value;
|
683
685
|
};
|
684
686
|
|