passenger 5.3.3 → 5.3.4
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.
- checksums.yaml +4 -4
- data/CHANGELOG +8 -0
- data/build/support/cxx_dependency_map.rb +151 -83
- data/dev/configkit-schemas/index.json +3 -3
- data/src/agent/Core/AdminPanelConnector.h +5 -3
- data/src/agent/Core/ApplicationPool/Common.h +1 -2
- data/src/agent/Core/ApplicationPool/Context.h +1 -2
- data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
- data/src/agent/Core/ApplicationPool/Pool/InitializationAndShutdown.cpp +2 -2
- data/src/agent/Core/Config.h +1 -1
- data/src/agent/Core/Controller.h +2 -1
- data/src/agent/Core/Controller/Config.h +6 -5
- data/src/agent/Core/Controller/Hooks.cpp +11 -0
- data/src/agent/Core/Controller/SendRequest.cpp +7 -7
- data/src/agent/Core/CoreMain.cpp +0 -2
- data/src/agent/Core/SpawningKit/Context.h +1 -3
- data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Perform.h +2 -2
- data/src/agent/Core/SpawningKit/Handshake/Prepare.h +17 -38
- data/src/agent/Core/SpawningKit/PipeWatcher.h +5 -3
- data/src/agent/Core/SpawningKit/UserSwitchingRules.h +13 -5
- data/src/agent/Shared/ApiServerUtils.h +2 -2
- data/src/agent/SpawnEnvSetupper/SpawnEnvSetupperMain.cpp +33 -18
- data/src/agent/Watchdog/Config.h +1 -1
- data/src/agent/Watchdog/WatchdogMain.cpp +20 -20
- data/src/apache2_module/Config.cpp +7 -6
- data/src/cxx_supportlib/ConfigKit/Store.h +2 -2
- data/src/cxx_supportlib/Constants.h +1 -1
- data/src/cxx_supportlib/Exceptions.h +0 -1
- data/src/cxx_supportlib/FileTools/PathSecurityCheck.cpp +3 -2
- data/src/cxx_supportlib/ResourceLocator.h +3 -21
- data/src/cxx_supportlib/SafeLibev.h +6 -6
- data/src/cxx_supportlib/ServerKit/Channel.h +2 -2
- data/src/cxx_supportlib/ServerKit/FileBufferedChannel.h +3 -3
- data/src/cxx_supportlib/ServerKit/FileBufferedFdSinkChannel.h +2 -2
- data/src/cxx_supportlib/ServerKit/HttpServer.h +27 -15
- data/src/cxx_supportlib/ServerKit/Server.h +2 -2
- data/src/cxx_supportlib/SystemTools/README.md +1 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.cpp +222 -0
- data/src/cxx_supportlib/SystemTools/UserDatabase.h +151 -0
- data/src/cxx_supportlib/Utils.cpp +1 -113
- data/src/cxx_supportlib/Utils.h +1 -29
- data/src/cxx_supportlib/Utils/MessagePassing.h +3 -3
- data/src/cxx_supportlib/WatchdogLauncher.h +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/find_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/util.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +31 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +133 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +149 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +140 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +145 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +75 -41
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +139 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +98 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +42 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +45 -38
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +349 -109
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +959 -108
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +198 -54
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +424 -284
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +116 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +99 -16
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +235 -49
- data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +613 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +1139 -1216
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +26 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +27 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +61 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +462 -226
- data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +20 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +404 -77
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +212 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +68 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +114 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +151 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +398 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +287 -165
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +33 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +15 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +65 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +17 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +27 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +41 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{function.hpp → functional.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +54 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +158 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +90 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +117 -39
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +97 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +24 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +34 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +152 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +80 -27
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +19 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +93 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +76 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +13 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +11 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +27 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +43 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +54 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/{task_io_service.ipp → scheduler.ipp} +167 -70
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +17 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +46 -26
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +36 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +39 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +43 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +129 -26
- 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/impl/strand_executor_service.hpp +181 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +13 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +15 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +12 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -51
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +241 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +36 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +42 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +17 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +29 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +26 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +37 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +82 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +10 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +86 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +9 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +10 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +101 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +14 -7
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +20 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +13 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +25 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +15 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +99 -31
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +96 -35
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +92 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +7 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +25 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +6 -92
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +38 -22
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +30 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service.hpp → scheduler.hpp} +57 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_operation.hpp → scheduler_operation.hpp} +19 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/{task_io_service_thread_info.hpp → scheduler_thread_info.hpp} +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +37 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +54 -34
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +14 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +7 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +144 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +9 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +44 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +45 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +29 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +11 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +29 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +74 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +74 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +110 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +413 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +343 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +172 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +22 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +228 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/redirect_error.hpp +296 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/redirect_error.hpp +69 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +11 -73
- data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +86 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +92 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +549 -119
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +388 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +7 -32
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +347 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +176 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +79 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +341 -379
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +173 -343
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +559 -206
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +254 -72
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +75 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +129 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +78 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +855 -94
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +358 -449
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +165 -418
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +878 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +386 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +6 -743
- data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +79 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +111 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +164 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +136 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +104 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +185 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +50 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +821 -71
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +23 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +31 -99
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +313 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +5 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +16 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +55 -47
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +76 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +28 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +85 -33
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +2 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +56 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +218 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +187 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +263 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +237 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +3 -90
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +48 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +23 -21
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +128 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +138 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +646 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +17 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +326 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +63 -44
- data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +109 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +94 -64
- data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +328 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1148 -247
- data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +736 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +11 -11
- data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +41 -45
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +422 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +32 -24
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +114 -48
- data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +85 -46
- data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +89 -18
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +1 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +33 -62
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +27 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +10 -14
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +22 -25
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +40 -17
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +4 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +27 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +2 -8
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +8 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +86 -102
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -13
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +90 -85
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +3 -9
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +4 -23
- data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +209 -175
- data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +88 -56
- data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +131 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +4 -19
- data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +234 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +40 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +199 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +27 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +70 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +73 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +17 -2
- data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +62 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +22 -30
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +14 -10
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +346 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +26 -20
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +333 -0
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +344 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +31 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +328 -3
- data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +29 -37
- data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +321 -12
- data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +13 -6
- data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +50 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_template.hpp +688 -220
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +25 -21
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +1 -18
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +9 -10
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +7 -8
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +1 -36
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +108 -34
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +107 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +189 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +238 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +1111 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +840 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +1656 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +402 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +106 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +1301 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/float_sizes.hpp +142 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations.hpp +28 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +72 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +83 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_arm.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_ppc.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/hwcaps_gcc_x86.hpp +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/int_sizes.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/integral_extend.hpp +105 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_cas_based.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +8 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_extending_cas_based.hpp +8 -7
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_alpha.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm.hpp +548 -126
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +134 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +36 -44
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc.hpp +524 -96
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +70 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sparc.hpp +14 -16
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_sync.hpp +27 -59
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +104 -57
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +268 -340
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_linux_arm.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_arm.hpp +22 -24
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_x86.hpp +55 -80
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +88 -46
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +30 -103
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/string_ops.hpp +61 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/conditional.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/integral_constant.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_function.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_iec559.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_integral.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_default_constructible.hpp +46 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_signed.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/make_unsigned.hpp +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_cc.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/bind/bind_mf_cc.hpp +36 -36
- data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +0 -10
- data/src/cxx_supportlib/vendor-modified/boost/chrono/duration.hpp +28 -30
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_get.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/duration_io.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +14 -8
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_units.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/chrono/io_v1/chrono_io.hpp +2 -4
- data/src/cxx_supportlib/vendor-modified/boost/chrono/process_cpu_clocks.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/chrono/time_point.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/config.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +26 -4
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +30 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +13 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/diab.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +33 -6
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +11 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +28 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +17 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pgi.hpp +8 -142
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +16 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +37 -9
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +19 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +169 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{posix_features.hpp → detail/posix_features.hpp} +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_compiler_config.hpp → detail/select_compiler_config.hpp} +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_platform_config.hpp → detail/select_platform_config.hpp} +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/{select_stdlib_config.hpp → detail/select_stdlib_config.hpp} +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/{suffix.hpp → detail/suffix.hpp} +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/config/header_deprecated.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/helper_macros.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/aix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/beos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/bsd.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cray.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/haiku.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/hpux.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/irix.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/linux.hpp +4 -3
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/macos.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/qnxnto.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/solaris.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/symbian.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +155 -91
- data/src/cxx_supportlib/vendor-modified/boost/config/platform/zos.hpp +32 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/pragma_message.hpp +31 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +21 -2
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +279 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +58 -58
- data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +7 -28
- data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +57 -57
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/addressof.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +18 -18
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/algorithm.hpp +122 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/construct_in_place.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +49 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +258 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +119 -134
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/destroyers.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +55 -55
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +714 -282
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_contiguous_container.hpp +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_sorted.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator_to_raw_pointer.hpp +4 -29
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +9 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/min_max.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/mutex.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/next_capacity.hpp +37 -35
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +41 -41
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_pool_impl.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +69 -16
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair_key_mapped_of_value.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/pool_common_alloc.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/singleton.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/transform_iterator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +180 -116
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +36 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_init.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +0 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +874 -572
- data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +497 -248
- data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +33 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +326 -246
- data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/node_handle.hpp +122 -78
- data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +165 -0
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_map.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +4 -8
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/map.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/polymorphic_allocator.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/container/pmr/set.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +285 -110
- data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +35 -53
- data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +18 -19
- data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +25 -25
- data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +24 -9
- data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +194 -142
- data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/uses_allocator.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +395 -421
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/float_functions.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/hash_float.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/detail/limits.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/extensions.hpp +112 -16
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash.hpp +195 -7
- data/src/cxx_supportlib/vendor-modified/boost/{functional/hash → container_hash}/hash_fwd.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +53 -44
- data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +80 -2
- data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +233 -0
- data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +26 -16
- data/src/cxx_supportlib/vendor-modified/boost/date_time/adjust_functors.hpp +20 -34
- data/src/cxx_supportlib/vendor-modified/boost/date_time/c_local_time_adjustor.hpp +8 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/date_formatting_locales.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/filetime_functions.hpp +8 -94
- data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +1 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_facet.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/gregorian_io.hpp +52 -52
- data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +14 -27
- data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/custom_time_zone.hpp +0 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/date_time/microsec_time_clock.hpp +36 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/conversion.hpp +10 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +18 -10
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_io.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +65 -20
- data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +32 -23
- data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +6 -5
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -3
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +31 -8
- data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/detail/workaround.hpp +2 -264
- data/src/cxx_supportlib/vendor-modified/boost/enable_shared_from_this.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +38 -21
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +10 -7
- data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +8 -6
- data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +13 -47
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +5 -4
- data/src/cxx_supportlib/vendor-modified/boost/function.hpp +12 -4
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/gen_maybe_include.pl +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/detail/maybe_include.hpp +102 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +20 -0
- data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/functional/hash_fwd.hpp +1 -6
- data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +508 -390
- data/src/cxx_supportlib/vendor-modified/boost/integer/integer_mask.hpp +9 -1
- data/src/cxx_supportlib/vendor-modified/boost/integer_fwd.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/config_begin.hpp +7 -20
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/default_header_holder.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +5 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +108 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +15 -5
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_to_value.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +8 -4
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +147 -64
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/member_value_traits.hpp +3 -3
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/intrusive_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +84 -0
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_categories.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_concepts.hpp +8 -10
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_traits.hpp +7 -6
- data/src/cxx_supportlib/vendor-modified/boost/iterator/reverse_iterator.hpp +7 -4
- data/src/cxx_supportlib/vendor-modified/boost/iterator/transform_iterator.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +7 -7
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +36 -92
- data/src/cxx_supportlib/vendor-modified/boost/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +57 -3
- data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/sign.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +40 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/adl_move_swap.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +253 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +563 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +324 -1071
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/basic_op.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/heap_sort.hpp +111 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/insertion_sort.hpp +12 -11
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/is_sorted.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +59 -143
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/pdqsort.hpp +334 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +207 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +86 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/algo/unique.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +1 -9
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/destruct_n.hpp +3 -4
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/fwd_macros.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +59 -0
- data/src/cxx_supportlib/vendor-modified/boost/{intrusive → move}/detail/pointer_element.hpp +12 -12
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/to_raw_pointer.hpp +45 -0
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +19 -5
- data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/mpl/get_tag.hpp +26 -0
- data/src/cxx_supportlib/vendor-modified/boost/next_prior.hpp +85 -55
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/cast.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/conversion_traits.hpp +0 -7
- data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/detail/converter.hpp +4 -13
- data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +26 -7
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +98 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_aligned_storage.hpp +17 -21
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_config.hpp +25 -6
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +15 -15
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_relops.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +499 -0
- data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +126 -21
- data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/pointer_cast.hpp +10 -9
- data/src/cxx_supportlib/vendor-modified/boost/pointer_to_other.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +3 -1
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c.h +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +53 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +80 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +87 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +9 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +43 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +58 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +63 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +9 -3
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +13 -5
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +11 -4
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +47 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +60 -0
- data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +11 -9
- data/src/cxx_supportlib/vendor-modified/boost/random/binomial_distribution.hpp +27 -27
- data/src/cxx_supportlib/vendor-modified/boost/random/detail/vector_io.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/random/hyperexponential_distribution.hpp +0 -11
- data/src/cxx_supportlib/vendor-modified/boost/random/independent_bits.hpp +12 -0
- data/src/cxx_supportlib/vendor-modified/boost/random/linear_congruential.hpp +5 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/poisson_distribution.hpp +17 -17
- data/src/cxx_supportlib/vendor-modified/boost/random/seed_seq.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/random/uniform_on_sphere.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +6 -4
- data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +56 -11
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +10 -10
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +6 -1
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +37 -13
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +9 -6
- data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/scoped_array.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/scoped_ptr.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/shared_array.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/shared_ptr.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +333 -656
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +148 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +91 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/operator_bool.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +15 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +3 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_noexcept.hpp +21 -3
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/enable_shared_from_this.hpp +6 -6
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +26 -26
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ref_counter.hpp +17 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +11 -12
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +15 -16
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +22 -22
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +135 -90
- data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +23 -23
- data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +140 -111
- data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +297 -49
- data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +4 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +5 -7
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +19 -19
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +5 -15
- data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +118 -183
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_redef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/{detail → thread/detail}/atomic_undef_macros.hpp +0 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +62 -11
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/log.hpp +15 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +0 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +478 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +51 -85
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +11 -3
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/detail/priority_executor_base.hpp +10 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +15 -4
- data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +320 -92
- data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp +10 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +187 -112
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +137 -164
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +67 -37
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +42 -0
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +15 -9
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +65 -33
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +84 -158
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +143 -35
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_heap_alloc.hpp +32 -2
- data/src/cxx_supportlib/vendor-modified/boost/thread/shared_mutex.hpp +8 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/thread_only.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +579 -589
- data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/token_iterator.hpp +5 -2
- data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +7 -9
- data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +8 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +6 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +5 -8
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_lvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_reference.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_rvalue_reference.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_volatile.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/common_type.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/conditional.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/decay.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +12 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +37 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +71 -14
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +1 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +4 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_helper.hpp +370 -102
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +94 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp +1177 -572
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +24 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +25 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/floating_point_promotion.hpp +8 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_greater_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_less_equal.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +93 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +95 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_not_equal_to.hpp +3 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_destructor.hpp +11 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +2 -1
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_assignable.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +90 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complex.hpp +1 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +12 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +20 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +16 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +10 -2
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +29 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_list_constructible.hpp +48 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +14 -3
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +14 -4
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_swappable.hpp +67 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_signed.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_unsigned.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +35 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/promote.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_bounds.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv_ref.hpp +30 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_pointer.hpp +7 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_reference.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +5 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_identity.hpp +9 -0
- data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -3
- data/src/cxx_supportlib/vendor-modified/boost/typeof/decltype.hpp +34 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +5 -85
- data/src/cxx_supportlib/vendor-modified/boost/typeof/register_fundamental.hpp +1 -2
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/functional.hpp +6 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/std/memory.hpp +2 -0
- data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof.hpp +24 -14
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/fwd.hpp +18 -12
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/implementation.hpp +4018 -4052
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/map.hpp +57 -97
- data/src/cxx_supportlib/vendor-modified/boost/unordered/detail/set.hpp +56 -95
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map.hpp +2150 -1777
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_map_fwd.hpp +41 -38
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set.hpp +1630 -1420
- data/src/cxx_supportlib/vendor-modified/boost/unordered/unordered_set_fwd.hpp +40 -37
- data/src/cxx_supportlib/vendor-modified/boost/utility.hpp +6 -3
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +55 -0
- data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +14 -17
- data/src/cxx_supportlib/vendor-modified/boost/utility/result_of.hpp +44 -20
- data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +30 -30
- data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
- data/src/cxx_supportlib/vendor-modified/boost/weak_ptr.hpp +1 -1
- data/src/ruby_supportlib/phusion_passenger.rb +1 -1
- data/src/ruby_supportlib/phusion_passenger/common_library.rb +3 -0
- data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +8 -1
- data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +7 -1
- data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +2 -2
- data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +4 -4
- metadata +201 -47
- data/src/cxx_supportlib/ConfigKit/VariantMapUtils.h +0 -96
- data/src/cxx_supportlib/MessageClient.h +0 -309
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/addressof.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/task_io_service.hpp +0 -80
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/shared_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/weak_ptr.hpp +0 -40
- data/src/cxx_supportlib/vendor-modified/boost/asio/detail/win_iocp_serial_port_service.hpp +0 -230
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.hpp +0 -156
- data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_service.ipp +0 -157
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/basic_context.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/basic_context.hpp +0 -436
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/context_service.hpp +0 -176
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_context_service.hpp +0 -396
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_operation.hpp +0 -526
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/detail/openssl_stream_service.hpp +0 -573
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream.hpp +0 -503
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/old/stream_service.hpp +0 -186
- data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_service.hpp +0 -42
- data/src/cxx_supportlib/vendor-modified/boost/container/detail/to_raw_pointer.hpp +0 -33
- data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/to_raw_pointer.hpp +0 -47
- data/src/cxx_supportlib/vendor-modified/boost/iterator.hpp +0 -20
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex_assert.hpp +0 -724
- data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/timespec.hpp +0 -149
- data/src/cxx_supportlib/vendor-modified/boost/thread/v2/thread.hpp +0 -155
- data/src/cxx_supportlib/vendor-modified/boost/utility/empty_deleter.hpp +0 -43
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2017 Andrey Semashev
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file atomic/detail/hwcaps_gcc_x86.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header defines hardware capabilities macros for x86
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ATOMIC_DETAIL_HWCAPS_GCC_X86_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ATOMIC_DETAIL_HWCAPS_GCC_X86_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <boost/atomic/detail/config.hpp>
|
|
18
|
+
|
|
19
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
20
|
+
#pragma once
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
#if defined(__GNUC__)
|
|
24
|
+
|
|
25
|
+
#if defined(__i386__) &&\
|
|
26
|
+
(\
|
|
27
|
+
defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8) ||\
|
|
28
|
+
defined(__i586__) || defined(__i686__) || defined(__SSE__)\
|
|
29
|
+
)
|
|
30
|
+
#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
#if defined(__x86_64__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16)
|
|
34
|
+
#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1
|
|
35
|
+
#endif
|
|
36
|
+
|
|
37
|
+
#if defined(__x86_64__) || defined(__SSE2__)
|
|
38
|
+
// Use mfence only if SSE2 is available
|
|
39
|
+
#define BOOST_ATOMIC_DETAIL_X86_HAS_MFENCE 1
|
|
40
|
+
#endif
|
|
41
|
+
|
|
42
|
+
#else // defined(__GNUC__)
|
|
43
|
+
|
|
44
|
+
#if defined(__i386__) && !defined(BOOST_ATOMIC_NO_CMPXCHG8B)
|
|
45
|
+
#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B 1
|
|
46
|
+
#endif
|
|
47
|
+
|
|
48
|
+
#if defined(__x86_64__) && !defined(BOOST_ATOMIC_NO_CMPXCHG16B)
|
|
49
|
+
#define BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B 1
|
|
50
|
+
#endif
|
|
51
|
+
|
|
52
|
+
#if !defined(BOOST_ATOMIC_NO_MFENCE)
|
|
53
|
+
#define BOOST_ATOMIC_DETAIL_X86_HAS_MFENCE 1
|
|
54
|
+
#endif
|
|
55
|
+
|
|
56
|
+
#endif // defined(__GNUC__)
|
|
57
|
+
|
|
58
|
+
#endif // BOOST_ATOMIC_DETAIL_HWCAPS_GCC_X86_HPP_INCLUDED_
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
#if defined(__SIZEOF_POINTER__)
|
|
40
40
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER __SIZEOF_POINTER__
|
|
41
41
|
#elif defined(_MSC_VER)
|
|
42
|
-
#if defined(_M_AMD64) || defined(_M_IA64)
|
|
42
|
+
#if defined(_M_AMD64) || defined(_M_ARM64) || defined(_M_IA64)
|
|
43
43
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 8
|
|
44
44
|
#else
|
|
45
45
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_POINTER 4
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
#include <wchar.h>
|
|
118
118
|
#include <boost/cstdint.hpp>
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
#if defined(_MSC_VER) && (_MSC_VER <= 1310 || defined(UNDER_CE) && _MSC_VER <= 1500)
|
|
121
121
|
// MSVC 7.1 and MSVC 8 (arm) define WCHAR_MAX to a value not suitable for constant expressions
|
|
122
122
|
#define BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T 2
|
|
123
123
|
#elif (WCHAR_MAX + 0) == 0xff || (WCHAR_MAX + 0) == 0x7f
|
|
@@ -134,7 +134,7 @@
|
|
|
134
134
|
#if !defined(BOOST_ATOMIC_DETAIL_SIZEOF_SHORT) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_INT) ||\
|
|
135
135
|
!defined(BOOST_ATOMIC_DETAIL_SIZEOF_LONG) || !defined(BOOST_ATOMIC_DETAIL_SIZEOF_LLONG) ||\
|
|
136
136
|
!defined(BOOST_ATOMIC_DETAIL_SIZEOF_WCHAR_T)
|
|
137
|
-
#error Boost.Atomic: Failed to determine builtin integer sizes, the target platform is not supported. Please, report to the developers.
|
|
137
|
+
#error Boost.Atomic: Failed to determine builtin integer sizes, the target platform is not supported. Please, report to the developers (patches are welcome).
|
|
138
138
|
#endif
|
|
139
139
|
|
|
140
140
|
#endif // BOOST_ATOMIC_DETAIL_INT_SIZES_HPP_INCLUDED_
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Distributed under the Boost Software License, Version 1.0.
|
|
3
|
+
* (See accompanying file LICENSE_1_0.txt or copy at
|
|
4
|
+
* http://www.boost.org/LICENSE_1_0.txt)
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2018 Andrey Semashev
|
|
7
|
+
*/
|
|
8
|
+
/*!
|
|
9
|
+
* \file atomic/detail/integral_extend.hpp
|
|
10
|
+
*
|
|
11
|
+
* This header defines sign/zero extension utilities for Boost.Atomic. The tools assume two's complement signed integer representation.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
#ifndef BOOST_ATOMIC_DETAIL_INTEGRAL_EXTEND_HPP_INCLUDED_
|
|
15
|
+
#define BOOST_ATOMIC_DETAIL_INTEGRAL_EXTEND_HPP_INCLUDED_
|
|
16
|
+
|
|
17
|
+
#include <boost/atomic/detail/config.hpp>
|
|
18
|
+
#include <boost/atomic/detail/bitwise_cast.hpp>
|
|
19
|
+
#include <boost/atomic/detail/type_traits/integral_constant.hpp>
|
|
20
|
+
#include <boost/atomic/detail/type_traits/is_signed.hpp>
|
|
21
|
+
#include <boost/atomic/detail/type_traits/make_signed.hpp>
|
|
22
|
+
#include <boost/atomic/detail/type_traits/make_unsigned.hpp>
|
|
23
|
+
|
|
24
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
25
|
+
#pragma once
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
namespace boost {
|
|
29
|
+
namespace atomics {
|
|
30
|
+
namespace detail {
|
|
31
|
+
|
|
32
|
+
template< typename Output, typename Input >
|
|
33
|
+
BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::true_type) BOOST_NOEXCEPT
|
|
34
|
+
{
|
|
35
|
+
// Note: If we are casting with truncation or to the same-sized output, don't cause signed integer overflow by this chain of conversions
|
|
36
|
+
return atomics::detail::bitwise_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Output >::type >(
|
|
37
|
+
static_cast< typename atomics::detail::make_unsigned< Input >::type >(input)));
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
template< typename Output, typename Input >
|
|
41
|
+
BOOST_FORCEINLINE Output zero_extend_impl(Input input, atomics::detail::false_type) BOOST_NOEXCEPT
|
|
42
|
+
{
|
|
43
|
+
return static_cast< Output >(static_cast< typename atomics::detail::make_unsigned< Input >::type >(input));
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
//! Zero-extends or truncates (wraps) input operand to fit in the output type
|
|
47
|
+
template< typename Output, typename Input >
|
|
48
|
+
BOOST_FORCEINLINE Output zero_extend(Input input) BOOST_NOEXCEPT
|
|
49
|
+
{
|
|
50
|
+
return atomics::detail::zero_extend_impl< Output >(input, atomics::detail::integral_constant< bool, atomics::detail::is_signed< Output >::value >());
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
//! Truncates (wraps) input operand to fit in the output type
|
|
54
|
+
template< typename Output, typename Input >
|
|
55
|
+
BOOST_FORCEINLINE Output integral_truncate(Input input) BOOST_NOEXCEPT
|
|
56
|
+
{
|
|
57
|
+
// zero_extend does the truncation
|
|
58
|
+
return atomics::detail::zero_extend< Output >(input);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
template< typename Output, typename Input >
|
|
62
|
+
BOOST_FORCEINLINE Output sign_extend_impl(Input input, atomics::detail::true_type) BOOST_NOEXCEPT
|
|
63
|
+
{
|
|
64
|
+
return atomics::detail::integral_truncate< Output >(input);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
template< typename Output, typename Input >
|
|
68
|
+
BOOST_FORCEINLINE Output sign_extend_impl(Input input, atomics::detail::false_type) BOOST_NOEXCEPT
|
|
69
|
+
{
|
|
70
|
+
return static_cast< Output >(atomics::detail::bitwise_cast< typename atomics::detail::make_signed< Input >::type >(input));
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//! Sign-extends or truncates (wraps) input operand to fit in the output type
|
|
74
|
+
template< typename Output, typename Input >
|
|
75
|
+
BOOST_FORCEINLINE Output sign_extend(Input input) BOOST_NOEXCEPT
|
|
76
|
+
{
|
|
77
|
+
return atomics::detail::sign_extend_impl< Output >(input, atomics::detail::integral_constant< bool, sizeof(Output) <= sizeof(Input) >());
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
//! Sign-extends or truncates (wraps) input operand to fit in the output type
|
|
81
|
+
template< typename Output, typename Input >
|
|
82
|
+
BOOST_FORCEINLINE Output integral_extend(Input input, atomics::detail::true_type) BOOST_NOEXCEPT
|
|
83
|
+
{
|
|
84
|
+
return atomics::detail::sign_extend< Output >(input);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
//! Zero-extends or truncates (wraps) input operand to fit in the output type
|
|
88
|
+
template< typename Output, typename Input >
|
|
89
|
+
BOOST_FORCEINLINE Output integral_extend(Input input, atomics::detail::false_type) BOOST_NOEXCEPT
|
|
90
|
+
{
|
|
91
|
+
return atomics::detail::zero_extend< Output >(input);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
//! Sign- or zero-extends or truncates (wraps) input operand to fit in the output type
|
|
95
|
+
template< bool Signed, typename Output, typename Input >
|
|
96
|
+
BOOST_FORCEINLINE Output integral_extend(Input input) BOOST_NOEXCEPT
|
|
97
|
+
{
|
|
98
|
+
return atomics::detail::integral_extend< Output >(input, atomics::detail::integral_constant< bool, Signed >());
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
} // namespace detail
|
|
102
|
+
} // namespace atomics
|
|
103
|
+
} // namespace boost
|
|
104
|
+
|
|
105
|
+
#endif // BOOST_ATOMIC_DETAIL_INTEGRAL_EXTEND_HPP_INCLUDED_
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
#define BOOST_ATOMIC_DETAIL_INTERLOCKED_HPP
|
|
3
3
|
|
|
4
4
|
// Copyright (c) 2009 Helge Bahmann
|
|
5
|
-
// Copyright (c) 2012 - 2014 Andrey Semashev
|
|
5
|
+
// Copyright (c) 2012 - 2014, 2017 Andrey Semashev
|
|
6
6
|
//
|
|
7
7
|
// Distributed under the Boost Software License, Version 1.0.
|
|
8
8
|
// See accompanying file LICENSE_1_0.txt or copy at
|
|
@@ -73,6 +73,8 @@ extern "C" long __cdecl _InterlockedExchange( long volatile *, long );
|
|
|
73
73
|
#pragma intrinsic(_InterlockedAnd)
|
|
74
74
|
#pragma intrinsic(_InterlockedOr)
|
|
75
75
|
#pragma intrinsic(_InterlockedXor)
|
|
76
|
+
#pragma intrinsic(_interlockedbittestandset)
|
|
77
|
+
#pragma intrinsic(_interlockedbittestandreset)
|
|
76
78
|
#endif
|
|
77
79
|
|
|
78
80
|
#define BOOST_ATOMIC_INTERLOCKED_COMPARE_EXCHANGE(dest, exchange, compare) _InterlockedCompareExchange((long*)(dest), (long)(exchange), (long)(compare))
|
|
@@ -81,6 +83,18 @@ extern "C" long __cdecl _InterlockedExchange( long volatile *, long );
|
|
|
81
83
|
#define BOOST_ATOMIC_INTERLOCKED_AND(dest, arg) _InterlockedAnd((long*)(dest), (long)(arg))
|
|
82
84
|
#define BOOST_ATOMIC_INTERLOCKED_OR(dest, arg) _InterlockedOr((long*)(dest), (long)(arg))
|
|
83
85
|
#define BOOST_ATOMIC_INTERLOCKED_XOR(dest, arg) _InterlockedXor((long*)(dest), (long)(arg))
|
|
86
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTS(dest, arg) _interlockedbittestandset((long*)(dest), (long)(arg))
|
|
87
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTR(dest, arg) _interlockedbittestandreset((long*)(dest), (long)(arg))
|
|
88
|
+
|
|
89
|
+
#if defined(_M_AMD64)
|
|
90
|
+
#if defined(BOOST_MSVC)
|
|
91
|
+
#pragma intrinsic(_interlockedbittestandset64)
|
|
92
|
+
#pragma intrinsic(_interlockedbittestandreset64)
|
|
93
|
+
#endif
|
|
94
|
+
|
|
95
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTS64(dest, arg) _interlockedbittestandset64((__int64*)(dest), (__int64)(arg))
|
|
96
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTR64(dest, arg) _interlockedbittestandreset64((__int64*)(dest), (__int64)(arg))
|
|
97
|
+
#endif // defined(_M_AMD64)
|
|
84
98
|
|
|
85
99
|
#if (defined(_M_IX86) && _M_IX86 >= 500) || defined(_M_AMD64) || defined(_M_IA64)
|
|
86
100
|
#if defined(BOOST_MSVC)
|
|
@@ -394,6 +408,26 @@ extern "C" long __cdecl _InterlockedExchange( long volatile *, long );
|
|
|
394
408
|
#define BOOST_ATOMIC_INTERLOCKED_XOR64_ACQUIRE(dest, arg) _InterlockedXor64_acq((__int64*)(dest), (__int64)(arg))
|
|
395
409
|
#define BOOST_ATOMIC_INTERLOCKED_XOR64_RELEASE(dest, arg) _InterlockedXor64_rel((__int64*)(dest), (__int64)(arg))
|
|
396
410
|
|
|
411
|
+
#if defined(BOOST_MSVC)
|
|
412
|
+
#pragma intrinsic(_interlockedbittestandset_nf)
|
|
413
|
+
#pragma intrinsic(_interlockedbittestandset_acq)
|
|
414
|
+
#pragma intrinsic(_interlockedbittestandset_rel)
|
|
415
|
+
#endif
|
|
416
|
+
|
|
417
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTS_RELAXED(dest, arg) _interlockedbittestandset_nf((long*)(dest), (long)(arg))
|
|
418
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTS_ACQUIRE(dest, arg) _interlockedbittestandset_acq((long*)(dest), (long)(arg))
|
|
419
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTS_RELEASE(dest, arg) _interlockedbittestandset_rel((long*)(dest), (long)(arg))
|
|
420
|
+
|
|
421
|
+
#if defined(BOOST_MSVC)
|
|
422
|
+
#pragma intrinsic(_interlockedbittestandreset_nf)
|
|
423
|
+
#pragma intrinsic(_interlockedbittestandreset_acq)
|
|
424
|
+
#pragma intrinsic(_interlockedbittestandreset_rel)
|
|
425
|
+
#endif
|
|
426
|
+
|
|
427
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTR_RELAXED(dest, arg) _interlockedbittestandreset_nf((long*)(dest), (long)(arg))
|
|
428
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTR_ACQUIRE(dest, arg) _interlockedbittestandreset_acq((long*)(dest), (long)(arg))
|
|
429
|
+
#define BOOST_ATOMIC_INTERLOCKED_BTR_RELEASE(dest, arg) _interlockedbittestandreset_rel((long*)(dest), (long)(arg))
|
|
430
|
+
|
|
397
431
|
#endif // _MSC_VER >= 1700 && defined(_M_ARM)
|
|
398
432
|
|
|
399
433
|
#endif // _MSC_VER < 1400
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
#include <boost/atomic/detail/platform.hpp>
|
|
19
19
|
|
|
20
20
|
#if !defined(BOOST_ATOMIC_EMULATED)
|
|
21
|
-
#include
|
|
21
|
+
#include BOOST_ATOMIC_DETAIL_BACKEND_HEADER(boost/atomic/detail/ops_)
|
|
22
22
|
#else
|
|
23
23
|
#include <boost/atomic/detail/operations_fwd.hpp>
|
|
24
24
|
#endif
|
|
@@ -47,6 +47,8 @@ struct cas_based_operations :
|
|
|
47
47
|
{
|
|
48
48
|
typedef typename Base::storage_type storage_type;
|
|
49
49
|
|
|
50
|
+
static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = true;
|
|
51
|
+
|
|
50
52
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
51
53
|
{
|
|
52
54
|
storage_type old_val;
|
|
@@ -30,10 +30,15 @@ namespace boost {
|
|
|
30
30
|
namespace atomics {
|
|
31
31
|
namespace detail {
|
|
32
32
|
|
|
33
|
-
template<
|
|
33
|
+
template< std::size_t Size, bool Signed >
|
|
34
34
|
struct emulated_operations
|
|
35
35
|
{
|
|
36
|
-
typedef
|
|
36
|
+
typedef typename make_storage_type< Size >::type storage_type;
|
|
37
|
+
typedef typename make_storage_type< Size >::aligned aligned_storage_type;
|
|
38
|
+
|
|
39
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size;
|
|
40
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
41
|
+
static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false;
|
|
37
42
|
|
|
38
43
|
static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = false;
|
|
39
44
|
|
|
@@ -142,18 +147,12 @@ struct emulated_operations
|
|
|
142
147
|
{
|
|
143
148
|
store(storage, (storage_type)0, order);
|
|
144
149
|
}
|
|
145
|
-
|
|
146
|
-
static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT
|
|
147
|
-
{
|
|
148
|
-
return false;
|
|
149
|
-
}
|
|
150
150
|
};
|
|
151
151
|
|
|
152
152
|
template< std::size_t Size, bool Signed >
|
|
153
153
|
struct operations :
|
|
154
|
-
public emulated_operations<
|
|
154
|
+
public emulated_operations< Size, Signed >
|
|
155
155
|
{
|
|
156
|
-
typedef typename make_storage_type< Size, Signed >::aligned aligned_storage_type;
|
|
157
156
|
};
|
|
158
157
|
|
|
159
158
|
} // namespace detail
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
#include <boost/memory_order.hpp>
|
|
19
19
|
#include <boost/atomic/detail/config.hpp>
|
|
20
20
|
#include <boost/atomic/detail/storage_type.hpp>
|
|
21
|
+
#include <boost/atomic/detail/integral_extend.hpp>
|
|
21
22
|
|
|
22
23
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
23
24
|
#pragma once
|
|
@@ -32,18 +33,18 @@ struct extending_cas_based_operations :
|
|
|
32
33
|
public Base
|
|
33
34
|
{
|
|
34
35
|
typedef typename Base::storage_type storage_type;
|
|
35
|
-
typedef typename make_storage_type< Size
|
|
36
|
+
typedef typename make_storage_type< Size >::type emulated_storage_type;
|
|
36
37
|
|
|
37
38
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
38
39
|
{
|
|
39
40
|
storage_type old_val;
|
|
40
41
|
atomics::detail::non_atomic_load(storage, old_val);
|
|
41
|
-
|
|
42
|
+
storage_type new_val;
|
|
42
43
|
do
|
|
43
44
|
{
|
|
44
|
-
new_val =
|
|
45
|
+
new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val + v));
|
|
45
46
|
}
|
|
46
|
-
while (!Base::compare_exchange_weak(storage, old_val,
|
|
47
|
+
while (!Base::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed));
|
|
47
48
|
return old_val;
|
|
48
49
|
}
|
|
49
50
|
|
|
@@ -51,12 +52,12 @@ struct extending_cas_based_operations :
|
|
|
51
52
|
{
|
|
52
53
|
storage_type old_val;
|
|
53
54
|
atomics::detail::non_atomic_load(storage, old_val);
|
|
54
|
-
|
|
55
|
+
storage_type new_val;
|
|
55
56
|
do
|
|
56
57
|
{
|
|
57
|
-
new_val =
|
|
58
|
+
new_val = atomics::detail::integral_extend< Signed, storage_type >(static_cast< emulated_storage_type >(old_val - v));
|
|
58
59
|
}
|
|
59
|
-
while (!Base::compare_exchange_weak(storage, old_val,
|
|
60
|
+
while (!Base::compare_exchange_weak(storage, old_val, new_val, order, memory_order_relaxed));
|
|
60
61
|
return old_val;
|
|
61
62
|
}
|
|
62
63
|
};
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ALPHA_HPP_INCLUDED_
|
|
17
17
|
#define BOOST_ATOMIC_DETAIL_OPS_GCC_ALPHA_HPP_INCLUDED_
|
|
18
18
|
|
|
19
|
+
#include <cstddef>
|
|
19
20
|
#include <boost/memory_order.hpp>
|
|
20
21
|
#include <boost/atomic/detail/config.hpp>
|
|
21
22
|
#include <boost/atomic/detail/storage_type.hpp>
|
|
@@ -63,17 +64,18 @@ namespace detail {
|
|
|
63
64
|
|
|
64
65
|
struct gcc_alpha_operations_base
|
|
65
66
|
{
|
|
67
|
+
static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false;
|
|
66
68
|
static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
|
|
67
69
|
|
|
68
70
|
static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT
|
|
69
71
|
{
|
|
70
|
-
if ((order & memory_order_release) !=
|
|
72
|
+
if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
|
|
71
73
|
__asm__ __volatile__ ("mb" ::: "memory");
|
|
72
74
|
}
|
|
73
75
|
|
|
74
76
|
static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT
|
|
75
77
|
{
|
|
76
|
-
if ((order & (memory_order_consume | memory_order_acquire)) !=
|
|
78
|
+
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
77
79
|
__asm__ __volatile__ ("mb" ::: "memory");
|
|
78
80
|
}
|
|
79
81
|
|
|
@@ -89,8 +91,11 @@ template< bool Signed >
|
|
|
89
91
|
struct operations< 4u, Signed > :
|
|
90
92
|
public gcc_alpha_operations_base
|
|
91
93
|
{
|
|
92
|
-
typedef typename make_storage_type< 4u
|
|
93
|
-
typedef typename make_storage_type< 4u
|
|
94
|
+
typedef typename make_storage_type< 4u >::type storage_type;
|
|
95
|
+
typedef typename make_storage_type< 4u >::aligned aligned_storage_type;
|
|
96
|
+
|
|
97
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
|
|
98
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
94
99
|
|
|
95
100
|
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
96
101
|
{
|
|
@@ -339,11 +344,6 @@ struct operations< 4u, Signed > :
|
|
|
339
344
|
{
|
|
340
345
|
store(storage, 0, order);
|
|
341
346
|
}
|
|
342
|
-
|
|
343
|
-
static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT
|
|
344
|
-
{
|
|
345
|
-
return true;
|
|
346
|
-
}
|
|
347
347
|
};
|
|
348
348
|
|
|
349
349
|
|
|
@@ -601,8 +601,11 @@ template< bool Signed >
|
|
|
601
601
|
struct operations< 8u, Signed > :
|
|
602
602
|
public gcc_alpha_operations_base
|
|
603
603
|
{
|
|
604
|
-
typedef typename make_storage_type< 8u
|
|
605
|
-
typedef typename make_storage_type< 8u
|
|
604
|
+
typedef typename make_storage_type< 8u >::type storage_type;
|
|
605
|
+
typedef typename make_storage_type< 8u >::aligned aligned_storage_type;
|
|
606
|
+
|
|
607
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
|
|
608
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
606
609
|
|
|
607
610
|
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
608
611
|
{
|
|
@@ -851,11 +854,6 @@ struct operations< 8u, Signed > :
|
|
|
851
854
|
{
|
|
852
855
|
store(storage, 0, order);
|
|
853
856
|
}
|
|
854
|
-
|
|
855
|
-
static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT
|
|
856
|
-
{
|
|
857
|
-
return true;
|
|
858
|
-
}
|
|
859
857
|
};
|
|
860
858
|
|
|
861
859
|
|
|
@@ -16,12 +16,14 @@
|
|
|
16
16
|
#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_
|
|
17
17
|
#define BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_
|
|
18
18
|
|
|
19
|
+
#include <cstddef>
|
|
19
20
|
#include <boost/cstdint.hpp>
|
|
20
21
|
#include <boost/memory_order.hpp>
|
|
21
22
|
#include <boost/atomic/detail/config.hpp>
|
|
22
23
|
#include <boost/atomic/detail/storage_type.hpp>
|
|
24
|
+
#include <boost/atomic/detail/integral_extend.hpp>
|
|
23
25
|
#include <boost/atomic/detail/operations_fwd.hpp>
|
|
24
|
-
#include <boost/atomic/detail/
|
|
26
|
+
#include <boost/atomic/detail/ops_gcc_arm_common.hpp>
|
|
25
27
|
#include <boost/atomic/capabilities.hpp>
|
|
26
28
|
|
|
27
29
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
@@ -53,112 +55,16 @@ namespace detail {
|
|
|
53
55
|
// (Actually it looks like these are available from version 6k onwards.)
|
|
54
56
|
// FIXME these are not yet used; should be mostly a matter of copy-and-paste.
|
|
55
57
|
// I think you can supply an immediate offset to the address.
|
|
56
|
-
//
|
|
57
|
-
// A memory barrier is effected using a "co-processor 15" instruction,
|
|
58
|
-
// though a separate assembler mnemonic is available for it in v7.
|
|
59
|
-
//
|
|
60
|
-
// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding. It
|
|
61
|
-
// doesn't include all instructions and in particular it doesn't include the co-processor
|
|
62
|
-
// instruction used for the memory barrier or the load-locked/store-conditional
|
|
63
|
-
// instructions. So, if we're compiling in "Thumb 1" mode, we need to wrap all of our
|
|
64
|
-
// asm blocks with code to temporarily change to ARM mode.
|
|
65
|
-
//
|
|
66
|
-
// You can only change between ARM and Thumb modes when branching using the bx instruction.
|
|
67
|
-
// bx takes an address specified in a register. The least significant bit of the address
|
|
68
|
-
// indicates the mode, so 1 is added to indicate that the destination code is Thumb.
|
|
69
|
-
// A temporary register is needed for the address and is passed as an argument to these
|
|
70
|
-
// macros. It must be one of the "low" registers accessible to Thumb code, specified
|
|
71
|
-
// using the "l" attribute in the asm statement.
|
|
72
|
-
//
|
|
73
|
-
// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM
|
|
74
|
-
// instruction set. (Actually, there was an extension of v6 called v6T2 which supported
|
|
75
|
-
// "Thumb 2" mode, but its architecture manual is no longer available, referring to v7.)
|
|
76
|
-
// So in v7 we don't need to change to ARM mode; we can write "universal
|
|
77
|
-
// assembler" which will assemble to Thumb 2 or ARM code as appropriate. The only thing
|
|
78
|
-
// we need to do to make this "universal" assembler mode work is to insert "IT" instructions
|
|
79
|
-
// to annotate the conditional instructions. These are ignored in other modes (e.g. v6),
|
|
80
|
-
// so they can always be present.
|
|
81
|
-
|
|
82
|
-
// A note about memory_order_consume. Technically, this architecture allows to avoid
|
|
83
|
-
// unnecessary memory barrier after consume load since it supports data dependency ordering.
|
|
84
|
-
// However, some compiler optimizations may break a seemingly valid code relying on data
|
|
85
|
-
// dependency tracking by injecting bogus branches to aid out of order execution.
|
|
86
|
-
// This may happen not only in Boost.Atomic code but also in user's code, which we have no
|
|
87
|
-
// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php.
|
|
88
|
-
// For this reason we promote memory_order_consume to memory_order_acquire.
|
|
89
|
-
|
|
90
|
-
#if defined(__thumb__) && !defined(__thumb2__)
|
|
91
|
-
#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 8f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "8:\n"
|
|
92
|
-
#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 9f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "9:\n"
|
|
93
|
-
#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&l" (var)
|
|
94
|
-
#else
|
|
95
|
-
// The tmpreg may be wasted in this case, which is non-optimal.
|
|
96
|
-
#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG)
|
|
97
|
-
#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG)
|
|
98
|
-
#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&r" (var)
|
|
99
|
-
#endif
|
|
100
|
-
|
|
101
|
-
struct gcc_arm_operations_base
|
|
102
|
-
{
|
|
103
|
-
static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
|
|
104
|
-
|
|
105
|
-
static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT
|
|
106
|
-
{
|
|
107
|
-
if ((order & memory_order_release) != 0)
|
|
108
|
-
hardware_full_fence();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT
|
|
112
|
-
{
|
|
113
|
-
if ((order & (memory_order_consume | memory_order_acquire)) != 0)
|
|
114
|
-
hardware_full_fence();
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT
|
|
118
|
-
{
|
|
119
|
-
if (order == memory_order_seq_cst)
|
|
120
|
-
hardware_full_fence();
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT
|
|
124
|
-
{
|
|
125
|
-
#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_DMB)
|
|
126
|
-
// Older binutils (supposedly, older than 2.21.1) didn't support symbolic or numeric arguments of the "dmb" instruction such as "ish" or "#11".
|
|
127
|
-
// As a workaround we have to inject encoded bytes of the instruction. There are two encodings for the instruction: ARM and Thumb. See ARM Architecture Reference Manual, A8.8.43.
|
|
128
|
-
// Since we cannot detect binutils version at compile time, we'll have to always use this hack.
|
|
129
|
-
__asm__ __volatile__
|
|
130
|
-
(
|
|
131
|
-
#if defined(__thumb2__)
|
|
132
|
-
".short 0xF3BF, 0x8F5B\n" // dmb ish
|
|
133
|
-
#else
|
|
134
|
-
".word 0xF57FF05B\n" // dmb ish
|
|
135
|
-
#endif
|
|
136
|
-
:
|
|
137
|
-
:
|
|
138
|
-
: "memory"
|
|
139
|
-
);
|
|
140
|
-
#else
|
|
141
|
-
int tmp;
|
|
142
|
-
__asm__ __volatile__
|
|
143
|
-
(
|
|
144
|
-
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
|
|
145
|
-
"mcr\tp15, 0, r0, c7, c10, 5\n"
|
|
146
|
-
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
|
|
147
|
-
: "=&l" (tmp)
|
|
148
|
-
:
|
|
149
|
-
: "memory"
|
|
150
|
-
);
|
|
151
|
-
#endif
|
|
152
|
-
}
|
|
153
|
-
};
|
|
154
|
-
|
|
155
58
|
|
|
156
59
|
template< bool Signed >
|
|
157
60
|
struct operations< 4u, Signed > :
|
|
158
61
|
public gcc_arm_operations_base
|
|
159
62
|
{
|
|
160
|
-
typedef typename make_storage_type< 4u
|
|
161
|
-
typedef typename make_storage_type< 4u
|
|
63
|
+
typedef typename make_storage_type< 4u >::type storage_type;
|
|
64
|
+
typedef typename make_storage_type< 4u >::aligned aligned_storage_type;
|
|
65
|
+
|
|
66
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
|
|
67
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
162
68
|
|
|
163
69
|
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
164
70
|
{
|
|
@@ -217,7 +123,7 @@ struct operations< 4u, Signed > :
|
|
|
217
123
|
[success] "=&r" (success), // %1
|
|
218
124
|
[tmp] "=&l" (tmp), // %2
|
|
219
125
|
[storage] "+Q" (storage) // %3
|
|
220
|
-
: [expected] "
|
|
126
|
+
: [expected] "Ir" (expected), // %4
|
|
221
127
|
[desired] "r" (desired) // %5
|
|
222
128
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
223
129
|
);
|
|
@@ -253,7 +159,7 @@ struct operations< 4u, Signed > :
|
|
|
253
159
|
[success] "=&r" (success), // %1
|
|
254
160
|
[tmp] "=&l" (tmp), // %2
|
|
255
161
|
[storage] "+Q" (storage) // %3
|
|
256
|
-
: [expected] "
|
|
162
|
+
: [expected] "Ir" (expected), // %4
|
|
257
163
|
[desired] "r" (desired) // %5
|
|
258
164
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
259
165
|
);
|
|
@@ -284,7 +190,7 @@ struct operations< 4u, Signed > :
|
|
|
284
190
|
[result] "=&r" (result), // %1
|
|
285
191
|
[tmp] "=&l" (tmp), // %2
|
|
286
192
|
[storage] "+Q" (storage) // %3
|
|
287
|
-
: [value] "
|
|
193
|
+
: [value] "Ir" (v) // %4
|
|
288
194
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
289
195
|
);
|
|
290
196
|
fence_after(order);
|
|
@@ -310,7 +216,7 @@ struct operations< 4u, Signed > :
|
|
|
310
216
|
[result] "=&r" (result), // %1
|
|
311
217
|
[tmp] "=&l" (tmp), // %2
|
|
312
218
|
[storage] "+Q" (storage) // %3
|
|
313
|
-
: [value] "
|
|
219
|
+
: [value] "Ir" (v) // %4
|
|
314
220
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
315
221
|
);
|
|
316
222
|
fence_after(order);
|
|
@@ -336,7 +242,7 @@ struct operations< 4u, Signed > :
|
|
|
336
242
|
[result] "=&r" (result), // %1
|
|
337
243
|
[tmp] "=&l" (tmp), // %2
|
|
338
244
|
[storage] "+Q" (storage) // %3
|
|
339
|
-
: [value] "
|
|
245
|
+
: [value] "Ir" (v) // %4
|
|
340
246
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
341
247
|
);
|
|
342
248
|
fence_after(order);
|
|
@@ -362,7 +268,7 @@ struct operations< 4u, Signed > :
|
|
|
362
268
|
[result] "=&r" (result), // %1
|
|
363
269
|
[tmp] "=&l" (tmp), // %2
|
|
364
270
|
[storage] "+Q" (storage) // %3
|
|
365
|
-
: [value] "
|
|
271
|
+
: [value] "Ir" (v) // %4
|
|
366
272
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
367
273
|
);
|
|
368
274
|
fence_after(order);
|
|
@@ -388,7 +294,7 @@ struct operations< 4u, Signed > :
|
|
|
388
294
|
[result] "=&r" (result), // %1
|
|
389
295
|
[tmp] "=&l" (tmp), // %2
|
|
390
296
|
[storage] "+Q" (storage) // %3
|
|
391
|
-
: [value] "
|
|
297
|
+
: [value] "Ir" (v) // %4
|
|
392
298
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
393
299
|
);
|
|
394
300
|
fence_after(order);
|
|
@@ -404,13 +310,268 @@ struct operations< 4u, Signed > :
|
|
|
404
310
|
{
|
|
405
311
|
store(storage, 0, order);
|
|
406
312
|
}
|
|
313
|
+
};
|
|
314
|
+
|
|
315
|
+
#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB)
|
|
316
|
+
|
|
317
|
+
template< bool Signed >
|
|
318
|
+
struct operations< 1u, Signed > :
|
|
319
|
+
public gcc_arm_operations_base
|
|
320
|
+
{
|
|
321
|
+
typedef typename make_storage_type< 1u >::type storage_type;
|
|
322
|
+
typedef typename make_storage_type< 1u >::aligned aligned_storage_type;
|
|
323
|
+
typedef typename make_storage_type< 4u >::type extended_storage_type;
|
|
324
|
+
|
|
325
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u;
|
|
326
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
327
|
+
|
|
328
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
329
|
+
{
|
|
330
|
+
fence_before(order);
|
|
331
|
+
storage = v;
|
|
332
|
+
fence_after_store(order);
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
336
|
+
{
|
|
337
|
+
storage_type v = storage;
|
|
338
|
+
fence_after(order);
|
|
339
|
+
return v;
|
|
340
|
+
}
|
|
341
|
+
|
|
342
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
343
|
+
{
|
|
344
|
+
extended_storage_type original;
|
|
345
|
+
fence_before(order);
|
|
346
|
+
uint32_t tmp;
|
|
347
|
+
__asm__ __volatile__
|
|
348
|
+
(
|
|
349
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
350
|
+
"1:\n"
|
|
351
|
+
"ldrexb %[original], %[storage]\n" // load the original value and zero-extend to 32 bits
|
|
352
|
+
"strexb %[tmp], %[value], %[storage]\n" // store the replacement, tmp = store failed
|
|
353
|
+
"teq %[tmp], #0\n" // check if store succeeded
|
|
354
|
+
"bne 1b\n"
|
|
355
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
356
|
+
: [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)
|
|
357
|
+
: [value] "r" (v)
|
|
358
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
359
|
+
);
|
|
360
|
+
fence_after(order);
|
|
361
|
+
return static_cast< storage_type >(original);
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
365
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
366
|
+
{
|
|
367
|
+
fence_before(success_order);
|
|
368
|
+
uint32_t success;
|
|
369
|
+
uint32_t tmp;
|
|
370
|
+
extended_storage_type original;
|
|
371
|
+
__asm__ __volatile__
|
|
372
|
+
(
|
|
373
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
374
|
+
"mov %[success], #0\n" // success = 0
|
|
375
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
376
|
+
"cmp %[original], %[expected]\n" // flags = original==expected
|
|
377
|
+
"itt eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
|
|
378
|
+
"strexbeq %[success], %[desired], %[storage]\n" // if (flags.equal) *(&storage) = desired, success = store failed
|
|
379
|
+
"eoreq %[success], %[success], #1\n" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
|
|
380
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
381
|
+
: [original] "=&r" (original), // %0
|
|
382
|
+
[success] "=&r" (success), // %1
|
|
383
|
+
[tmp] "=&l" (tmp), // %2
|
|
384
|
+
[storage] "+Q" (storage) // %3
|
|
385
|
+
: [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
|
|
386
|
+
[desired] "r" (desired) // %5
|
|
387
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
388
|
+
);
|
|
389
|
+
if (success)
|
|
390
|
+
fence_after(success_order);
|
|
391
|
+
else
|
|
392
|
+
fence_after(failure_order);
|
|
393
|
+
expected = static_cast< storage_type >(original);
|
|
394
|
+
return !!success;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
398
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
399
|
+
{
|
|
400
|
+
fence_before(success_order);
|
|
401
|
+
uint32_t success;
|
|
402
|
+
uint32_t tmp;
|
|
403
|
+
extended_storage_type original;
|
|
404
|
+
__asm__ __volatile__
|
|
405
|
+
(
|
|
406
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
407
|
+
"mov %[success], #0\n" // success = 0
|
|
408
|
+
"1:\n"
|
|
409
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
410
|
+
"cmp %[original], %[expected]\n" // flags = original==expected
|
|
411
|
+
"bne 2f\n" // if (!flags.equal) goto end
|
|
412
|
+
"strexb %[success], %[desired], %[storage]\n" // *(&storage) = desired, success = store failed
|
|
413
|
+
"eors %[success], %[success], #1\n" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
|
|
414
|
+
"beq 1b\n" // if (flags.equal) goto retry
|
|
415
|
+
"2:\n"
|
|
416
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
417
|
+
: [original] "=&r" (original), // %0
|
|
418
|
+
[success] "=&r" (success), // %1
|
|
419
|
+
[tmp] "=&l" (tmp), // %2
|
|
420
|
+
[storage] "+Q" (storage) // %3
|
|
421
|
+
: [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
|
|
422
|
+
[desired] "r" (desired) // %5
|
|
423
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
424
|
+
);
|
|
425
|
+
if (success)
|
|
426
|
+
fence_after(success_order);
|
|
427
|
+
else
|
|
428
|
+
fence_after(failure_order);
|
|
429
|
+
expected = static_cast< storage_type >(original);
|
|
430
|
+
return !!success;
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
434
|
+
{
|
|
435
|
+
fence_before(order);
|
|
436
|
+
uint32_t tmp;
|
|
437
|
+
extended_storage_type original, result;
|
|
438
|
+
__asm__ __volatile__
|
|
439
|
+
(
|
|
440
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
441
|
+
"1:\n"
|
|
442
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
443
|
+
"add %[result], %[original], %[value]\n" // result = original + value
|
|
444
|
+
"strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
445
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
446
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
447
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
448
|
+
: [original] "=&r" (original), // %0
|
|
449
|
+
[result] "=&r" (result), // %1
|
|
450
|
+
[tmp] "=&l" (tmp), // %2
|
|
451
|
+
[storage] "+Q" (storage) // %3
|
|
452
|
+
: [value] "Ir" (v) // %4
|
|
453
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
454
|
+
);
|
|
455
|
+
fence_after(order);
|
|
456
|
+
return static_cast< storage_type >(original);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
460
|
+
{
|
|
461
|
+
fence_before(order);
|
|
462
|
+
uint32_t tmp;
|
|
463
|
+
extended_storage_type original, result;
|
|
464
|
+
__asm__ __volatile__
|
|
465
|
+
(
|
|
466
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
467
|
+
"1:\n"
|
|
468
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
469
|
+
"sub %[result], %[original], %[value]\n" // result = original - value
|
|
470
|
+
"strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
471
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
472
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
473
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
474
|
+
: [original] "=&r" (original), // %0
|
|
475
|
+
[result] "=&r" (result), // %1
|
|
476
|
+
[tmp] "=&l" (tmp), // %2
|
|
477
|
+
[storage] "+Q" (storage) // %3
|
|
478
|
+
: [value] "Ir" (v) // %4
|
|
479
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
480
|
+
);
|
|
481
|
+
fence_after(order);
|
|
482
|
+
return static_cast< storage_type >(original);
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
486
|
+
{
|
|
487
|
+
fence_before(order);
|
|
488
|
+
uint32_t tmp;
|
|
489
|
+
extended_storage_type original, result;
|
|
490
|
+
__asm__ __volatile__
|
|
491
|
+
(
|
|
492
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
493
|
+
"1:\n"
|
|
494
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
495
|
+
"and %[result], %[original], %[value]\n" // result = original & value
|
|
496
|
+
"strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
497
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
498
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
499
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
500
|
+
: [original] "=&r" (original), // %0
|
|
501
|
+
[result] "=&r" (result), // %1
|
|
502
|
+
[tmp] "=&l" (tmp), // %2
|
|
503
|
+
[storage] "+Q" (storage) // %3
|
|
504
|
+
: [value] "Ir" (v) // %4
|
|
505
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
506
|
+
);
|
|
507
|
+
fence_after(order);
|
|
508
|
+
return static_cast< storage_type >(original);
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
512
|
+
{
|
|
513
|
+
fence_before(order);
|
|
514
|
+
uint32_t tmp;
|
|
515
|
+
extended_storage_type original, result;
|
|
516
|
+
__asm__ __volatile__
|
|
517
|
+
(
|
|
518
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
519
|
+
"1:\n"
|
|
520
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
521
|
+
"orr %[result], %[original], %[value]\n" // result = original | value
|
|
522
|
+
"strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
523
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
524
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
525
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
526
|
+
: [original] "=&r" (original), // %0
|
|
527
|
+
[result] "=&r" (result), // %1
|
|
528
|
+
[tmp] "=&l" (tmp), // %2
|
|
529
|
+
[storage] "+Q" (storage) // %3
|
|
530
|
+
: [value] "Ir" (v) // %4
|
|
531
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
532
|
+
);
|
|
533
|
+
fence_after(order);
|
|
534
|
+
return static_cast< storage_type >(original);
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
538
|
+
{
|
|
539
|
+
fence_before(order);
|
|
540
|
+
uint32_t tmp;
|
|
541
|
+
extended_storage_type original, result;
|
|
542
|
+
__asm__ __volatile__
|
|
543
|
+
(
|
|
544
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
545
|
+
"1:\n"
|
|
546
|
+
"ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
547
|
+
"eor %[result], %[original], %[value]\n" // result = original ^ value
|
|
548
|
+
"strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
549
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
550
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
551
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
552
|
+
: [original] "=&r" (original), // %0
|
|
553
|
+
[result] "=&r" (result), // %1
|
|
554
|
+
[tmp] "=&l" (tmp), // %2
|
|
555
|
+
[storage] "+Q" (storage) // %3
|
|
556
|
+
: [value] "Ir" (v) // %4
|
|
557
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
558
|
+
);
|
|
559
|
+
fence_after(order);
|
|
560
|
+
return static_cast< storage_type >(original);
|
|
561
|
+
}
|
|
407
562
|
|
|
408
|
-
static BOOST_FORCEINLINE bool
|
|
563
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
409
564
|
{
|
|
410
|
-
return
|
|
565
|
+
return !!exchange(storage, (storage_type)1, order);
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
569
|
+
{
|
|
570
|
+
store(storage, 0, order);
|
|
411
571
|
}
|
|
412
572
|
};
|
|
413
573
|
|
|
574
|
+
#else // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB)
|
|
414
575
|
|
|
415
576
|
template< >
|
|
416
577
|
struct operations< 1u, false > :
|
|
@@ -439,7 +600,7 @@ struct operations< 1u, false > :
|
|
|
439
600
|
[result] "=&r" (result), // %1
|
|
440
601
|
[tmp] "=&l" (tmp), // %2
|
|
441
602
|
[storage] "+Q" (storage) // %3
|
|
442
|
-
: [value] "
|
|
603
|
+
: [value] "Ir" (v) // %4
|
|
443
604
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
444
605
|
);
|
|
445
606
|
fence_after(order);
|
|
@@ -466,7 +627,7 @@ struct operations< 1u, false > :
|
|
|
466
627
|
[result] "=&r" (result), // %1
|
|
467
628
|
[tmp] "=&l" (tmp), // %2
|
|
468
629
|
[storage] "+Q" (storage) // %3
|
|
469
|
-
: [value] "
|
|
630
|
+
: [value] "Ir" (v) // %4
|
|
470
631
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
471
632
|
);
|
|
472
633
|
fence_after(order);
|
|
@@ -501,7 +662,7 @@ struct operations< 1u, true > :
|
|
|
501
662
|
[result] "=&r" (result), // %1
|
|
502
663
|
[tmp] "=&l" (tmp), // %2
|
|
503
664
|
[storage] "+Q" (storage) // %3
|
|
504
|
-
: [value] "
|
|
665
|
+
: [value] "Ir" (v) // %4
|
|
505
666
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
506
667
|
);
|
|
507
668
|
fence_after(order);
|
|
@@ -528,7 +689,7 @@ struct operations< 1u, true > :
|
|
|
528
689
|
[result] "=&r" (result), // %1
|
|
529
690
|
[tmp] "=&l" (tmp), // %2
|
|
530
691
|
[storage] "+Q" (storage) // %3
|
|
531
|
-
: [value] "
|
|
692
|
+
: [value] "Ir" (v) // %4
|
|
532
693
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
533
694
|
);
|
|
534
695
|
fence_after(order);
|
|
@@ -536,6 +697,268 @@ struct operations< 1u, true > :
|
|
|
536
697
|
}
|
|
537
698
|
};
|
|
538
699
|
|
|
700
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB)
|
|
701
|
+
|
|
702
|
+
#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH)
|
|
703
|
+
|
|
704
|
+
template< bool Signed >
|
|
705
|
+
struct operations< 2u, Signed > :
|
|
706
|
+
public gcc_arm_operations_base
|
|
707
|
+
{
|
|
708
|
+
typedef typename make_storage_type< 2u >::type storage_type;
|
|
709
|
+
typedef typename make_storage_type< 2u >::aligned aligned_storage_type;
|
|
710
|
+
typedef typename make_storage_type< 4u >::type extended_storage_type;
|
|
711
|
+
|
|
712
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u;
|
|
713
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
714
|
+
|
|
715
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
716
|
+
{
|
|
717
|
+
fence_before(order);
|
|
718
|
+
storage = v;
|
|
719
|
+
fence_after_store(order);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
723
|
+
{
|
|
724
|
+
storage_type v = storage;
|
|
725
|
+
fence_after(order);
|
|
726
|
+
return v;
|
|
727
|
+
}
|
|
728
|
+
|
|
729
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
730
|
+
{
|
|
731
|
+
extended_storage_type original;
|
|
732
|
+
fence_before(order);
|
|
733
|
+
uint32_t tmp;
|
|
734
|
+
__asm__ __volatile__
|
|
735
|
+
(
|
|
736
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
737
|
+
"1:\n"
|
|
738
|
+
"ldrexh %[original], %[storage]\n" // load the original value and zero-extend to 32 bits
|
|
739
|
+
"strexh %[tmp], %[value], %[storage]\n" // store the replacement, tmp = store failed
|
|
740
|
+
"teq %[tmp], #0\n" // check if store succeeded
|
|
741
|
+
"bne 1b\n"
|
|
742
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
743
|
+
: [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)
|
|
744
|
+
: [value] "r" (v)
|
|
745
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
746
|
+
);
|
|
747
|
+
fence_after(order);
|
|
748
|
+
return static_cast< storage_type >(original);
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
752
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
753
|
+
{
|
|
754
|
+
fence_before(success_order);
|
|
755
|
+
uint32_t success;
|
|
756
|
+
uint32_t tmp;
|
|
757
|
+
extended_storage_type original;
|
|
758
|
+
__asm__ __volatile__
|
|
759
|
+
(
|
|
760
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
761
|
+
"mov %[success], #0\n" // success = 0
|
|
762
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
763
|
+
"cmp %[original], %[expected]\n" // flags = original==expected
|
|
764
|
+
"itt eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
|
|
765
|
+
"strexheq %[success], %[desired], %[storage]\n" // if (flags.equal) *(&storage) = desired, success = store failed
|
|
766
|
+
"eoreq %[success], %[success], #1\n" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
|
|
767
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
768
|
+
: [original] "=&r" (original), // %0
|
|
769
|
+
[success] "=&r" (success), // %1
|
|
770
|
+
[tmp] "=&l" (tmp), // %2
|
|
771
|
+
[storage] "+Q" (storage) // %3
|
|
772
|
+
: [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
|
|
773
|
+
[desired] "r" (desired) // %5
|
|
774
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
775
|
+
);
|
|
776
|
+
if (success)
|
|
777
|
+
fence_after(success_order);
|
|
778
|
+
else
|
|
779
|
+
fence_after(failure_order);
|
|
780
|
+
expected = static_cast< storage_type >(original);
|
|
781
|
+
return !!success;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
785
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
786
|
+
{
|
|
787
|
+
fence_before(success_order);
|
|
788
|
+
uint32_t success;
|
|
789
|
+
uint32_t tmp;
|
|
790
|
+
extended_storage_type original;
|
|
791
|
+
__asm__ __volatile__
|
|
792
|
+
(
|
|
793
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
794
|
+
"mov %[success], #0\n" // success = 0
|
|
795
|
+
"1:\n"
|
|
796
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
797
|
+
"cmp %[original], %[expected]\n" // flags = original==expected
|
|
798
|
+
"bne 2f\n" // if (!flags.equal) goto end
|
|
799
|
+
"strexh %[success], %[desired], %[storage]\n" // *(&storage) = desired, success = store failed
|
|
800
|
+
"eors %[success], %[success], #1\n" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
|
|
801
|
+
"beq 1b\n" // if (flags.equal) goto retry
|
|
802
|
+
"2:\n"
|
|
803
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
804
|
+
: [original] "=&r" (original), // %0
|
|
805
|
+
[success] "=&r" (success), // %1
|
|
806
|
+
[tmp] "=&l" (tmp), // %2
|
|
807
|
+
[storage] "+Q" (storage) // %3
|
|
808
|
+
: [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
|
|
809
|
+
[desired] "r" (desired) // %5
|
|
810
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
811
|
+
);
|
|
812
|
+
if (success)
|
|
813
|
+
fence_after(success_order);
|
|
814
|
+
else
|
|
815
|
+
fence_after(failure_order);
|
|
816
|
+
expected = static_cast< storage_type >(original);
|
|
817
|
+
return !!success;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
821
|
+
{
|
|
822
|
+
fence_before(order);
|
|
823
|
+
uint32_t tmp;
|
|
824
|
+
extended_storage_type original, result;
|
|
825
|
+
__asm__ __volatile__
|
|
826
|
+
(
|
|
827
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
828
|
+
"1:\n"
|
|
829
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
830
|
+
"add %[result], %[original], %[value]\n" // result = original + value
|
|
831
|
+
"strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
832
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
833
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
834
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
835
|
+
: [original] "=&r" (original), // %0
|
|
836
|
+
[result] "=&r" (result), // %1
|
|
837
|
+
[tmp] "=&l" (tmp), // %2
|
|
838
|
+
[storage] "+Q" (storage) // %3
|
|
839
|
+
: [value] "Ir" (v) // %4
|
|
840
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
841
|
+
);
|
|
842
|
+
fence_after(order);
|
|
843
|
+
return static_cast< storage_type >(original);
|
|
844
|
+
}
|
|
845
|
+
|
|
846
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
847
|
+
{
|
|
848
|
+
fence_before(order);
|
|
849
|
+
uint32_t tmp;
|
|
850
|
+
extended_storage_type original, result;
|
|
851
|
+
__asm__ __volatile__
|
|
852
|
+
(
|
|
853
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
854
|
+
"1:\n"
|
|
855
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
856
|
+
"sub %[result], %[original], %[value]\n" // result = original - value
|
|
857
|
+
"strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
858
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
859
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
860
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
861
|
+
: [original] "=&r" (original), // %0
|
|
862
|
+
[result] "=&r" (result), // %1
|
|
863
|
+
[tmp] "=&l" (tmp), // %2
|
|
864
|
+
[storage] "+Q" (storage) // %3
|
|
865
|
+
: [value] "Ir" (v) // %4
|
|
866
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
867
|
+
);
|
|
868
|
+
fence_after(order);
|
|
869
|
+
return static_cast< storage_type >(original);
|
|
870
|
+
}
|
|
871
|
+
|
|
872
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
873
|
+
{
|
|
874
|
+
fence_before(order);
|
|
875
|
+
uint32_t tmp;
|
|
876
|
+
extended_storage_type original, result;
|
|
877
|
+
__asm__ __volatile__
|
|
878
|
+
(
|
|
879
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
880
|
+
"1:\n"
|
|
881
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
882
|
+
"and %[result], %[original], %[value]\n" // result = original & value
|
|
883
|
+
"strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
884
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
885
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
886
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
887
|
+
: [original] "=&r" (original), // %0
|
|
888
|
+
[result] "=&r" (result), // %1
|
|
889
|
+
[tmp] "=&l" (tmp), // %2
|
|
890
|
+
[storage] "+Q" (storage) // %3
|
|
891
|
+
: [value] "Ir" (v) // %4
|
|
892
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
893
|
+
);
|
|
894
|
+
fence_after(order);
|
|
895
|
+
return static_cast< storage_type >(original);
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
899
|
+
{
|
|
900
|
+
fence_before(order);
|
|
901
|
+
uint32_t tmp;
|
|
902
|
+
extended_storage_type original, result;
|
|
903
|
+
__asm__ __volatile__
|
|
904
|
+
(
|
|
905
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
906
|
+
"1:\n"
|
|
907
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
908
|
+
"orr %[result], %[original], %[value]\n" // result = original | value
|
|
909
|
+
"strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
910
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
911
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
912
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
913
|
+
: [original] "=&r" (original), // %0
|
|
914
|
+
[result] "=&r" (result), // %1
|
|
915
|
+
[tmp] "=&l" (tmp), // %2
|
|
916
|
+
[storage] "+Q" (storage) // %3
|
|
917
|
+
: [value] "Ir" (v) // %4
|
|
918
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
919
|
+
);
|
|
920
|
+
fence_after(order);
|
|
921
|
+
return static_cast< storage_type >(original);
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
925
|
+
{
|
|
926
|
+
fence_before(order);
|
|
927
|
+
uint32_t tmp;
|
|
928
|
+
extended_storage_type original, result;
|
|
929
|
+
__asm__ __volatile__
|
|
930
|
+
(
|
|
931
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
|
|
932
|
+
"1:\n"
|
|
933
|
+
"ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
|
|
934
|
+
"eor %[result], %[original], %[value]\n" // result = original ^ value
|
|
935
|
+
"strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
|
|
936
|
+
"teq %[tmp], #0\n" // flags = tmp==0
|
|
937
|
+
"bne 1b\n" // if (!flags.equal) goto retry
|
|
938
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
|
|
939
|
+
: [original] "=&r" (original), // %0
|
|
940
|
+
[result] "=&r" (result), // %1
|
|
941
|
+
[tmp] "=&l" (tmp), // %2
|
|
942
|
+
[storage] "+Q" (storage) // %3
|
|
943
|
+
: [value] "Ir" (v) // %4
|
|
944
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
945
|
+
);
|
|
946
|
+
fence_after(order);
|
|
947
|
+
return static_cast< storage_type >(original);
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
951
|
+
{
|
|
952
|
+
return !!exchange(storage, (storage_type)1, order);
|
|
953
|
+
}
|
|
954
|
+
|
|
955
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
956
|
+
{
|
|
957
|
+
store(storage, 0, order);
|
|
958
|
+
}
|
|
959
|
+
};
|
|
960
|
+
|
|
961
|
+
#else // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH)
|
|
539
962
|
|
|
540
963
|
template< >
|
|
541
964
|
struct operations< 2u, false > :
|
|
@@ -564,7 +987,7 @@ struct operations< 2u, false > :
|
|
|
564
987
|
[result] "=&r" (result), // %1
|
|
565
988
|
[tmp] "=&l" (tmp), // %2
|
|
566
989
|
[storage] "+Q" (storage) // %3
|
|
567
|
-
: [value] "
|
|
990
|
+
: [value] "Ir" (v) // %4
|
|
568
991
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
569
992
|
);
|
|
570
993
|
fence_after(order);
|
|
@@ -591,7 +1014,7 @@ struct operations< 2u, false > :
|
|
|
591
1014
|
[result] "=&r" (result), // %1
|
|
592
1015
|
[tmp] "=&l" (tmp), // %2
|
|
593
1016
|
[storage] "+Q" (storage) // %3
|
|
594
|
-
: [value] "
|
|
1017
|
+
: [value] "Ir" (v) // %4
|
|
595
1018
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
596
1019
|
);
|
|
597
1020
|
fence_after(order);
|
|
@@ -626,7 +1049,7 @@ struct operations< 2u, true > :
|
|
|
626
1049
|
[result] "=&r" (result), // %1
|
|
627
1050
|
[tmp] "=&l" (tmp), // %2
|
|
628
1051
|
[storage] "+Q" (storage) // %3
|
|
629
|
-
: [value] "
|
|
1052
|
+
: [value] "Ir" (v) // %4
|
|
630
1053
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
631
1054
|
);
|
|
632
1055
|
fence_after(order);
|
|
@@ -653,7 +1076,7 @@ struct operations< 2u, true > :
|
|
|
653
1076
|
[result] "=&r" (result), // %1
|
|
654
1077
|
[tmp] "=&l" (tmp), // %2
|
|
655
1078
|
[storage] "+Q" (storage) // %3
|
|
656
|
-
: [value] "
|
|
1079
|
+
: [value] "Ir" (v) // %4
|
|
657
1080
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
658
1081
|
);
|
|
659
1082
|
fence_after(order);
|
|
@@ -661,6 +1084,7 @@ struct operations< 2u, true > :
|
|
|
661
1084
|
}
|
|
662
1085
|
};
|
|
663
1086
|
|
|
1087
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH)
|
|
664
1088
|
|
|
665
1089
|
#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD)
|
|
666
1090
|
|
|
@@ -679,8 +1103,11 @@ template< bool Signed >
|
|
|
679
1103
|
struct operations< 8u, Signed > :
|
|
680
1104
|
public gcc_arm_operations_base
|
|
681
1105
|
{
|
|
682
|
-
typedef typename make_storage_type< 8u
|
|
683
|
-
typedef typename make_storage_type< 8u
|
|
1106
|
+
typedef typename make_storage_type< 8u >::type storage_type;
|
|
1107
|
+
typedef typename make_storage_type< 8u >::aligned aligned_storage_type;
|
|
1108
|
+
|
|
1109
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
|
|
1110
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
684
1111
|
|
|
685
1112
|
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
686
1113
|
{
|
|
@@ -946,11 +1373,6 @@ struct operations< 8u, Signed > :
|
|
|
946
1373
|
{
|
|
947
1374
|
store(storage, 0, order);
|
|
948
1375
|
}
|
|
949
|
-
|
|
950
|
-
static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT
|
|
951
|
-
{
|
|
952
|
-
return true;
|
|
953
|
-
}
|
|
954
1376
|
};
|
|
955
1377
|
|
|
956
1378
|
#endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD)
|