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
@@ -26,7 +26,6 @@
|
|
26
26
|
|
27
27
|
#include <boost/move/utility_core.hpp>
|
28
28
|
|
29
|
-
#include <boost/container/detail/pair.hpp>
|
30
29
|
#include <boost/container/vector.hpp>
|
31
30
|
#include <boost/container/allocator_traits.hpp>
|
32
31
|
|
@@ -43,11 +42,11 @@
|
|
43
42
|
|
44
43
|
#include <boost/intrusive/detail/minimal_pair_header.hpp> //pair
|
45
44
|
|
46
|
-
#include <boost/move/make_unique.hpp>
|
47
45
|
#include <boost/move/iterator.hpp>
|
48
46
|
#include <boost/move/adl_move_swap.hpp>
|
49
47
|
#include <boost/move/detail/iterator_to_raw_pointer.hpp>
|
50
48
|
#include <boost/move/detail/force_ptr.hpp>
|
49
|
+
#include <boost/move/detail/launder.hpp>
|
51
50
|
#include <boost/move/algo/adaptive_sort.hpp>
|
52
51
|
#include <boost/move/algo/detail/pdqsort.hpp>
|
53
52
|
|
@@ -583,7 +582,7 @@ class flat_tree
|
|
583
582
|
(boost::container::dtl::, container_type
|
584
583
|
,stored_allocator_type, allocator_type) stored_allocator_type;
|
585
584
|
|
586
|
-
|
585
|
+
BOOST_STATIC_CONSTEXPR bool has_stored_allocator_type =
|
587
586
|
BOOST_INTRUSIVE_HAS_TYPE(boost::container::dtl::, container_type, stored_allocator_type);
|
588
587
|
|
589
588
|
private:
|
@@ -955,6 +954,7 @@ class flat_tree
|
|
955
954
|
template <class InIt>
|
956
955
|
void insert_equal(ordered_range_t, InIt first, InIt last)
|
957
956
|
{
|
957
|
+
BOOST_ASSERT((is_sorted)(first, last, this->priv_value_comp()));
|
958
958
|
const bool value = boost::container::dtl::
|
959
959
|
has_member_function_callable_with_merge_unique<container_type, InIt, InIt, value_compare>::value;
|
960
960
|
(flat_tree_merge_equal)(this->m_data.m_seq, first, last, this->priv_value_comp(), dtl::bool_<value>());
|
@@ -963,6 +963,7 @@ class flat_tree
|
|
963
963
|
template <class InIt>
|
964
964
|
void insert_unique(ordered_unique_range_t, InIt first, InIt last)
|
965
965
|
{
|
966
|
+
BOOST_ASSERT((is_sorted_and_unique)(this->m_data.m_seq.cbegin(), this->m_data.m_seq.cend(), this->priv_value_comp()));
|
966
967
|
const bool value = boost::container::dtl::
|
967
968
|
has_member_function_callable_with_merge_unique<container_type, InIt, InIt, value_compare>::value;
|
968
969
|
(flat_tree_merge_unique)(this->m_data.m_seq, first, last, this->priv_value_comp(), dtl::bool_<value>());
|
@@ -975,8 +976,8 @@ class flat_tree
|
|
975
976
|
{
|
976
977
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
|
977
978
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
978
|
-
stored_allocator_traits::construct(a,
|
979
|
-
value_type *pval = move_detail::
|
979
|
+
stored_allocator_traits::construct(a, (value_type *)(&v), ::boost::forward<Args>(args)... );
|
980
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);
|
980
981
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);
|
981
982
|
return this->insert_unique(::boost::move(*pval));
|
982
983
|
}
|
@@ -987,8 +988,8 @@ class flat_tree
|
|
987
988
|
//hint checked in insert_unique
|
988
989
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
|
989
990
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
990
|
-
stored_allocator_traits::construct(a,
|
991
|
-
value_type *pval = move_detail::
|
991
|
+
stored_allocator_traits::construct(a, (value_type*)(&v), ::boost::forward<Args>(args)... );
|
992
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);
|
992
993
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);
|
993
994
|
return this->insert_unique(hint, ::boost::move(*pval));
|
994
995
|
}
|
@@ -998,8 +999,8 @@ class flat_tree
|
|
998
999
|
{
|
999
1000
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
|
1000
1001
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
1001
|
-
stored_allocator_traits::construct(a,
|
1002
|
-
value_type *pval = move_detail::
|
1002
|
+
stored_allocator_traits::construct(a, (value_type*)(&v), ::boost::forward<Args>(args)... );
|
1003
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);
|
1003
1004
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);
|
1004
1005
|
return this->insert_equal(::boost::move(*pval));
|
1005
1006
|
}
|
@@ -1010,8 +1011,8 @@ class flat_tree
|
|
1010
1011
|
//hint checked in insert_equal
|
1011
1012
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;
|
1012
1013
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();
|
1013
|
-
stored_allocator_traits::construct(a,
|
1014
|
-
value_type *pval = move_detail::
|
1014
|
+
stored_allocator_traits::construct(a, (value_type*)(&v), ::boost::forward<Args>(args)... );
|
1015
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);
|
1015
1016
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);
|
1016
1017
|
return this->insert_equal(hint, ::boost::move(*pval));
|
1017
1018
|
}
|
@@ -1044,8 +1045,8 @@ class flat_tree
|
|
1044
1045
|
{\
|
1045
1046
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
|
1046
1047
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
1047
|
-
stored_allocator_traits::construct(a,
|
1048
|
-
value_type *pval = move_detail::
|
1048
|
+
stored_allocator_traits::construct(a, (value_type *)(&v) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
1049
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);\
|
1049
1050
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);\
|
1050
1051
|
return this->insert_unique(::boost::move(*pval));\
|
1051
1052
|
}\
|
@@ -1055,8 +1056,8 @@ class flat_tree
|
|
1055
1056
|
{\
|
1056
1057
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
|
1057
1058
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
1058
|
-
stored_allocator_traits::construct(a,
|
1059
|
-
value_type *pval = move_detail::
|
1059
|
+
stored_allocator_traits::construct(a, (value_type *)(&v) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
1060
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);\
|
1060
1061
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);\
|
1061
1062
|
return this->insert_unique(hint, ::boost::move(*pval));\
|
1062
1063
|
}\
|
@@ -1066,8 +1067,8 @@ class flat_tree
|
|
1066
1067
|
{\
|
1067
1068
|
typename dtl::aligned_storage<sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
|
1068
1069
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
1069
|
-
stored_allocator_traits::construct(a,
|
1070
|
-
value_type *pval = move_detail::
|
1070
|
+
stored_allocator_traits::construct(a, (value_type *)(&v) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
1071
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);\
|
1071
1072
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);\
|
1072
1073
|
return this->insert_equal(::boost::move(*pval));\
|
1073
1074
|
}\
|
@@ -1077,8 +1078,8 @@ class flat_tree
|
|
1077
1078
|
{\
|
1078
1079
|
typename dtl::aligned_storage <sizeof(value_type), dtl::alignment_of<value_type>::value>::type v;\
|
1079
1080
|
get_stored_allocator_noconst_return_t a = this->get_stored_allocator();\
|
1080
|
-
stored_allocator_traits::construct(a,
|
1081
|
-
value_type *pval = move_detail::
|
1081
|
+
stored_allocator_traits::construct(a, (value_type *)(&v) BOOST_MOVE_I##N BOOST_MOVE_FWD##N);\
|
1082
|
+
value_type *pval = move_detail::launder_cast<value_type *>(&v);\
|
1082
1083
|
value_destructor<stored_allocator_type, value_type> d(a, *pval);\
|
1083
1084
|
return this->insert_equal(hint, ::boost::move(*pval));\
|
1084
1085
|
}\
|
@@ -1126,9 +1127,6 @@ class flat_tree
|
|
1126
1127
|
return ret;
|
1127
1128
|
}
|
1128
1129
|
|
1129
|
-
inline iterator erase(const_iterator position)
|
1130
|
-
{ return this->m_data.m_seq.erase(position); }
|
1131
|
-
|
1132
1130
|
size_type erase(const key_type& k)
|
1133
1131
|
{
|
1134
1132
|
std::pair<iterator,iterator > itp = this->equal_range(k);
|
@@ -1148,6 +1146,40 @@ class flat_tree
|
|
1148
1146
|
return ret;
|
1149
1147
|
}
|
1150
1148
|
|
1149
|
+
template <class K>
|
1150
|
+
inline typename dtl::enable_if_c<
|
1151
|
+
dtl::is_transparent<key_compare>::value && //transparent
|
1152
|
+
!dtl::is_convertible<K, iterator>::value && //not convertible to iterator
|
1153
|
+
!dtl::is_convertible<K, const_iterator>::value //not convertible to const_iterator
|
1154
|
+
, size_type>::type
|
1155
|
+
erase(const K& k)
|
1156
|
+
{
|
1157
|
+
std::pair<iterator, iterator > itp = this->equal_range(k);
|
1158
|
+
size_type ret = static_cast<size_type>(itp.second - itp.first);
|
1159
|
+
if (ret) {
|
1160
|
+
this->m_data.m_seq.erase(itp.first, itp.second);
|
1161
|
+
}
|
1162
|
+
return ret;
|
1163
|
+
}
|
1164
|
+
|
1165
|
+
template <class K>
|
1166
|
+
inline typename dtl::enable_if_c<
|
1167
|
+
dtl::is_transparent<key_compare>::value && //transparent
|
1168
|
+
!dtl::is_convertible<K, iterator>::value && //not convertible to iterator
|
1169
|
+
!dtl::is_convertible<K, const_iterator>::value //not convertible to const_iterator
|
1170
|
+
, size_type>::type
|
1171
|
+
erase_unique(const K& k)
|
1172
|
+
{
|
1173
|
+
const_iterator i = static_cast<const flat_tree&>(*this).find(k);
|
1174
|
+
size_type ret = static_cast<size_type>(i != this->cend());
|
1175
|
+
if (ret)
|
1176
|
+
this->erase(i);
|
1177
|
+
return ret;
|
1178
|
+
}
|
1179
|
+
|
1180
|
+
inline iterator erase(const_iterator position)
|
1181
|
+
{ return this->m_data.m_seq.erase(position); }
|
1182
|
+
|
1151
1183
|
inline iterator erase(const_iterator first, const_iterator last)
|
1152
1184
|
{ return this->m_data.m_seq.erase(first, last); }
|
1153
1185
|
|
@@ -1700,7 +1732,7 @@ struct has_trivial_destructor_after_move<boost::container::dtl::flat_tree<T, Key
|
|
1700
1732
|
typedef boost::container::dtl::flat_tree<T, KeyOfValue, Compare, AllocatorOrContainer> flat_tree;
|
1701
1733
|
typedef typename flat_tree::container_type container_type;
|
1702
1734
|
typedef typename flat_tree::key_compare key_compare;
|
1703
|
-
|
1735
|
+
BOOST_STATIC_CONSTEXPR bool value = ::boost::has_trivial_destructor_after_move<container_type>::value &&
|
1704
1736
|
::boost::has_trivial_destructor_after_move<key_compare>::value;
|
1705
1737
|
};
|
1706
1738
|
|
@@ -80,7 +80,7 @@ namespace function_detector {
|
|
80
80
|
template <class U> \
|
81
81
|
static NotFoundType Test( ... ); \
|
82
82
|
public : \
|
83
|
-
|
83
|
+
BOOST_STATIC_CONSTEXPR int check = NotFound + (sizeof(Test<T>(0, 0)) - sizeof(NotFoundType));\
|
84
84
|
};\
|
85
85
|
}}} //namespace boost::container::function_detector {
|
86
86
|
|
@@ -51,7 +51,7 @@ namespace dtl {
|
|
51
51
|
template <class Container>
|
52
52
|
struct is_container
|
53
53
|
{
|
54
|
-
|
54
|
+
BOOST_STATIC_CONSTEXPR bool value =
|
55
55
|
boost::container::is_container_detail::
|
56
56
|
has_member_function_callable_with_size <const Container>::value &&
|
57
57
|
boost::container::is_container_detail::
|
@@ -61,7 +61,7 @@ struct is_container
|
|
61
61
|
template <>
|
62
62
|
struct is_container<void>
|
63
63
|
{
|
64
|
-
|
64
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
65
65
|
};
|
66
66
|
|
67
67
|
|
@@ -51,7 +51,7 @@ namespace dtl {
|
|
51
51
|
template <class Container>
|
52
52
|
struct is_contiguous_container
|
53
53
|
{
|
54
|
-
|
54
|
+
BOOST_STATIC_CONSTEXPR bool value =
|
55
55
|
boost::container::is_contiguous_container_detail::
|
56
56
|
has_member_function_callable_with_data<Container>::value &&
|
57
57
|
boost::container::is_contiguous_container_detail::
|
@@ -61,25 +61,25 @@ struct pair;
|
|
61
61
|
template <class T>
|
62
62
|
struct is_pair
|
63
63
|
{
|
64
|
-
|
64
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
65
65
|
};
|
66
66
|
|
67
67
|
template <class T1, class T2>
|
68
68
|
struct is_pair< pair<T1, T2> >
|
69
69
|
{
|
70
|
-
|
70
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
71
71
|
};
|
72
72
|
|
73
73
|
template <class T1, class T2>
|
74
74
|
struct is_pair< std::pair<T1, T2> >
|
75
75
|
{
|
76
|
-
|
76
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
77
77
|
};
|
78
78
|
|
79
79
|
template <class T>
|
80
80
|
struct is_not_pair
|
81
81
|
{
|
82
|
-
|
82
|
+
BOOST_STATIC_CONSTEXPR bool value = !is_pair<T>::value;
|
83
83
|
};
|
84
84
|
|
85
85
|
} //namespace dtl {
|
@@ -723,50 +723,50 @@ struct has_iterator_category
|
|
723
723
|
template <typename X>
|
724
724
|
static two test(int, ...);
|
725
725
|
|
726
|
-
|
726
|
+
BOOST_STATIC_CONSTEXPR bool value = (1 == sizeof(test<T>(0, 0)));
|
727
727
|
};
|
728
728
|
|
729
729
|
|
730
730
|
template<class T, bool = has_iterator_category<T>::value >
|
731
731
|
struct is_input_iterator
|
732
732
|
{
|
733
|
-
|
733
|
+
BOOST_STATIC_CONSTEXPR bool value = is_same<typename T::iterator_category, std::input_iterator_tag>::value;
|
734
734
|
};
|
735
735
|
|
736
736
|
template<class T>
|
737
737
|
struct is_input_iterator<T, false>
|
738
738
|
{
|
739
|
-
|
739
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
740
740
|
};
|
741
741
|
|
742
742
|
template<class T>
|
743
743
|
struct is_not_input_iterator
|
744
744
|
{
|
745
|
-
|
745
|
+
BOOST_STATIC_CONSTEXPR bool value = !is_input_iterator<T>::value;
|
746
746
|
};
|
747
747
|
|
748
748
|
template<class T, bool = has_iterator_category<T>::value >
|
749
749
|
struct is_forward_iterator
|
750
750
|
{
|
751
|
-
|
751
|
+
BOOST_STATIC_CONSTEXPR bool value = is_same<typename T::iterator_category, std::forward_iterator_tag>::value;
|
752
752
|
};
|
753
753
|
|
754
754
|
template<class T>
|
755
755
|
struct is_forward_iterator<T, false>
|
756
756
|
{
|
757
|
-
|
757
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
758
758
|
};
|
759
759
|
|
760
760
|
template<class T, bool = has_iterator_category<T>::value >
|
761
761
|
struct is_bidirectional_iterator
|
762
762
|
{
|
763
|
-
|
763
|
+
BOOST_STATIC_CONSTEXPR bool value = is_same<typename T::iterator_category, std::bidirectional_iterator_tag>::value;
|
764
764
|
};
|
765
765
|
|
766
766
|
template<class T>
|
767
767
|
struct is_bidirectional_iterator<T, false>
|
768
768
|
{
|
769
|
-
|
769
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
770
770
|
};
|
771
771
|
|
772
772
|
template<class IINodeType>
|
@@ -100,7 +100,7 @@ struct upper_power_of_2_loop_ct
|
|
100
100
|
template <Integer I, Integer P>
|
101
101
|
struct apply
|
102
102
|
{
|
103
|
-
|
103
|
+
BOOST_STATIC_CONSTEXPR Integer value =
|
104
104
|
upper_power_of_2_loop_ct<Integer, (I > P*2)>::template apply<I, P*2>::value;
|
105
105
|
};
|
106
106
|
};
|
@@ -111,14 +111,14 @@ struct upper_power_of_2_loop_ct<Integer, false>
|
|
111
111
|
template <Integer I, Integer P>
|
112
112
|
struct apply
|
113
113
|
{
|
114
|
-
|
114
|
+
BOOST_STATIC_CONSTEXPR Integer value = P;
|
115
115
|
};
|
116
116
|
};
|
117
117
|
|
118
118
|
template <typename Integer, Integer I>
|
119
119
|
struct upper_power_of_2_ct
|
120
120
|
{
|
121
|
-
|
121
|
+
BOOST_STATIC_CONSTEXPR Integer value = upper_power_of_2_loop_ct<Integer, (I > 1)>::template apply<I, 2>::value;
|
122
122
|
};
|
123
123
|
|
124
124
|
//This function uses binary search to discover the
|
@@ -144,27 +144,27 @@ inline std::size_t floor_log2 (std::size_t x)
|
|
144
144
|
template<std::size_t I1, std::size_t I2>
|
145
145
|
struct gcd_ct
|
146
146
|
{
|
147
|
-
|
148
|
-
|
149
|
-
|
147
|
+
BOOST_STATIC_CONSTEXPR std::size_t Max = I1 > I2 ? I1 : I2;
|
148
|
+
BOOST_STATIC_CONSTEXPR std::size_t Min = I1 < I2 ? I1 : I2;
|
149
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = gcd_ct<Min, Max % Min>::value;
|
150
150
|
};
|
151
151
|
|
152
152
|
template<std::size_t I1>
|
153
153
|
struct gcd_ct<I1, 0>
|
154
154
|
{
|
155
|
-
|
155
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = I1;
|
156
156
|
};
|
157
157
|
|
158
158
|
template<std::size_t I1>
|
159
159
|
struct gcd_ct<0, I1>
|
160
160
|
{
|
161
|
-
|
161
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = I1;
|
162
162
|
};
|
163
163
|
|
164
164
|
template<std::size_t I1, std::size_t I2>
|
165
165
|
struct lcm_ct
|
166
166
|
{
|
167
|
-
|
167
|
+
BOOST_STATIC_CONSTEXPR std::size_t value = I1 * I2 / gcd_ct<I1, I2>::value;
|
168
168
|
};
|
169
169
|
|
170
170
|
} // namespace dtl
|
@@ -84,13 +84,13 @@ struct void_t { typedef void type; };
|
|
84
84
|
template <class T, class=void>
|
85
85
|
struct is_transparent_base
|
86
86
|
{
|
87
|
-
|
87
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
88
88
|
};
|
89
89
|
|
90
90
|
template <class T>
|
91
91
|
struct is_transparent_base<T, typename void_t<typename T::is_transparent>::type>
|
92
92
|
{
|
93
|
-
|
93
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
94
94
|
};
|
95
95
|
|
96
96
|
template <class T>
|
@@ -112,7 +112,7 @@ template<typename...> using variadic_void_t = void;
|
|
112
112
|
template<typename Allocator, typename = void>
|
113
113
|
struct is_allocator
|
114
114
|
{
|
115
|
-
|
115
|
+
BOOST_STATIC_CONSTEXPR bool value = false;
|
116
116
|
};
|
117
117
|
|
118
118
|
template <typename T>
|
@@ -123,7 +123,7 @@ struct is_allocator < Allocator,
|
|
123
123
|
variadic_void_t< typename Allocator::value_type
|
124
124
|
, decltype(ctad_declval<Allocator&>().allocate(size_t{})) >>
|
125
125
|
{
|
126
|
-
|
126
|
+
BOOST_STATIC_CONSTEXPR bool value = true;
|
127
127
|
};
|
128
128
|
|
129
129
|
template<class T>
|
@@ -25,15 +25,17 @@
|
|
25
25
|
#include <boost/container/container_fwd.hpp>
|
26
26
|
// container/detail
|
27
27
|
#include <boost/move/detail/to_raw_pointer.hpp>
|
28
|
-
#include <boost/container/detail/transform_iterator.hpp>
|
29
28
|
#include <boost/container/detail/type_traits.hpp>
|
30
29
|
#include <boost/container/detail/placement_new.hpp>
|
30
|
+
#include <boost/container/detail/iterator.hpp>
|
31
31
|
// intrusive
|
32
32
|
#include <boost/intrusive/slist.hpp>
|
33
33
|
#include <boost/intrusive/pointer_traits.hpp>
|
34
34
|
#include <boost/intrusive/detail/twin.hpp>
|
35
35
|
// move
|
36
36
|
#include <boost/move/utility_core.hpp>
|
37
|
+
#include <boost/move/detail/iterator_to_raw_pointer.hpp>
|
38
|
+
|
37
39
|
|
38
40
|
namespace boost {
|
39
41
|
namespace container {
|
@@ -187,15 +189,100 @@ class basic_multiallocation_chain
|
|
187
189
|
}
|
188
190
|
};
|
189
191
|
|
190
|
-
template<class T>
|
191
|
-
|
192
|
+
template <class Iterator, class T>
|
193
|
+
class multialloc_iterator
|
194
|
+
: public boost::container::iterator
|
195
|
+
< typename Iterator::iterator_category
|
196
|
+
, T
|
197
|
+
, typename Iterator::difference_type
|
198
|
+
, T*
|
199
|
+
, T&
|
200
|
+
>
|
192
201
|
{
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
{
|
202
|
+
public:
|
203
|
+
inline explicit multialloc_iterator(const Iterator &it)
|
204
|
+
: m_it(it)
|
205
|
+
{}
|
206
|
+
|
207
|
+
inline explicit multialloc_iterator()
|
208
|
+
: m_it()
|
209
|
+
{}
|
210
|
+
|
211
|
+
//Constructors
|
212
|
+
inline multialloc_iterator& operator++()
|
213
|
+
{ increment(); return *this; }
|
214
|
+
|
215
|
+
inline multialloc_iterator operator++(int)
|
216
|
+
{
|
217
|
+
multialloc_iterator result (*this);
|
218
|
+
increment();
|
219
|
+
return result;
|
220
|
+
}
|
221
|
+
|
222
|
+
inline friend bool operator== (const multialloc_iterator& i, const multialloc_iterator& i2)
|
223
|
+
{ return i.equal(i2); }
|
224
|
+
|
225
|
+
inline friend bool operator!= (const multialloc_iterator& i, const multialloc_iterator& i2)
|
226
|
+
{ return !(i == i2); }
|
227
|
+
|
228
|
+
inline friend typename Iterator::difference_type operator- (const multialloc_iterator& i, const multialloc_iterator& i2)
|
229
|
+
{ return i2.distance_to(i); }
|
230
|
+
|
231
|
+
//Arithmetic
|
232
|
+
inline multialloc_iterator& operator+=(typename Iterator::difference_type off)
|
233
|
+
{ this->advance(off); return *this; }
|
234
|
+
|
235
|
+
inline multialloc_iterator operator+(typename Iterator::difference_type off) const
|
236
|
+
{
|
237
|
+
multialloc_iterator other(*this);
|
238
|
+
other.advance(off);
|
239
|
+
return other;
|
240
|
+
}
|
241
|
+
|
242
|
+
inline friend multialloc_iterator operator+(typename Iterator::difference_type off, const multialloc_iterator& right)
|
243
|
+
{ return right + off; }
|
244
|
+
|
245
|
+
inline multialloc_iterator& operator-=(typename Iterator::difference_type off)
|
246
|
+
{ this->advance(-off); return *this; }
|
247
|
+
|
248
|
+
inline multialloc_iterator operator-(typename Iterator::difference_type off) const
|
249
|
+
{ return *this + (-off); }
|
250
|
+
|
251
|
+
inline T& operator*() const
|
252
|
+
{ return *this->operator->(); }
|
253
|
+
|
254
|
+
inline T* operator->() const
|
255
|
+
{ return static_cast<T*>(static_cast<void*>(boost::movelib::iterator_to_raw_pointer(m_it))); }
|
256
|
+
|
257
|
+
inline Iterator & base()
|
258
|
+
{ return m_it; }
|
259
|
+
|
260
|
+
inline const Iterator & base() const
|
261
|
+
{ return m_it; }
|
262
|
+
|
263
|
+
private:
|
264
|
+
Iterator m_it;
|
265
|
+
|
266
|
+
inline void increment()
|
267
|
+
{ ++m_it; }
|
268
|
+
|
269
|
+
inline void decrement()
|
270
|
+
{ --m_it; }
|
271
|
+
|
272
|
+
inline bool equal(const multialloc_iterator &other) const
|
273
|
+
{ return m_it == other.m_it; }
|
274
|
+
|
275
|
+
inline bool less(const multialloc_iterator &other) const
|
276
|
+
{ return other.m_it < m_it; }
|
277
|
+
|
278
|
+
inline void advance(typename Iterator::difference_type n)
|
279
|
+
{ boost::container::iterator_advance(m_it, n); }
|
280
|
+
|
281
|
+
inline typename Iterator::difference_type distance_to(const multialloc_iterator &other)const
|
282
|
+
{ return boost::container::iterator_distance(other.m_it, m_it); }
|
197
283
|
};
|
198
284
|
|
285
|
+
|
199
286
|
template<class MultiallocationChain, class T>
|
200
287
|
class transform_multiallocation_chain
|
201
288
|
: public MultiallocationChain
|
@@ -217,9 +304,8 @@ class transform_multiallocation_chain
|
|
217
304
|
{ return pointer_traits::static_cast_from(p); }
|
218
305
|
|
219
306
|
public:
|
220
|
-
typedef
|
221
|
-
<
|
222
|
-
, dtl::cast_functor <T> > iterator;
|
307
|
+
typedef multialloc_iterator
|
308
|
+
<typename MultiallocationChain::iterator, T> iterator;
|
223
309
|
typedef typename MultiallocationChain::size_type size_type;
|
224
310
|
typedef boost::intrusive::twin<pointer> pointer_pair;
|
225
311
|
|
@@ -31,12 +31,14 @@
|
|
31
31
|
#include <boost/container/detail/construct_in_place.hpp>
|
32
32
|
#include <boost/container/detail/destroyers.hpp>
|
33
33
|
#include <boost/move/detail/iterator_to_raw_pointer.hpp>
|
34
|
+
#include <boost/move/detail/launder.hpp>
|
34
35
|
#include <boost/container/detail/mpl.hpp>
|
35
36
|
#include <boost/container/detail/placement_new.hpp>
|
36
37
|
#include <boost/move/detail/to_raw_pointer.hpp>
|
37
38
|
#include <boost/container/detail/type_traits.hpp>
|
38
39
|
#include <boost/container/detail/version_type.hpp>
|
39
40
|
#include <boost/container/detail/is_pair.hpp>
|
41
|
+
#include <boost/container/detail/pair.hpp>
|
40
42
|
// intrusive
|
41
43
|
#include <boost/intrusive/detail/mpl.hpp>
|
42
44
|
#include <boost/intrusive/options.hpp>
|
@@ -119,16 +121,16 @@ struct base_node
|
|
119
121
|
}
|
120
122
|
|
121
123
|
inline T &get_data()
|
122
|
-
{ return *move_detail::force_ptr<T*>(this->m_storage
|
124
|
+
{ return *move_detail::force_ptr<T*>(&this->m_storage); }
|
123
125
|
|
124
126
|
inline const T &get_data() const
|
125
|
-
{ return *move_detail::
|
127
|
+
{ return *move_detail::launder_cast<const T*>(&this->m_storage); }
|
126
128
|
|
127
129
|
inline internal_type &get_real_data()
|
128
|
-
{ return *move_detail::
|
130
|
+
{ return *move_detail::launder_cast<internal_type*>(&this->m_storage); }
|
129
131
|
|
130
132
|
inline const internal_type &get_real_data() const
|
131
|
-
{ return *move_detail::
|
133
|
+
{ return *move_detail::launder_cast<const internal_type*>(&this->m_storage); }
|
132
134
|
|
133
135
|
#if defined(BOOST_CONTAINER_DISABLE_ALIASING_WARNING)
|
134
136
|
#pragma GCC diagnostic pop
|
@@ -534,6 +536,19 @@ struct node_alloc_holder
|
|
534
536
|
return this->icont().erase_and_dispose(k, chain_holder.get_chain_builder());
|
535
537
|
}
|
536
538
|
|
539
|
+
template<class Key, class KeyCompare>
|
540
|
+
inline size_type erase_key(const Key& k, KeyCompare cmp, version_1)
|
541
|
+
{
|
542
|
+
return this->icont().erase_and_dispose(k, cmp, Destroyer(this->node_alloc()));
|
543
|
+
}
|
544
|
+
|
545
|
+
template<class Key, class KeyCompare>
|
546
|
+
inline size_type erase_key(const Key& k, KeyCompare cmp, version_2)
|
547
|
+
{
|
548
|
+
allocator_multialloc_chain_node_deallocator<NodeAlloc> chain_holder(this->node_alloc());
|
549
|
+
return this->icont().erase_and_dispose(k, cmp, chain_holder.get_chain_builder());
|
550
|
+
}
|
551
|
+
|
537
552
|
protected:
|
538
553
|
struct cloner
|
539
554
|
{
|
@@ -52,7 +52,7 @@ class private_node_pool
|
|
52
52
|
|
53
53
|
public:
|
54
54
|
typedef typename base_t::multiallocation_chain multiallocation_chain;
|
55
|
-
|
55
|
+
BOOST_STATIC_CONSTEXPR std::size_t nodes_per_block = NodesPerBlock;
|
56
56
|
|
57
57
|
//!Constructor from a segment manager. Never throws
|
58
58
|
private_node_pool()
|