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
@@ -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);
|