passenger 6.0.22 → 6.0.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +59 -1
- data/Rakefile +13 -2
- data/bin/passenger-install-apache2-module +5 -0
- data/bin/passenger-install-nginx-module +18 -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 +24 -13
- data/package.json +1 -1
- data/passenger.gemspec +4 -2
- data/resources/templates/standalone/server.erb +1 -0
- 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 +9 -1
- 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 -4
- 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 +8 -3
- data/src/agent/Core/Controller/CheckoutSession.cpp +24 -1
- data/src/agent/Core/Controller/Config.h +5 -1
- data/src/agent/Core/Controller.h +1 -0
- data/src/agent/Core/CoreMain.cpp +10 -17
- data/src/agent/Core/OptionParser.h +3 -0
- data/src/agent/Core/SpawningKit/ErrorRenderer.h +5 -0
- 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 +2 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +4 -7
- data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +5 -0
- data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +15 -0
- data/src/apache2_module/ConfigGeneral/ManifestGeneration.h +5 -3
- data/src/apache2_module/DirConfig/AutoGeneratedCreateFunction.cpp +5 -0
- data/src/apache2_module/DirConfig/AutoGeneratedHeaderSerialization.cpp +3 -0
- data/src/apache2_module/DirConfig/AutoGeneratedManifestGeneration.cpp +13 -0
- data/src/apache2_module/DirConfig/AutoGeneratedMergeFunction.cpp +7 -0
- data/src/apache2_module/DirConfig/AutoGeneratedStruct.h +16 -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/LString.h +4 -0
- 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/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +8 -0
- data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +12 -0
- data/src/nginx_module/Configuration.c +7 -2
- data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +6 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +14 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +3 -0
- data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +4 -0
- data/src/ruby_native_extension/passenger_native_support.c +1 -0
- data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +5 -0
- 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/nginx/config_options.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +32 -5
- data/src/ruby_supportlib/phusion_passenger/platform_info/depcheck_specs/gems.rb +10 -0
- data/src/ruby_supportlib/phusion_passenger/rack/handler.rb +73 -0
- data/src/ruby_supportlib/phusion_passenger/rack_handler.rb +30 -56
- data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +5 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +1 -0
- data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +0 -4
- data/src/ruby_supportlib/phusion_passenger/utils/json.rb +7 -198
- data/src/ruby_supportlib/phusion_passenger/utils/strscan.rb +67 -0
- data/src/ruby_supportlib/phusion_passenger/utils.rb +5 -15
- data/src/ruby_supportlib/phusion_passenger.rb +5 -5
- metadata +39 -10
@@ -0,0 +1,53 @@
|
|
1
|
+
//////////////////////////////////////////////////////////////////////////////
|
2
|
+
//
|
3
|
+
// (C) Copyright Ion Gaztanaga 2014-2015. Distributed under the Boost
|
4
|
+
// Software License, Version 1.0. (See accompanying file
|
5
|
+
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
6
|
+
//
|
7
|
+
// See http://www.boost.org/libs/container for documentation.
|
8
|
+
//
|
9
|
+
//////////////////////////////////////////////////////////////////////////////
|
10
|
+
#ifndef BOOST_MOVE_DETAIL_LAUNDER_HPP
|
11
|
+
#define BOOST_MOVE_DETAIL_LAUNDER_HPP
|
12
|
+
|
13
|
+
#ifndef BOOST_CONFIG_HPP
|
14
|
+
# include <boost/config.hpp>
|
15
|
+
#endif
|
16
|
+
|
17
|
+
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
18
|
+
# pragma once
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#include <boost/move/detail/workaround.hpp>
|
22
|
+
|
23
|
+
namespace boost {
|
24
|
+
namespace move_detail {
|
25
|
+
|
26
|
+
#if defined(BOOST_MOVE_HAS_BUILTIN_LAUNDER)
|
27
|
+
|
28
|
+
template<class T>
|
29
|
+
BOOST_MOVE_FORCEINLINE T* launder(T* p)
|
30
|
+
{
|
31
|
+
return __builtin_launder( p );
|
32
|
+
}
|
33
|
+
|
34
|
+
#else
|
35
|
+
|
36
|
+
template<class T>
|
37
|
+
BOOST_MOVE_FORCEINLINE T* launder(T* p)
|
38
|
+
{
|
39
|
+
return p;
|
40
|
+
}
|
41
|
+
|
42
|
+
#endif
|
43
|
+
|
44
|
+
template<class T>
|
45
|
+
BOOST_MOVE_FORCEINLINE T launder_cast(const volatile void* p)
|
46
|
+
{
|
47
|
+
return (launder)((T)p);
|
48
|
+
}
|
49
|
+
|
50
|
+
} //namespace move_detail {
|
51
|
+
} //namespace boost {
|
52
|
+
|
53
|
+
#endif //#ifndef BOOST_MOVE_DETAIL_LAUNDER_HPP
|
@@ -1197,12 +1197,20 @@ struct aligned_struct;
|
|
1197
1197
|
template <> struct aligned_struct<1> { char data; };
|
1198
1198
|
template <> struct aligned_struct<2> { short data; };
|
1199
1199
|
template <> struct aligned_struct<4> { int data; };
|
1200
|
-
|
1200
|
+
//8 byte alignment does not propely work in x86 if attribute is not used.
|
1201
|
+
//If a user declares a variable with 8 byte alignment, such as a double
|
1202
|
+
//the compiler will not realign the stack.
|
1203
|
+
//
|
1204
|
+
//If _declspec(align) is used MSVC will realign the stack.
|
1205
|
+
//
|
1206
|
+
//Disabled specialization
|
1207
|
+
//template <> struct aligned_struct<8> { double data; };
|
1201
1208
|
|
1202
1209
|
#define BOOST_MOVE_ALIGNED_STRUCT(x) \
|
1203
1210
|
template <> struct aligned_struct<x> { \
|
1204
1211
|
__declspec(align(x)) char data; \
|
1205
1212
|
}
|
1213
|
+
BOOST_MOVE_ALIGNED_STRUCT(8);
|
1206
1214
|
BOOST_MOVE_ALIGNED_STRUCT(16);
|
1207
1215
|
BOOST_MOVE_ALIGNED_STRUCT(32);
|
1208
1216
|
BOOST_MOVE_ALIGNED_STRUCT(64);
|
@@ -147,5 +147,10 @@ template<unsigned> struct static_assert_test {};
|
|
147
147
|
#define BOOST_MOVE_INTRINSIC_CAST BOOST_MOVE_FORCEINLINE
|
148
148
|
#endif
|
149
149
|
|
150
|
-
#
|
150
|
+
#if defined(__has_builtin)
|
151
|
+
#if __has_builtin(__builtin_launder)
|
152
|
+
#define BOOST_MOVE_HAS_BUILTIN_LAUNDER
|
153
|
+
#endif
|
154
|
+
#endif
|
151
155
|
|
156
|
+
#endif //#ifndef BOOST_MOVE_DETAIL_WORKAROUND_HPP
|
@@ -56,7 +56,8 @@ struct AUX_WRAPPER_NAME
|
|
56
56
|
// have to #ifdef here: some compilers don't like the 'N + 1' form (MSVC),
|
57
57
|
// while some other don't like 'value + 1' (Borland), and some don't like
|
58
58
|
// either
|
59
|
-
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243)
|
59
|
+
#if BOOST_WORKAROUND(__EDG_VERSION__, <= 243) \
|
60
|
+
|| __cplusplus >= 201103L
|
60
61
|
private:
|
61
62
|
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, next_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N + 1)));
|
62
63
|
BOOST_STATIC_CONSTANT(AUX_WRAPPER_VALUE_TYPE, prior_value = BOOST_MPL_AUX_STATIC_CAST(AUX_WRAPPER_VALUE_TYPE, (N - 1)));
|
@@ -16,7 +16,7 @@
|
|
16
16
|
defined(BOOST_NO_CXX11_NULLPTR) || \
|
17
17
|
defined(BOOST_NO_CXX11_SMART_PTR)
|
18
18
|
|
19
|
-
BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.SmartPtr 1.82 and will be removed in Boost.SmartPtr 1.
|
19
|
+
BOOST_PRAGMA_MESSAGE("C++03 support was deprecated in Boost.SmartPtr 1.82 and will be removed in Boost.SmartPtr 1.87.")
|
20
20
|
|
21
21
|
#endif
|
22
22
|
|
@@ -17,8 +17,11 @@
|
|
17
17
|
// Defines the BOOST_SP_HAS_GCC_INTRINSICS macro if the __atomic_*
|
18
18
|
// intrinsics are available.
|
19
19
|
|
20
|
+
// Libraries (e.g. Kokkos) sometimes define the __ATOMIC_RELAXED macros,
|
21
|
+
// leading to errors under MSVC (https://github.com/boostorg/smart_ptr/pull/112)
|
20
22
|
|
21
|
-
#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL )
|
23
|
+
#if defined( __ATOMIC_RELAXED ) && defined( __ATOMIC_ACQUIRE ) && defined( __ATOMIC_RELEASE ) && defined( __ATOMIC_ACQ_REL ) \
|
24
|
+
&& !( defined(_MSC_VER) && !defined(__clang__) )
|
22
25
|
|
23
26
|
# define BOOST_SP_HAS_GCC_INTRINSICS
|
24
27
|
|
@@ -39,7 +39,19 @@ inline char const * strerror_r_helper( int r, char const * buffer ) noexcept
|
|
39
39
|
|
40
40
|
inline char const * generic_error_category_message( int ev, char * buffer, std::size_t len ) noexcept
|
41
41
|
{
|
42
|
-
|
42
|
+
if( buffer != nullptr )
|
43
|
+
{
|
44
|
+
return strerror_r_helper( strerror_r( ev, buffer, len ), buffer );
|
45
|
+
}
|
46
|
+
else
|
47
|
+
{
|
48
|
+
// strerror_r requires non-null buffer pointer
|
49
|
+
|
50
|
+
char tmp[ 1 ] = {};
|
51
|
+
char const* r = strerror_r_helper( strerror_r( ev, tmp, 0 ), buffer );
|
52
|
+
|
53
|
+
return r == tmp? nullptr: r;
|
54
|
+
}
|
43
55
|
}
|
44
56
|
|
45
57
|
inline std::string generic_error_category_message( int ev )
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/* Fast open-addressing concurrent hashmap.
|
2
2
|
*
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
4
|
-
* Copyright 2023 Joaquin M Lopez Munoz.
|
4
|
+
* Copyright 2023-2024 Joaquin M Lopez Munoz.
|
5
5
|
* Distributed under the Boost Software License, Version 1.0.
|
6
6
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
7
7
|
* http://www.boost.org/LICENSE_1_0.txt)
|
@@ -75,6 +75,10 @@ namespace boost {
|
|
75
75
|
typename boost::allocator_const_pointer<allocator_type>::type;
|
76
76
|
static constexpr size_type bulk_visit_size = table_type::bulk_visit_size;
|
77
77
|
|
78
|
+
#if defined(BOOST_UNORDERED_ENABLE_STATS)
|
79
|
+
using stats = typename table_type::stats;
|
80
|
+
#endif
|
81
|
+
|
78
82
|
concurrent_flat_map()
|
79
83
|
: concurrent_flat_map(detail::foa::default_bucket_count)
|
80
84
|
{
|
@@ -714,6 +718,14 @@ namespace boost {
|
|
714
718
|
void rehash(size_type n) { table_.rehash(n); }
|
715
719
|
void reserve(size_type n) { table_.reserve(n); }
|
716
720
|
|
721
|
+
#if defined(BOOST_UNORDERED_ENABLE_STATS)
|
722
|
+
/// Stats
|
723
|
+
///
|
724
|
+
stats get_stats() const { return table_.get_stats(); }
|
725
|
+
|
726
|
+
void reset_stats() noexcept { table_.reset_stats(); }
|
727
|
+
#endif
|
728
|
+
|
717
729
|
/// Observers
|
718
730
|
///
|
719
731
|
allocator_type get_allocator() const noexcept
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/* Fast open-addressing concurrent hashmap.
|
2
2
|
*
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
4
|
+
* Copyright 2024 Braden Ganetsky.
|
4
5
|
* Distributed under the Boost Software License, Version 1.0.
|
5
6
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
6
7
|
* http://www.boost.org/LICENSE_1_0.txt)
|
@@ -11,11 +12,16 @@
|
|
11
12
|
#ifndef BOOST_UNORDERED_CONCURRENT_FLAT_MAP_FWD_HPP
|
12
13
|
#define BOOST_UNORDERED_CONCURRENT_FLAT_MAP_FWD_HPP
|
13
14
|
|
15
|
+
#include <boost/config.hpp>
|
14
16
|
#include <boost/container_hash/hash_fwd.hpp>
|
15
17
|
|
16
18
|
#include <functional>
|
17
19
|
#include <memory>
|
18
20
|
|
21
|
+
#ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
|
22
|
+
#include <memory_resource>
|
23
|
+
#endif
|
24
|
+
|
19
25
|
namespace boost {
|
20
26
|
namespace unordered {
|
21
27
|
|
@@ -43,6 +49,15 @@ namespace boost {
|
|
43
49
|
typename concurrent_flat_map<K, T, H, P, A>::size_type erase_if(
|
44
50
|
concurrent_flat_map<K, T, H, P, A>& c, Predicate pred);
|
45
51
|
|
52
|
+
#ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
|
53
|
+
namespace pmr {
|
54
|
+
template <class Key, class T, class Hash = boost::hash<Key>,
|
55
|
+
class Pred = std::equal_to<Key> >
|
56
|
+
using concurrent_flat_map = boost::unordered::concurrent_flat_map<Key, T,
|
57
|
+
Hash, Pred, std::pmr::polymorphic_allocator<std::pair<Key const, T> > >;
|
58
|
+
} // namespace pmr
|
59
|
+
#endif
|
60
|
+
|
46
61
|
} // namespace unordered
|
47
62
|
|
48
63
|
using boost::unordered::concurrent_flat_map;
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/* Fast open-addressing concurrent hashset.
|
2
2
|
*
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
4
|
-
* Copyright 2023 Joaquin M Lopez Munoz.
|
4
|
+
* Copyright 2023-2024 Joaquin M Lopez Munoz.
|
5
5
|
* Distributed under the Boost Software License, Version 1.0.
|
6
6
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
7
7
|
* http://www.boost.org/LICENSE_1_0.txt)
|
@@ -72,6 +72,10 @@ namespace boost {
|
|
72
72
|
typename boost::allocator_const_pointer<allocator_type>::type;
|
73
73
|
static constexpr size_type bulk_visit_size = table_type::bulk_visit_size;
|
74
74
|
|
75
|
+
#if defined(BOOST_UNORDERED_ENABLE_STATS)
|
76
|
+
using stats = typename table_type::stats;
|
77
|
+
#endif
|
78
|
+
|
75
79
|
concurrent_flat_set()
|
76
80
|
: concurrent_flat_set(detail::foa::default_bucket_count)
|
77
81
|
{
|
@@ -582,6 +586,14 @@ namespace boost {
|
|
582
586
|
void rehash(size_type n) { table_.rehash(n); }
|
583
587
|
void reserve(size_type n) { table_.reserve(n); }
|
584
588
|
|
589
|
+
#if defined(BOOST_UNORDERED_ENABLE_STATS)
|
590
|
+
/// Stats
|
591
|
+
///
|
592
|
+
stats get_stats() const { return table_.get_stats(); }
|
593
|
+
|
594
|
+
void reset_stats() noexcept { table_.reset_stats(); }
|
595
|
+
#endif
|
596
|
+
|
585
597
|
/// Observers
|
586
598
|
///
|
587
599
|
allocator_type get_allocator() const noexcept
|
@@ -2,6 +2,7 @@
|
|
2
2
|
*
|
3
3
|
* Copyright 2023 Christian Mazakas.
|
4
4
|
* Copyright 2023 Joaquin M Lopez Munoz.
|
5
|
+
* Copyright 2024 Braden Ganetsky.
|
5
6
|
* Distributed under the Boost Software License, Version 1.0.
|
6
7
|
* (See accompanying file LICENSE_1_0.txt or copy at
|
7
8
|
* http://www.boost.org/LICENSE_1_0.txt)
|
@@ -12,11 +13,16 @@
|
|
12
13
|
#ifndef BOOST_UNORDERED_CONCURRENT_FLAT_SET_FWD_HPP
|
13
14
|
#define BOOST_UNORDERED_CONCURRENT_FLAT_SET_FWD_HPP
|
14
15
|
|
16
|
+
#include <boost/config.hpp>
|
15
17
|
#include <boost/container_hash/hash_fwd.hpp>
|
16
18
|
|
17
19
|
#include <functional>
|
18
20
|
#include <memory>
|
19
21
|
|
22
|
+
#ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
|
23
|
+
#include <memory_resource>
|
24
|
+
#endif
|
25
|
+
|
20
26
|
namespace boost {
|
21
27
|
namespace unordered {
|
22
28
|
|
@@ -44,6 +50,15 @@ namespace boost {
|
|
44
50
|
typename concurrent_flat_set<K, H, P, A>::size_type erase_if(
|
45
51
|
concurrent_flat_set<K, H, P, A>& c, Predicate pred);
|
46
52
|
|
53
|
+
#ifndef BOOST_NO_CXX17_HDR_MEMORY_RESOURCE
|
54
|
+
namespace pmr {
|
55
|
+
template <class Key, class Hash = boost::hash<Key>,
|
56
|
+
class Pred = std::equal_to<Key> >
|
57
|
+
using concurrent_flat_set = boost::unordered::concurrent_flat_set<Key,
|
58
|
+
Hash, Pred, std::pmr::polymorphic_allocator<Key> >;
|
59
|
+
} // namespace pmr
|
60
|
+
#endif
|
61
|
+
|
47
62
|
} // namespace unordered
|
48
63
|
|
49
64
|
using boost::unordered::concurrent_flat_set;
|
@@ -659,12 +659,7 @@ namespace boost {
|
|
659
659
|
std::swap(buckets, other.buckets);
|
660
660
|
std::swap(groups, other.groups);
|
661
661
|
|
662
|
-
|
663
|
-
allocator_type>::type::value;
|
664
|
-
if (b) {
|
665
|
-
boost::core::invoke_swap(
|
666
|
-
get_node_allocator(), other.get_node_allocator());
|
667
|
-
}
|
662
|
+
swap_allocator_if_pocs(other);
|
668
663
|
}
|
669
664
|
|
670
665
|
node_allocator_type const& get_node_allocator() const
|
@@ -876,6 +871,27 @@ namespace boost {
|
|
876
871
|
pbg->prev->next = pbg->next;
|
877
872
|
pbg->prev = pbg->next = group_pointer();
|
878
873
|
}
|
874
|
+
|
875
|
+
void swap_allocator_if_pocs(grouped_bucket_array& other)
|
876
|
+
{
|
877
|
+
using allocator_pocs =
|
878
|
+
typename boost::allocator_propagate_on_container_swap<
|
879
|
+
allocator_type>::type;
|
880
|
+
swap_allocator_if_pocs(
|
881
|
+
other, std::integral_constant<bool, allocator_pocs::value>());
|
882
|
+
}
|
883
|
+
|
884
|
+
void swap_allocator_if_pocs(
|
885
|
+
grouped_bucket_array& other, std::true_type /* propagate */)
|
886
|
+
{
|
887
|
+
boost::core::invoke_swap(
|
888
|
+
get_node_allocator(), other.get_node_allocator());
|
889
|
+
}
|
890
|
+
|
891
|
+
void swap_allocator_if_pocs(
|
892
|
+
grouped_bucket_array&, std::false_type /* don't propagate */)
|
893
|
+
{
|
894
|
+
}
|
879
895
|
};
|
880
896
|
} // namespace detail
|
881
897
|
} // namespace unordered
|
@@ -469,6 +469,10 @@ public:
|
|
469
469
|
using size_type=typename super::size_type;
|
470
470
|
static constexpr std::size_t bulk_visit_size=16;
|
471
471
|
|
472
|
+
#if defined(BOOST_UNORDERED_ENABLE_STATS)
|
473
|
+
using stats=typename super::stats;
|
474
|
+
#endif
|
475
|
+
|
472
476
|
private:
|
473
477
|
template<typename Value,typename T>
|
474
478
|
using enable_if_is_value_type=typename std::enable_if<
|
@@ -510,6 +514,7 @@ public:
|
|
510
514
|
x.arrays=ah.release();
|
511
515
|
x.size_ctrl.ml=x.initial_max_load();
|
512
516
|
x.size_ctrl.size=0;
|
517
|
+
BOOST_UNORDERED_SWAP_STATS(this->cstats,x.cstats);
|
513
518
|
}
|
514
519
|
|
515
520
|
concurrent_table(compatible_nonconcurrent_table&& x):
|
@@ -965,6 +970,13 @@ public:
|
|
965
970
|
super::reserve(n);
|
966
971
|
}
|
967
972
|
|
973
|
+
#if defined(BOOST_UNORDERED_ENABLE_STATS)
|
974
|
+
/* already thread safe */
|
975
|
+
|
976
|
+
using super::get_stats;
|
977
|
+
using super::reset_stats;
|
978
|
+
#endif
|
979
|
+
|
968
980
|
template<typename Predicate>
|
969
981
|
friend std::size_t erase_if(concurrent_table& x,Predicate&& pr)
|
970
982
|
{
|
@@ -1186,6 +1198,7 @@ private:
|
|
1186
1198
|
GroupAccessMode access_mode,
|
1187
1199
|
const Key& x,std::size_t pos0,std::size_t hash,F&& f)const
|
1188
1200
|
{
|
1201
|
+
BOOST_UNORDERED_STATS_COUNTER(num_cmps);
|
1189
1202
|
prober pb(pos0);
|
1190
1203
|
do{
|
1191
1204
|
auto pos=pb.get();
|
@@ -1197,19 +1210,27 @@ private:
|
|
1197
1210
|
auto lck=access(access_mode,pos);
|
1198
1211
|
do{
|
1199
1212
|
auto n=unchecked_countr_zero(mask);
|
1200
|
-
if(BOOST_LIKELY(
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1213
|
+
if(BOOST_LIKELY(pg->is_occupied(n))){
|
1214
|
+
BOOST_UNORDERED_INCREMENT_STATS_COUNTER(num_cmps);
|
1215
|
+
if(BOOST_LIKELY(bool(this->pred()(x,this->key_from(p[n]))))){
|
1216
|
+
f(pg,n,p+n);
|
1217
|
+
BOOST_UNORDERED_ADD_STATS(
|
1218
|
+
this->cstats.successful_lookup,(pb.length(),num_cmps));
|
1219
|
+
return 1;
|
1220
|
+
}
|
1204
1221
|
}
|
1205
1222
|
mask&=mask-1;
|
1206
1223
|
}while(mask);
|
1207
1224
|
}
|
1208
1225
|
if(BOOST_LIKELY(pg->is_not_overflowed(hash))){
|
1226
|
+
BOOST_UNORDERED_ADD_STATS(
|
1227
|
+
this->cstats.unsuccessful_lookup,(pb.length(),num_cmps));
|
1209
1228
|
return 0;
|
1210
1229
|
}
|
1211
1230
|
}
|
1212
1231
|
while(BOOST_LIKELY(pb.next(this->arrays.groups_size_mask)));
|
1232
|
+
BOOST_UNORDERED_ADD_STATS(
|
1233
|
+
this->cstats.unsuccessful_lookup,(pb.length(),num_cmps));
|
1213
1234
|
return 0;
|
1214
1235
|
}
|
1215
1236
|
|
@@ -1244,6 +1265,7 @@ private:
|
|
1244
1265
|
|
1245
1266
|
it=first;
|
1246
1267
|
for(auto i=m;i--;++it){
|
1268
|
+
BOOST_UNORDERED_STATS_COUNTER(num_cmps);
|
1247
1269
|
auto pos=positions[i];
|
1248
1270
|
prober pb(pos);
|
1249
1271
|
auto pg=this->arrays.groups()+pos;
|
@@ -1256,12 +1278,15 @@ private:
|
|
1256
1278
|
auto lck=access(access_mode,pos);
|
1257
1279
|
do{
|
1258
1280
|
auto n=unchecked_countr_zero(mask);
|
1259
|
-
if(BOOST_LIKELY(
|
1260
|
-
|
1261
|
-
bool(this->pred()(*it,this->key_from(p[n]))))
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1281
|
+
if(BOOST_LIKELY(pg->is_occupied(n))){
|
1282
|
+
BOOST_UNORDERED_INCREMENT_STATS_COUNTER(num_cmps);
|
1283
|
+
if(bool(this->pred()(*it,this->key_from(p[n])))){
|
1284
|
+
f(cast_for(access_mode,type_policy::value_from(p[n])));
|
1285
|
+
++res;
|
1286
|
+
BOOST_UNORDERED_ADD_STATS(
|
1287
|
+
this->cstats.successful_lookup,(pb.length(),num_cmps));
|
1288
|
+
goto next_key;
|
1289
|
+
}
|
1265
1290
|
}
|
1266
1291
|
mask&=mask-1;
|
1267
1292
|
}while(mask);
|
@@ -1270,6 +1295,8 @@ private:
|
|
1270
1295
|
do{
|
1271
1296
|
if(BOOST_LIKELY(pg->is_not_overflowed(hashes[i]))||
|
1272
1297
|
BOOST_UNLIKELY(!pb.next(this->arrays.groups_size_mask))){
|
1298
|
+
BOOST_UNORDERED_ADD_STATS(
|
1299
|
+
this->cstats.unsuccessful_lookup,(pb.length(),num_cmps));
|
1273
1300
|
goto next_key;
|
1274
1301
|
}
|
1275
1302
|
pos=pb.get();
|
@@ -1490,6 +1517,7 @@ private:
|
|
1490
1517
|
this->construct_element(p,std::forward<Args>(args)...);
|
1491
1518
|
rslot.commit();
|
1492
1519
|
rsize.commit();
|
1520
|
+
BOOST_UNORDERED_ADD_STATS(this->cstats.insertion,(pb.length()));
|
1493
1521
|
return 1;
|
1494
1522
|
}
|
1495
1523
|
pg->mark_overflow(hash);
|