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,134 @@
|
|
|
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) 2009 Helge Bahmann
|
|
7
|
+
* Copyright (c) 2013 Tim Blechmann
|
|
8
|
+
* Copyright (c) 2014 Andrey Semashev
|
|
9
|
+
*/
|
|
10
|
+
/*!
|
|
11
|
+
* \file atomic/detail/ops_gcc_arm_common.hpp
|
|
12
|
+
*
|
|
13
|
+
* This header contains basic utilities for gcc ARM backend.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_COMMON_HPP_INCLUDED_
|
|
17
|
+
#define BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_COMMON_HPP_INCLUDED_
|
|
18
|
+
|
|
19
|
+
#include <boost/cstdint.hpp>
|
|
20
|
+
#include <boost/memory_order.hpp>
|
|
21
|
+
#include <boost/atomic/detail/config.hpp>
|
|
22
|
+
|
|
23
|
+
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
24
|
+
#pragma once
|
|
25
|
+
#endif
|
|
26
|
+
|
|
27
|
+
namespace boost {
|
|
28
|
+
namespace atomics {
|
|
29
|
+
namespace detail {
|
|
30
|
+
|
|
31
|
+
// A memory barrier is effected using a "co-processor 15" instruction,
|
|
32
|
+
// though a separate assembler mnemonic is available for it in v7.
|
|
33
|
+
//
|
|
34
|
+
// "Thumb 1" is a subset of the ARM instruction set that uses a 16-bit encoding. It
|
|
35
|
+
// doesn't include all instructions and in particular it doesn't include the co-processor
|
|
36
|
+
// instruction used for the memory barrier or the load-locked/store-conditional
|
|
37
|
+
// instructions. So, if we're compiling in "Thumb 1" mode, we need to wrap all of our
|
|
38
|
+
// asm blocks with code to temporarily change to ARM mode.
|
|
39
|
+
//
|
|
40
|
+
// You can only change between ARM and Thumb modes when branching using the bx instruction.
|
|
41
|
+
// bx takes an address specified in a register. The least significant bit of the address
|
|
42
|
+
// indicates the mode, so 1 is added to indicate that the destination code is Thumb.
|
|
43
|
+
// A temporary register is needed for the address and is passed as an argument to these
|
|
44
|
+
// macros. It must be one of the "low" registers accessible to Thumb code, specified
|
|
45
|
+
// using the "l" attribute in the asm statement.
|
|
46
|
+
//
|
|
47
|
+
// Architecture v7 introduces "Thumb 2", which does include (almost?) all of the ARM
|
|
48
|
+
// instruction set. (Actually, there was an extension of v6 called v6T2 which supported
|
|
49
|
+
// "Thumb 2" mode, but its architecture manual is no longer available, referring to v7.)
|
|
50
|
+
// So in v7 we don't need to change to ARM mode; we can write "universal
|
|
51
|
+
// assembler" which will assemble to Thumb 2 or ARM code as appropriate. The only thing
|
|
52
|
+
// we need to do to make this "universal" assembler mode work is to insert "IT" instructions
|
|
53
|
+
// to annotate the conditional instructions. These are ignored in other modes (e.g. v6),
|
|
54
|
+
// so they can always be present.
|
|
55
|
+
|
|
56
|
+
// A note about memory_order_consume. Technically, this architecture allows to avoid
|
|
57
|
+
// unnecessary memory barrier after consume load since it supports data dependency ordering.
|
|
58
|
+
// However, some compiler optimizations may break a seemingly valid code relying on data
|
|
59
|
+
// dependency tracking by injecting bogus branches to aid out of order execution.
|
|
60
|
+
// This may happen not only in Boost.Atomic code but also in user's code, which we have no
|
|
61
|
+
// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php.
|
|
62
|
+
// For this reason we promote memory_order_consume to memory_order_acquire.
|
|
63
|
+
|
|
64
|
+
#if defined(__thumb__) && !defined(__thumb2__)
|
|
65
|
+
#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG) "adr " #TMPREG ", 8f\n" "bx " #TMPREG "\n" ".arm\n" ".align 4\n" "8:\n"
|
|
66
|
+
#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG) "adr " #TMPREG ", 9f + 1\n" "bx " #TMPREG "\n" ".thumb\n" ".align 2\n" "9:\n"
|
|
67
|
+
#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&l" (var)
|
|
68
|
+
#else
|
|
69
|
+
// The tmpreg may be wasted in this case, which is non-optimal.
|
|
70
|
+
#define BOOST_ATOMIC_DETAIL_ARM_ASM_START(TMPREG)
|
|
71
|
+
#define BOOST_ATOMIC_DETAIL_ARM_ASM_END(TMPREG)
|
|
72
|
+
#define BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(var) "=&r" (var)
|
|
73
|
+
#endif
|
|
74
|
+
|
|
75
|
+
struct gcc_arm_operations_base
|
|
76
|
+
{
|
|
77
|
+
static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false;
|
|
78
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
|
|
79
|
+
|
|
80
|
+
static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT
|
|
81
|
+
{
|
|
82
|
+
if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
|
|
83
|
+
hardware_full_fence();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT
|
|
87
|
+
{
|
|
88
|
+
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
89
|
+
hardware_full_fence();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static BOOST_FORCEINLINE void fence_after_store(memory_order order) BOOST_NOEXCEPT
|
|
93
|
+
{
|
|
94
|
+
if (order == memory_order_seq_cst)
|
|
95
|
+
hardware_full_fence();
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
static BOOST_FORCEINLINE void hardware_full_fence() BOOST_NOEXCEPT
|
|
99
|
+
{
|
|
100
|
+
#if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_DMB)
|
|
101
|
+
// Older binutils (supposedly, older than 2.21.1) didn't support symbolic or numeric arguments of the "dmb" instruction such as "ish" or "#11".
|
|
102
|
+
// 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.
|
|
103
|
+
// Since we cannot detect binutils version at compile time, we'll have to always use this hack.
|
|
104
|
+
__asm__ __volatile__
|
|
105
|
+
(
|
|
106
|
+
#if defined(__thumb2__)
|
|
107
|
+
".short 0xF3BF, 0x8F5B\n" // dmb ish
|
|
108
|
+
#else
|
|
109
|
+
".word 0xF57FF05B\n" // dmb ish
|
|
110
|
+
#endif
|
|
111
|
+
:
|
|
112
|
+
:
|
|
113
|
+
: "memory"
|
|
114
|
+
);
|
|
115
|
+
#else
|
|
116
|
+
uint32_t tmp;
|
|
117
|
+
__asm__ __volatile__
|
|
118
|
+
(
|
|
119
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
|
|
120
|
+
"mcr\tp15, 0, r0, c7, c10, 5\n"
|
|
121
|
+
BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
|
|
122
|
+
: "=&l" (tmp)
|
|
123
|
+
:
|
|
124
|
+
: "memory"
|
|
125
|
+
);
|
|
126
|
+
#endif
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
} // namespace detail
|
|
131
|
+
} // namespace atomics
|
|
132
|
+
} // namespace boost
|
|
133
|
+
|
|
134
|
+
#endif // BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_COMMON_HPP_INCLUDED_
|
|
@@ -14,12 +14,13 @@
|
|
|
14
14
|
#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ATOMIC_HPP_INCLUDED_
|
|
15
15
|
#define BOOST_ATOMIC_DETAIL_OPS_GCC_ATOMIC_HPP_INCLUDED_
|
|
16
16
|
|
|
17
|
+
#include <cstddef>
|
|
17
18
|
#include <boost/memory_order.hpp>
|
|
18
19
|
#include <boost/atomic/detail/config.hpp>
|
|
19
20
|
#include <boost/atomic/detail/storage_type.hpp>
|
|
20
21
|
#include <boost/atomic/detail/operations_fwd.hpp>
|
|
21
22
|
#include <boost/atomic/capabilities.hpp>
|
|
22
|
-
#if defined(__clang__) && (defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B))
|
|
23
|
+
#if (defined(__clang__) || (defined(BOOST_GCC) && (BOOST_GCC+0) >= 70000)) && (defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG8B) || defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B))
|
|
23
24
|
#include <boost/atomic/detail/ops_gcc_x86_dcas.hpp>
|
|
24
25
|
#include <boost/atomic/detail/ops_cas_based.hpp>
|
|
25
26
|
#endif
|
|
@@ -53,10 +54,10 @@ namespace detail {
|
|
|
53
54
|
* The function converts \c boost::memory_order values to the compiler-specific constants.
|
|
54
55
|
*
|
|
55
56
|
* NOTE: The intention is that the function is optimized away by the compiler, and the
|
|
56
|
-
* compiler-specific constants are passed to the intrinsics.
|
|
57
|
+
* compiler-specific constants are passed to the intrinsics. Unfortunately, constexpr doesn't
|
|
57
58
|
* work in this case because the standard atomics interface require memory ordering
|
|
58
59
|
* constants to be passed as function arguments, at which point they stop being constexpr.
|
|
59
|
-
* However it is crucial that the compiler sees constants and not runtime values,
|
|
60
|
+
* However, it is crucial that the compiler sees constants and not runtime values,
|
|
60
61
|
* because otherwise it just ignores the ordering value and always uses seq_cst.
|
|
61
62
|
* This is the case with Intel C++ Compiler 14.0.3 (Composer XE 2013 SP1, update 3) and
|
|
62
63
|
* gcc 4.8.2. Intel Compiler issues a warning in this case:
|
|
@@ -70,8 +71,8 @@ namespace detail {
|
|
|
70
71
|
* all functions are called with constant orderings and call intrinstcts properly.
|
|
71
72
|
*
|
|
72
73
|
* Unfortunately, this still doesn't work in debug mode as the compiler doesn't
|
|
73
|
-
*
|
|
74
|
-
* operaions will be executed with seq_cst semantics.
|
|
74
|
+
* propagate constants even when functions are marked with BOOST_FORCEINLINE. In this case
|
|
75
|
+
* all atomic operaions will be executed with seq_cst semantics.
|
|
75
76
|
*/
|
|
76
77
|
BOOST_FORCEINLINE BOOST_CONSTEXPR int convert_memory_order_to_gcc(memory_order order) BOOST_NOEXCEPT
|
|
77
78
|
{
|
|
@@ -80,12 +81,17 @@ BOOST_FORCEINLINE BOOST_CONSTEXPR int convert_memory_order_to_gcc(memory_order o
|
|
|
80
81
|
(order == memory_order_acq_rel ? __ATOMIC_ACQ_REL : __ATOMIC_SEQ_CST)))));
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
template<
|
|
84
|
+
template< std::size_t Size, bool Signed >
|
|
84
85
|
struct gcc_atomic_operations
|
|
85
86
|
{
|
|
86
|
-
typedef
|
|
87
|
+
typedef typename make_storage_type< Size >::type storage_type;
|
|
88
|
+
typedef typename make_storage_type< Size >::aligned aligned_storage_type;
|
|
87
89
|
|
|
88
|
-
|
|
90
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = Size;
|
|
91
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
92
|
+
static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false;
|
|
93
|
+
|
|
94
|
+
// Note: In the current implementation, gcc_atomic_operations are used only when the particularly sized __atomic
|
|
89
95
|
// intrinsics are always lock-free (i.e. the corresponding LOCK_FREE macro is 2). Therefore it is safe to
|
|
90
96
|
// always set is_always_lock_free to true here.
|
|
91
97
|
static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
|
|
@@ -161,31 +167,29 @@ struct gcc_atomic_operations
|
|
|
161
167
|
{
|
|
162
168
|
__atomic_clear(const_cast< storage_type* >(&storage), atomics::detail::convert_memory_order_to_gcc(order));
|
|
163
169
|
}
|
|
164
|
-
|
|
165
|
-
static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile& storage) BOOST_NOEXCEPT
|
|
166
|
-
{
|
|
167
|
-
return __atomic_is_lock_free(sizeof(storage_type), &storage);
|
|
168
|
-
}
|
|
169
170
|
};
|
|
170
171
|
|
|
171
172
|
#if BOOST_ATOMIC_INT128_LOCK_FREE > 0
|
|
172
|
-
#if defined(__clang__) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B)
|
|
173
|
+
#if (defined(__clang__) || (defined(BOOST_GCC) && (BOOST_GCC+0) >= 70000)) && defined(BOOST_ATOMIC_DETAIL_X86_HAS_CMPXCHG16B)
|
|
173
174
|
|
|
174
175
|
// Workaround for clang bug: http://llvm.org/bugs/show_bug.cgi?id=19149
|
|
175
176
|
// Clang 3.4 does not implement 128-bit __atomic* intrinsics even though it defines __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16
|
|
177
|
+
// A similar problem exists with gcc 7 as well, as it requires to link with libatomic to use 16-byte intrinsics:
|
|
178
|
+
// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80878
|
|
176
179
|
template< bool Signed >
|
|
177
180
|
struct operations< 16u, Signed > :
|
|
178
181
|
public cas_based_operations< gcc_dcas_x86_64< Signed > >
|
|
179
182
|
{
|
|
183
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 16u;
|
|
184
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
180
185
|
};
|
|
181
186
|
|
|
182
187
|
#else
|
|
183
188
|
|
|
184
189
|
template< bool Signed >
|
|
185
190
|
struct operations< 16u, Signed > :
|
|
186
|
-
public gcc_atomic_operations<
|
|
191
|
+
public gcc_atomic_operations< 16u, Signed >
|
|
187
192
|
{
|
|
188
|
-
typedef typename make_storage_type< 16u, Signed >::aligned aligned_storage_type;
|
|
189
193
|
};
|
|
190
194
|
|
|
191
195
|
#endif
|
|
@@ -200,6 +204,8 @@ template< bool Signed >
|
|
|
200
204
|
struct operations< 8u, Signed > :
|
|
201
205
|
public cas_based_operations< gcc_dcas_x86< Signed > >
|
|
202
206
|
{
|
|
207
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
|
|
208
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
203
209
|
};
|
|
204
210
|
|
|
205
211
|
#elif (BOOST_ATOMIC_DETAIL_SIZEOF_LLONG == 8 && __GCC_ATOMIC_LLONG_LOCK_FREE != BOOST_ATOMIC_LLONG_LOCK_FREE) ||\
|
|
@@ -212,18 +218,16 @@ struct operations< 8u, Signed > :
|
|
|
212
218
|
|
|
213
219
|
template< bool Signed >
|
|
214
220
|
struct operations< 8u, Signed > :
|
|
215
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
221
|
+
public extending_cas_based_operations< gcc_atomic_operations< 16u, Signed >, 8u, Signed >
|
|
216
222
|
{
|
|
217
|
-
typedef typename make_storage_type< 16u, Signed >::aligned aligned_storage_type;
|
|
218
223
|
};
|
|
219
224
|
|
|
220
225
|
#else
|
|
221
226
|
|
|
222
227
|
template< bool Signed >
|
|
223
228
|
struct operations< 8u, Signed > :
|
|
224
|
-
public gcc_atomic_operations<
|
|
229
|
+
public gcc_atomic_operations< 8u, Signed >
|
|
225
230
|
{
|
|
226
|
-
typedef typename make_storage_type< 8u, Signed >::aligned aligned_storage_type;
|
|
227
231
|
};
|
|
228
232
|
|
|
229
233
|
#endif
|
|
@@ -242,18 +246,16 @@ struct operations< 8u, Signed > :
|
|
|
242
246
|
|
|
243
247
|
template< bool Signed >
|
|
244
248
|
struct operations< 4u, Signed > :
|
|
245
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
249
|
+
public extending_cas_based_operations< gcc_atomic_operations< 8u, Signed >, 4u, Signed >
|
|
246
250
|
{
|
|
247
|
-
typedef typename make_storage_type< 8u, Signed >::aligned aligned_storage_type;
|
|
248
251
|
};
|
|
249
252
|
|
|
250
253
|
#else // !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED)
|
|
251
254
|
|
|
252
255
|
template< bool Signed >
|
|
253
256
|
struct operations< 4u, Signed > :
|
|
254
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
257
|
+
public extending_cas_based_operations< gcc_atomic_operations< 16u, Signed >, 4u, Signed >
|
|
255
258
|
{
|
|
256
|
-
typedef typename make_storage_type< 16u, Signed >::aligned aligned_storage_type;
|
|
257
259
|
};
|
|
258
260
|
|
|
259
261
|
#endif // !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED)
|
|
@@ -262,9 +264,8 @@ struct operations< 4u, Signed > :
|
|
|
262
264
|
|
|
263
265
|
template< bool Signed >
|
|
264
266
|
struct operations< 4u, Signed > :
|
|
265
|
-
public gcc_atomic_operations<
|
|
267
|
+
public gcc_atomic_operations< 4u, Signed >
|
|
266
268
|
{
|
|
267
|
-
typedef typename make_storage_type< 4u, Signed >::aligned aligned_storage_type;
|
|
268
269
|
};
|
|
269
270
|
|
|
270
271
|
#endif
|
|
@@ -283,27 +284,24 @@ struct operations< 4u, Signed > :
|
|
|
283
284
|
|
|
284
285
|
template< bool Signed >
|
|
285
286
|
struct operations< 2u, Signed > :
|
|
286
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
287
|
+
public extending_cas_based_operations< gcc_atomic_operations< 4u, Signed >, 2u, Signed >
|
|
287
288
|
{
|
|
288
|
-
typedef typename make_storage_type< 4u, Signed >::aligned aligned_storage_type;
|
|
289
289
|
};
|
|
290
290
|
|
|
291
291
|
#elif !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED)
|
|
292
292
|
|
|
293
293
|
template< bool Signed >
|
|
294
294
|
struct operations< 2u, Signed > :
|
|
295
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
295
|
+
public extending_cas_based_operations< gcc_atomic_operations< 8u, Signed >, 2u, Signed >
|
|
296
296
|
{
|
|
297
|
-
typedef typename make_storage_type< 8u, Signed >::aligned aligned_storage_type;
|
|
298
297
|
};
|
|
299
298
|
|
|
300
299
|
#else
|
|
301
300
|
|
|
302
301
|
template< bool Signed >
|
|
303
302
|
struct operations< 2u, Signed > :
|
|
304
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
303
|
+
public extending_cas_based_operations< gcc_atomic_operations< 16u, Signed >, 2u, Signed >
|
|
305
304
|
{
|
|
306
|
-
typedef typename make_storage_type< 16u, Signed >::aligned aligned_storage_type;
|
|
307
305
|
};
|
|
308
306
|
|
|
309
307
|
#endif
|
|
@@ -312,9 +310,8 @@ struct operations< 2u, Signed > :
|
|
|
312
310
|
|
|
313
311
|
template< bool Signed >
|
|
314
312
|
struct operations< 2u, Signed > :
|
|
315
|
-
public gcc_atomic_operations<
|
|
313
|
+
public gcc_atomic_operations< 2u, Signed >
|
|
316
314
|
{
|
|
317
|
-
typedef typename make_storage_type< 2u, Signed >::aligned aligned_storage_type;
|
|
318
315
|
};
|
|
319
316
|
|
|
320
317
|
#endif
|
|
@@ -333,36 +330,32 @@ struct operations< 2u, Signed > :
|
|
|
333
330
|
|
|
334
331
|
template< bool Signed >
|
|
335
332
|
struct operations< 1u, Signed > :
|
|
336
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
333
|
+
public extending_cas_based_operations< gcc_atomic_operations< 2u, Signed >, 1u, Signed >
|
|
337
334
|
{
|
|
338
|
-
typedef typename make_storage_type< 2u, Signed >::aligned aligned_storage_type;
|
|
339
335
|
};
|
|
340
336
|
|
|
341
337
|
#elif !defined(BOOST_ATOMIC_DETAIL_INT32_EXTENDED)
|
|
342
338
|
|
|
343
339
|
template< bool Signed >
|
|
344
340
|
struct operations< 1u, Signed > :
|
|
345
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
341
|
+
public extending_cas_based_operations< gcc_atomic_operations< 4u, Signed >, 1u, Signed >
|
|
346
342
|
{
|
|
347
|
-
typedef typename make_storage_type< 4u, Signed >::aligned aligned_storage_type;
|
|
348
343
|
};
|
|
349
344
|
|
|
350
345
|
#elif !defined(BOOST_ATOMIC_DETAIL_INT64_EXTENDED)
|
|
351
346
|
|
|
352
347
|
template< bool Signed >
|
|
353
348
|
struct operations< 1u, Signed > :
|
|
354
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
349
|
+
public extending_cas_based_operations< gcc_atomic_operations< 8u, Signed >, 1u, Signed >
|
|
355
350
|
{
|
|
356
|
-
typedef typename make_storage_type< 8u, Signed >::aligned aligned_storage_type;
|
|
357
351
|
};
|
|
358
352
|
|
|
359
353
|
#else
|
|
360
354
|
|
|
361
355
|
template< bool Signed >
|
|
362
356
|
struct operations< 1u, Signed > :
|
|
363
|
-
public extending_cas_based_operations< gcc_atomic_operations<
|
|
357
|
+
public extending_cas_based_operations< gcc_atomic_operations< 16u, Signed >, 1u, Signed >
|
|
364
358
|
{
|
|
365
|
-
typedef typename make_storage_type< 16u, Signed >::aligned aligned_storage_type;
|
|
366
359
|
};
|
|
367
360
|
|
|
368
361
|
#endif
|
|
@@ -371,9 +364,8 @@ struct operations< 1u, Signed > :
|
|
|
371
364
|
|
|
372
365
|
template< bool Signed >
|
|
373
366
|
struct operations< 1u, Signed > :
|
|
374
|
-
public gcc_atomic_operations<
|
|
367
|
+
public gcc_atomic_operations< 1u, Signed >
|
|
375
368
|
{
|
|
376
|
-
typedef typename make_storage_type< 1u, Signed >::aligned aligned_storage_type;
|
|
377
369
|
};
|
|
378
370
|
|
|
379
371
|
#endif
|
|
@@ -16,10 +16,12 @@
|
|
|
16
16
|
#ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_HPP_INCLUDED_
|
|
17
17
|
#define BOOST_ATOMIC_DETAIL_OPS_GCC_PPC_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>
|
|
22
23
|
#include <boost/atomic/detail/operations_fwd.hpp>
|
|
24
|
+
#include <boost/atomic/detail/ops_gcc_ppc_common.hpp>
|
|
23
25
|
#include <boost/atomic/capabilities.hpp>
|
|
24
26
|
|
|
25
27
|
#ifdef BOOST_HAS_PRAGMA_ONCE
|
|
@@ -57,7 +59,9 @@ namespace detail {
|
|
|
57
59
|
cycles, while "sync" hast a cost of about 50 clock cycles, the small
|
|
58
60
|
penalty to atomic loads more than compensates for this.
|
|
59
61
|
|
|
60
|
-
Byte- and halfword-sized atomic values are
|
|
62
|
+
Byte- and halfword-sized atomic values are implemented in two ways.
|
|
63
|
+
When 8 and 16-bit instructions are available (in Power8 and later),
|
|
64
|
+
they are used. Otherwise operations are realized by encoding the
|
|
61
65
|
value to be represented into a word, performing sign/zero extension
|
|
62
66
|
as appropriate. This means that after add/sub operations the value
|
|
63
67
|
needs fixing up to accurately preserve the wrap-around semantic of
|
|
@@ -75,45 +79,15 @@ namespace detail {
|
|
|
75
79
|
to pose a problem.
|
|
76
80
|
*/
|
|
77
81
|
|
|
78
|
-
// A note about memory_order_consume. Technically, this architecture allows to avoid
|
|
79
|
-
// unnecessary memory barrier after consume load since it supports data dependency ordering.
|
|
80
|
-
// However, some compiler optimizations may break a seemingly valid code relying on data
|
|
81
|
-
// dependency tracking by injecting bogus branches to aid out of order execution.
|
|
82
|
-
// This may happen not only in Boost.Atomic code but also in user's code, which we have no
|
|
83
|
-
// control of. See this thread: http://lists.boost.org/Archives/boost/2014/06/213890.php.
|
|
84
|
-
// For this reason we promote memory_order_consume to memory_order_acquire.
|
|
85
|
-
|
|
86
|
-
struct gcc_ppc_operations_base
|
|
87
|
-
{
|
|
88
|
-
static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
|
|
89
|
-
|
|
90
|
-
static BOOST_FORCEINLINE void fence_before(memory_order order) BOOST_NOEXCEPT
|
|
91
|
-
{
|
|
92
|
-
#if defined(__powerpc64__) || defined(__PPC64__)
|
|
93
|
-
if (order == memory_order_seq_cst)
|
|
94
|
-
__asm__ __volatile__ ("sync" ::: "memory");
|
|
95
|
-
else if ((order & memory_order_release) != 0)
|
|
96
|
-
__asm__ __volatile__ ("lwsync" ::: "memory");
|
|
97
|
-
#else
|
|
98
|
-
if ((order & memory_order_release) != 0)
|
|
99
|
-
__asm__ __volatile__ ("sync" ::: "memory");
|
|
100
|
-
#endif
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
static BOOST_FORCEINLINE void fence_after(memory_order order) BOOST_NOEXCEPT
|
|
104
|
-
{
|
|
105
|
-
if ((order & (memory_order_consume | memory_order_acquire)) != 0)
|
|
106
|
-
__asm__ __volatile__ ("isync" ::: "memory");
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
|
|
111
82
|
template< bool Signed >
|
|
112
83
|
struct operations< 4u, Signed > :
|
|
113
84
|
public gcc_ppc_operations_base
|
|
114
85
|
{
|
|
115
|
-
typedef typename make_storage_type< 4u
|
|
116
|
-
typedef typename make_storage_type< 4u
|
|
86
|
+
typedef typename make_storage_type< 4u >::type storage_type;
|
|
87
|
+
typedef typename make_storage_type< 4u >::aligned aligned_storage_type;
|
|
88
|
+
|
|
89
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
|
|
90
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
117
91
|
|
|
118
92
|
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
119
93
|
{
|
|
@@ -131,7 +105,7 @@ struct operations< 4u, Signed > :
|
|
|
131
105
|
storage_type v;
|
|
132
106
|
if (order == memory_order_seq_cst)
|
|
133
107
|
__asm__ __volatile__ ("sync" ::: "memory");
|
|
134
|
-
if ((order & (memory_order_consume | memory_order_acquire)) !=
|
|
108
|
+
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
135
109
|
{
|
|
136
110
|
__asm__ __volatile__
|
|
137
111
|
(
|
|
@@ -229,7 +203,7 @@ struct operations< 4u, Signed > :
|
|
|
229
203
|
|
|
230
204
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
231
205
|
{
|
|
232
|
-
storage_type original,
|
|
206
|
+
storage_type original, result;
|
|
233
207
|
fence_before(order);
|
|
234
208
|
__asm__ __volatile__
|
|
235
209
|
(
|
|
@@ -238,7 +212,7 @@ struct operations< 4u, Signed > :
|
|
|
238
212
|
"add %1,%0,%3\n\t"
|
|
239
213
|
"stwcx. %1,%y2\n\t"
|
|
240
214
|
"bne- 1b\n\t"
|
|
241
|
-
: "=&b" (original), "=&b" (
|
|
215
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
242
216
|
: "b" (v)
|
|
243
217
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
244
218
|
);
|
|
@@ -248,7 +222,7 @@ struct operations< 4u, Signed > :
|
|
|
248
222
|
|
|
249
223
|
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
250
224
|
{
|
|
251
|
-
storage_type original,
|
|
225
|
+
storage_type original, result;
|
|
252
226
|
fence_before(order);
|
|
253
227
|
__asm__ __volatile__
|
|
254
228
|
(
|
|
@@ -257,7 +231,7 @@ struct operations< 4u, Signed > :
|
|
|
257
231
|
"sub %1,%0,%3\n\t"
|
|
258
232
|
"stwcx. %1,%y2\n\t"
|
|
259
233
|
"bne- 1b\n\t"
|
|
260
|
-
: "=&b" (original), "=&b" (
|
|
234
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
261
235
|
: "b" (v)
|
|
262
236
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
263
237
|
);
|
|
@@ -267,7 +241,7 @@ struct operations< 4u, Signed > :
|
|
|
267
241
|
|
|
268
242
|
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
269
243
|
{
|
|
270
|
-
storage_type original,
|
|
244
|
+
storage_type original, result;
|
|
271
245
|
fence_before(order);
|
|
272
246
|
__asm__ __volatile__
|
|
273
247
|
(
|
|
@@ -276,7 +250,7 @@ struct operations< 4u, Signed > :
|
|
|
276
250
|
"and %1,%0,%3\n\t"
|
|
277
251
|
"stwcx. %1,%y2\n\t"
|
|
278
252
|
"bne- 1b\n\t"
|
|
279
|
-
: "=&b" (original), "=&b" (
|
|
253
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
280
254
|
: "b" (v)
|
|
281
255
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
282
256
|
);
|
|
@@ -286,7 +260,7 @@ struct operations< 4u, Signed > :
|
|
|
286
260
|
|
|
287
261
|
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
288
262
|
{
|
|
289
|
-
storage_type original,
|
|
263
|
+
storage_type original, result;
|
|
290
264
|
fence_before(order);
|
|
291
265
|
__asm__ __volatile__
|
|
292
266
|
(
|
|
@@ -295,7 +269,7 @@ struct operations< 4u, Signed > :
|
|
|
295
269
|
"or %1,%0,%3\n\t"
|
|
296
270
|
"stwcx. %1,%y2\n\t"
|
|
297
271
|
"bne- 1b\n\t"
|
|
298
|
-
: "=&b" (original), "=&b" (
|
|
272
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
299
273
|
: "b" (v)
|
|
300
274
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
301
275
|
);
|
|
@@ -305,7 +279,7 @@ struct operations< 4u, Signed > :
|
|
|
305
279
|
|
|
306
280
|
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
307
281
|
{
|
|
308
|
-
storage_type original,
|
|
282
|
+
storage_type original, result;
|
|
309
283
|
fence_before(order);
|
|
310
284
|
__asm__ __volatile__
|
|
311
285
|
(
|
|
@@ -314,7 +288,7 @@ struct operations< 4u, Signed > :
|
|
|
314
288
|
"xor %1,%0,%3\n\t"
|
|
315
289
|
"stwcx. %1,%y2\n\t"
|
|
316
290
|
"bne- 1b\n\t"
|
|
317
|
-
: "=&b" (original), "=&b" (
|
|
291
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
318
292
|
: "b" (v)
|
|
319
293
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
320
294
|
);
|
|
@@ -331,13 +305,239 @@ struct operations< 4u, Signed > :
|
|
|
331
305
|
{
|
|
332
306
|
store(storage, 0, order);
|
|
333
307
|
}
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX)
|
|
334
311
|
|
|
335
|
-
|
|
312
|
+
template< bool Signed >
|
|
313
|
+
struct operations< 1u, Signed > :
|
|
314
|
+
public gcc_ppc_operations_base
|
|
315
|
+
{
|
|
316
|
+
typedef typename make_storage_type< 1u >::type storage_type;
|
|
317
|
+
typedef typename make_storage_type< 1u >::aligned aligned_storage_type;
|
|
318
|
+
|
|
319
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u;
|
|
320
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
321
|
+
|
|
322
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
336
323
|
{
|
|
337
|
-
|
|
324
|
+
fence_before(order);
|
|
325
|
+
__asm__ __volatile__
|
|
326
|
+
(
|
|
327
|
+
"stb %1, %0\n\t"
|
|
328
|
+
: "+m" (storage)
|
|
329
|
+
: "r" (v)
|
|
330
|
+
);
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
334
|
+
{
|
|
335
|
+
storage_type v;
|
|
336
|
+
if (order == memory_order_seq_cst)
|
|
337
|
+
__asm__ __volatile__ ("sync" ::: "memory");
|
|
338
|
+
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
339
|
+
{
|
|
340
|
+
__asm__ __volatile__
|
|
341
|
+
(
|
|
342
|
+
"lbz %0, %1\n\t"
|
|
343
|
+
"cmpw %0, %0\n\t"
|
|
344
|
+
"bne- 1f\n\t"
|
|
345
|
+
"1:\n\t"
|
|
346
|
+
"isync\n\t"
|
|
347
|
+
: "=&r" (v)
|
|
348
|
+
: "m" (storage)
|
|
349
|
+
: "cr0", "memory"
|
|
350
|
+
);
|
|
351
|
+
}
|
|
352
|
+
else
|
|
353
|
+
{
|
|
354
|
+
__asm__ __volatile__
|
|
355
|
+
(
|
|
356
|
+
"lbz %0, %1\n\t"
|
|
357
|
+
: "=&r" (v)
|
|
358
|
+
: "m" (storage)
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
return v;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
365
|
+
{
|
|
366
|
+
storage_type original;
|
|
367
|
+
fence_before(order);
|
|
368
|
+
__asm__ __volatile__
|
|
369
|
+
(
|
|
370
|
+
"1:\n\t"
|
|
371
|
+
"lbarx %0,%y1\n\t"
|
|
372
|
+
"stbcx. %2,%y1\n\t"
|
|
373
|
+
"bne- 1b\n\t"
|
|
374
|
+
: "=&b" (original), "+Z" (storage)
|
|
375
|
+
: "b" (v)
|
|
376
|
+
: "cr0"
|
|
377
|
+
);
|
|
378
|
+
fence_after(order);
|
|
379
|
+
return original;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
383
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
384
|
+
{
|
|
385
|
+
int success;
|
|
386
|
+
fence_before(success_order);
|
|
387
|
+
__asm__ __volatile__
|
|
388
|
+
(
|
|
389
|
+
"li %1, 0\n\t"
|
|
390
|
+
"lbarx %0,%y2\n\t"
|
|
391
|
+
"cmpw %0, %3\n\t"
|
|
392
|
+
"bne- 1f\n\t"
|
|
393
|
+
"stbcx. %4,%y2\n\t"
|
|
394
|
+
"bne- 1f\n\t"
|
|
395
|
+
"li %1, 1\n\t"
|
|
396
|
+
"1:\n\t"
|
|
397
|
+
: "=&b" (expected), "=&b" (success), "+Z" (storage)
|
|
398
|
+
: "b" (expected), "b" (desired)
|
|
399
|
+
: "cr0"
|
|
400
|
+
);
|
|
401
|
+
if (success)
|
|
402
|
+
fence_after(success_order);
|
|
403
|
+
else
|
|
404
|
+
fence_after(failure_order);
|
|
405
|
+
return !!success;
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
409
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
410
|
+
{
|
|
411
|
+
int success;
|
|
412
|
+
fence_before(success_order);
|
|
413
|
+
__asm__ __volatile__
|
|
414
|
+
(
|
|
415
|
+
"li %1, 0\n\t"
|
|
416
|
+
"0: lbarx %0,%y2\n\t"
|
|
417
|
+
"cmpw %0, %3\n\t"
|
|
418
|
+
"bne- 1f\n\t"
|
|
419
|
+
"stbcx. %4,%y2\n\t"
|
|
420
|
+
"bne- 0b\n\t"
|
|
421
|
+
"li %1, 1\n\t"
|
|
422
|
+
"1:\n\t"
|
|
423
|
+
: "=&b" (expected), "=&b" (success), "+Z" (storage)
|
|
424
|
+
: "b" (expected), "b" (desired)
|
|
425
|
+
: "cr0"
|
|
426
|
+
);
|
|
427
|
+
if (success)
|
|
428
|
+
fence_after(success_order);
|
|
429
|
+
else
|
|
430
|
+
fence_after(failure_order);
|
|
431
|
+
return !!success;
|
|
432
|
+
}
|
|
433
|
+
|
|
434
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
435
|
+
{
|
|
436
|
+
storage_type original, result;
|
|
437
|
+
fence_before(order);
|
|
438
|
+
__asm__ __volatile__
|
|
439
|
+
(
|
|
440
|
+
"1:\n\t"
|
|
441
|
+
"lbarx %0,%y2\n\t"
|
|
442
|
+
"add %1,%0,%3\n\t"
|
|
443
|
+
"stbcx. %1,%y2\n\t"
|
|
444
|
+
"bne- 1b\n\t"
|
|
445
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
446
|
+
: "b" (v)
|
|
447
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
448
|
+
);
|
|
449
|
+
fence_after(order);
|
|
450
|
+
return original;
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
454
|
+
{
|
|
455
|
+
storage_type original, result;
|
|
456
|
+
fence_before(order);
|
|
457
|
+
__asm__ __volatile__
|
|
458
|
+
(
|
|
459
|
+
"1:\n\t"
|
|
460
|
+
"lbarx %0,%y2\n\t"
|
|
461
|
+
"sub %1,%0,%3\n\t"
|
|
462
|
+
"stbcx. %1,%y2\n\t"
|
|
463
|
+
"bne- 1b\n\t"
|
|
464
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
465
|
+
: "b" (v)
|
|
466
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
467
|
+
);
|
|
468
|
+
fence_after(order);
|
|
469
|
+
return original;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
473
|
+
{
|
|
474
|
+
storage_type original, result;
|
|
475
|
+
fence_before(order);
|
|
476
|
+
__asm__ __volatile__
|
|
477
|
+
(
|
|
478
|
+
"1:\n\t"
|
|
479
|
+
"lbarx %0,%y2\n\t"
|
|
480
|
+
"and %1,%0,%3\n\t"
|
|
481
|
+
"stbcx. %1,%y2\n\t"
|
|
482
|
+
"bne- 1b\n\t"
|
|
483
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
484
|
+
: "b" (v)
|
|
485
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
486
|
+
);
|
|
487
|
+
fence_after(order);
|
|
488
|
+
return original;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
492
|
+
{
|
|
493
|
+
storage_type original, result;
|
|
494
|
+
fence_before(order);
|
|
495
|
+
__asm__ __volatile__
|
|
496
|
+
(
|
|
497
|
+
"1:\n\t"
|
|
498
|
+
"lbarx %0,%y2\n\t"
|
|
499
|
+
"or %1,%0,%3\n\t"
|
|
500
|
+
"stbcx. %1,%y2\n\t"
|
|
501
|
+
"bne- 1b\n\t"
|
|
502
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
503
|
+
: "b" (v)
|
|
504
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
505
|
+
);
|
|
506
|
+
fence_after(order);
|
|
507
|
+
return original;
|
|
508
|
+
}
|
|
509
|
+
|
|
510
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
511
|
+
{
|
|
512
|
+
storage_type original, result;
|
|
513
|
+
fence_before(order);
|
|
514
|
+
__asm__ __volatile__
|
|
515
|
+
(
|
|
516
|
+
"1:\n\t"
|
|
517
|
+
"lbarx %0,%y2\n\t"
|
|
518
|
+
"xor %1,%0,%3\n\t"
|
|
519
|
+
"stbcx. %1,%y2\n\t"
|
|
520
|
+
"bne- 1b\n\t"
|
|
521
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
522
|
+
: "b" (v)
|
|
523
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
524
|
+
);
|
|
525
|
+
fence_after(order);
|
|
526
|
+
return original;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
530
|
+
{
|
|
531
|
+
return !!exchange(storage, (storage_type)1, order);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
535
|
+
{
|
|
536
|
+
store(storage, 0, order);
|
|
338
537
|
}
|
|
339
538
|
};
|
|
340
539
|
|
|
540
|
+
#else // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX)
|
|
341
541
|
|
|
342
542
|
template< >
|
|
343
543
|
struct operations< 1u, false > :
|
|
@@ -348,7 +548,7 @@ struct operations< 1u, false > :
|
|
|
348
548
|
|
|
349
549
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
350
550
|
{
|
|
351
|
-
storage_type original,
|
|
551
|
+
storage_type original, result;
|
|
352
552
|
fence_before(order);
|
|
353
553
|
__asm__ __volatile__
|
|
354
554
|
(
|
|
@@ -358,7 +558,7 @@ struct operations< 1u, false > :
|
|
|
358
558
|
"rlwinm %1, %1, 0, 0xff\n\t"
|
|
359
559
|
"stwcx. %1,%y2\n\t"
|
|
360
560
|
"bne- 1b\n\t"
|
|
361
|
-
: "=&b" (original), "=&b" (
|
|
561
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
362
562
|
: "b" (v)
|
|
363
563
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
364
564
|
);
|
|
@@ -368,7 +568,7 @@ struct operations< 1u, false > :
|
|
|
368
568
|
|
|
369
569
|
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
370
570
|
{
|
|
371
|
-
storage_type original,
|
|
571
|
+
storage_type original, result;
|
|
372
572
|
fence_before(order);
|
|
373
573
|
__asm__ __volatile__
|
|
374
574
|
(
|
|
@@ -378,7 +578,7 @@ struct operations< 1u, false > :
|
|
|
378
578
|
"rlwinm %1, %1, 0, 0xff\n\t"
|
|
379
579
|
"stwcx. %1,%y2\n\t"
|
|
380
580
|
"bne- 1b\n\t"
|
|
381
|
-
: "=&b" (original), "=&b" (
|
|
581
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
382
582
|
: "b" (v)
|
|
383
583
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
384
584
|
);
|
|
@@ -396,7 +596,7 @@ struct operations< 1u, true > :
|
|
|
396
596
|
|
|
397
597
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
398
598
|
{
|
|
399
|
-
storage_type original,
|
|
599
|
+
storage_type original, result;
|
|
400
600
|
fence_before(order);
|
|
401
601
|
__asm__ __volatile__
|
|
402
602
|
(
|
|
@@ -406,7 +606,7 @@ struct operations< 1u, true > :
|
|
|
406
606
|
"extsb %1, %1\n\t"
|
|
407
607
|
"stwcx. %1,%y2\n\t"
|
|
408
608
|
"bne- 1b\n\t"
|
|
409
|
-
: "=&b" (original), "=&b" (
|
|
609
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
410
610
|
: "b" (v)
|
|
411
611
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
412
612
|
);
|
|
@@ -416,7 +616,7 @@ struct operations< 1u, true > :
|
|
|
416
616
|
|
|
417
617
|
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
418
618
|
{
|
|
419
|
-
storage_type original,
|
|
619
|
+
storage_type original, result;
|
|
420
620
|
fence_before(order);
|
|
421
621
|
__asm__ __volatile__
|
|
422
622
|
(
|
|
@@ -426,15 +626,248 @@ struct operations< 1u, true > :
|
|
|
426
626
|
"extsb %1, %1\n\t"
|
|
427
627
|
"stwcx. %1,%y2\n\t"
|
|
428
628
|
"bne- 1b\n\t"
|
|
429
|
-
: "=&b" (original), "=&b" (
|
|
629
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
630
|
+
: "b" (v)
|
|
631
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
632
|
+
);
|
|
633
|
+
fence_after(order);
|
|
634
|
+
return original;
|
|
635
|
+
}
|
|
636
|
+
};
|
|
637
|
+
|
|
638
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LBARX_STBCX)
|
|
639
|
+
|
|
640
|
+
#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX)
|
|
641
|
+
|
|
642
|
+
template< bool Signed >
|
|
643
|
+
struct operations< 2u, Signed > :
|
|
644
|
+
public gcc_ppc_operations_base
|
|
645
|
+
{
|
|
646
|
+
typedef typename make_storage_type< 2u >::type storage_type;
|
|
647
|
+
typedef typename make_storage_type< 2u >::aligned aligned_storage_type;
|
|
648
|
+
|
|
649
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u;
|
|
650
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
651
|
+
|
|
652
|
+
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
653
|
+
{
|
|
654
|
+
fence_before(order);
|
|
655
|
+
__asm__ __volatile__
|
|
656
|
+
(
|
|
657
|
+
"sth %1, %0\n\t"
|
|
658
|
+
: "+m" (storage)
|
|
659
|
+
: "r" (v)
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
664
|
+
{
|
|
665
|
+
storage_type v;
|
|
666
|
+
if (order == memory_order_seq_cst)
|
|
667
|
+
__asm__ __volatile__ ("sync" ::: "memory");
|
|
668
|
+
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
669
|
+
{
|
|
670
|
+
__asm__ __volatile__
|
|
671
|
+
(
|
|
672
|
+
"lhz %0, %1\n\t"
|
|
673
|
+
"cmpw %0, %0\n\t"
|
|
674
|
+
"bne- 1f\n\t"
|
|
675
|
+
"1:\n\t"
|
|
676
|
+
"isync\n\t"
|
|
677
|
+
: "=&r" (v)
|
|
678
|
+
: "m" (storage)
|
|
679
|
+
: "cr0", "memory"
|
|
680
|
+
);
|
|
681
|
+
}
|
|
682
|
+
else
|
|
683
|
+
{
|
|
684
|
+
__asm__ __volatile__
|
|
685
|
+
(
|
|
686
|
+
"lhz %0, %1\n\t"
|
|
687
|
+
: "=&r" (v)
|
|
688
|
+
: "m" (storage)
|
|
689
|
+
);
|
|
690
|
+
}
|
|
691
|
+
return v;
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
695
|
+
{
|
|
696
|
+
storage_type original;
|
|
697
|
+
fence_before(order);
|
|
698
|
+
__asm__ __volatile__
|
|
699
|
+
(
|
|
700
|
+
"1:\n\t"
|
|
701
|
+
"lharx %0,%y1\n\t"
|
|
702
|
+
"sthcx. %2,%y1\n\t"
|
|
703
|
+
"bne- 1b\n\t"
|
|
704
|
+
: "=&b" (original), "+Z" (storage)
|
|
705
|
+
: "b" (v)
|
|
706
|
+
: "cr0"
|
|
707
|
+
);
|
|
708
|
+
fence_after(order);
|
|
709
|
+
return original;
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
static BOOST_FORCEINLINE bool compare_exchange_weak(
|
|
713
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
714
|
+
{
|
|
715
|
+
int success;
|
|
716
|
+
fence_before(success_order);
|
|
717
|
+
__asm__ __volatile__
|
|
718
|
+
(
|
|
719
|
+
"li %1, 0\n\t"
|
|
720
|
+
"lharx %0,%y2\n\t"
|
|
721
|
+
"cmpw %0, %3\n\t"
|
|
722
|
+
"bne- 1f\n\t"
|
|
723
|
+
"sthcx. %4,%y2\n\t"
|
|
724
|
+
"bne- 1f\n\t"
|
|
725
|
+
"li %1, 1\n\t"
|
|
726
|
+
"1:\n\t"
|
|
727
|
+
: "=&b" (expected), "=&b" (success), "+Z" (storage)
|
|
728
|
+
: "b" (expected), "b" (desired)
|
|
729
|
+
: "cr0"
|
|
730
|
+
);
|
|
731
|
+
if (success)
|
|
732
|
+
fence_after(success_order);
|
|
733
|
+
else
|
|
734
|
+
fence_after(failure_order);
|
|
735
|
+
return !!success;
|
|
736
|
+
}
|
|
737
|
+
|
|
738
|
+
static BOOST_FORCEINLINE bool compare_exchange_strong(
|
|
739
|
+
storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
|
|
740
|
+
{
|
|
741
|
+
int success;
|
|
742
|
+
fence_before(success_order);
|
|
743
|
+
__asm__ __volatile__
|
|
744
|
+
(
|
|
745
|
+
"li %1, 0\n\t"
|
|
746
|
+
"0: lharx %0,%y2\n\t"
|
|
747
|
+
"cmpw %0, %3\n\t"
|
|
748
|
+
"bne- 1f\n\t"
|
|
749
|
+
"sthcx. %4,%y2\n\t"
|
|
750
|
+
"bne- 0b\n\t"
|
|
751
|
+
"li %1, 1\n\t"
|
|
752
|
+
"1:\n\t"
|
|
753
|
+
: "=&b" (expected), "=&b" (success), "+Z" (storage)
|
|
754
|
+
: "b" (expected), "b" (desired)
|
|
755
|
+
: "cr0"
|
|
756
|
+
);
|
|
757
|
+
if (success)
|
|
758
|
+
fence_after(success_order);
|
|
759
|
+
else
|
|
760
|
+
fence_after(failure_order);
|
|
761
|
+
return !!success;
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
765
|
+
{
|
|
766
|
+
storage_type original, result;
|
|
767
|
+
fence_before(order);
|
|
768
|
+
__asm__ __volatile__
|
|
769
|
+
(
|
|
770
|
+
"1:\n\t"
|
|
771
|
+
"lharx %0,%y2\n\t"
|
|
772
|
+
"add %1,%0,%3\n\t"
|
|
773
|
+
"sthcx. %1,%y2\n\t"
|
|
774
|
+
"bne- 1b\n\t"
|
|
775
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
776
|
+
: "b" (v)
|
|
777
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
778
|
+
);
|
|
779
|
+
fence_after(order);
|
|
780
|
+
return original;
|
|
781
|
+
}
|
|
782
|
+
|
|
783
|
+
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
784
|
+
{
|
|
785
|
+
storage_type original, result;
|
|
786
|
+
fence_before(order);
|
|
787
|
+
__asm__ __volatile__
|
|
788
|
+
(
|
|
789
|
+
"1:\n\t"
|
|
790
|
+
"lharx %0,%y2\n\t"
|
|
791
|
+
"sub %1,%0,%3\n\t"
|
|
792
|
+
"sthcx. %1,%y2\n\t"
|
|
793
|
+
"bne- 1b\n\t"
|
|
794
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
795
|
+
: "b" (v)
|
|
796
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
797
|
+
);
|
|
798
|
+
fence_after(order);
|
|
799
|
+
return original;
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
803
|
+
{
|
|
804
|
+
storage_type original, result;
|
|
805
|
+
fence_before(order);
|
|
806
|
+
__asm__ __volatile__
|
|
807
|
+
(
|
|
808
|
+
"1:\n\t"
|
|
809
|
+
"lharx %0,%y2\n\t"
|
|
810
|
+
"and %1,%0,%3\n\t"
|
|
811
|
+
"sthcx. %1,%y2\n\t"
|
|
812
|
+
"bne- 1b\n\t"
|
|
813
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
430
814
|
: "b" (v)
|
|
431
815
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
432
816
|
);
|
|
433
817
|
fence_after(order);
|
|
434
818
|
return original;
|
|
435
819
|
}
|
|
820
|
+
|
|
821
|
+
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
822
|
+
{
|
|
823
|
+
storage_type original, result;
|
|
824
|
+
fence_before(order);
|
|
825
|
+
__asm__ __volatile__
|
|
826
|
+
(
|
|
827
|
+
"1:\n\t"
|
|
828
|
+
"lharx %0,%y2\n\t"
|
|
829
|
+
"or %1,%0,%3\n\t"
|
|
830
|
+
"sthcx. %1,%y2\n\t"
|
|
831
|
+
"bne- 1b\n\t"
|
|
832
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
833
|
+
: "b" (v)
|
|
834
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
835
|
+
);
|
|
836
|
+
fence_after(order);
|
|
837
|
+
return original;
|
|
838
|
+
}
|
|
839
|
+
|
|
840
|
+
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
841
|
+
{
|
|
842
|
+
storage_type original, result;
|
|
843
|
+
fence_before(order);
|
|
844
|
+
__asm__ __volatile__
|
|
845
|
+
(
|
|
846
|
+
"1:\n\t"
|
|
847
|
+
"lharx %0,%y2\n\t"
|
|
848
|
+
"xor %1,%0,%3\n\t"
|
|
849
|
+
"sthcx. %1,%y2\n\t"
|
|
850
|
+
"bne- 1b\n\t"
|
|
851
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
852
|
+
: "b" (v)
|
|
853
|
+
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
854
|
+
);
|
|
855
|
+
fence_after(order);
|
|
856
|
+
return original;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
860
|
+
{
|
|
861
|
+
return !!exchange(storage, (storage_type)1, order);
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
|
|
865
|
+
{
|
|
866
|
+
store(storage, 0, order);
|
|
867
|
+
}
|
|
436
868
|
};
|
|
437
869
|
|
|
870
|
+
#else // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX)
|
|
438
871
|
|
|
439
872
|
template< >
|
|
440
873
|
struct operations< 2u, false > :
|
|
@@ -445,7 +878,7 @@ struct operations< 2u, false > :
|
|
|
445
878
|
|
|
446
879
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
447
880
|
{
|
|
448
|
-
storage_type original,
|
|
881
|
+
storage_type original, result;
|
|
449
882
|
fence_before(order);
|
|
450
883
|
__asm__ __volatile__
|
|
451
884
|
(
|
|
@@ -455,7 +888,7 @@ struct operations< 2u, false > :
|
|
|
455
888
|
"rlwinm %1, %1, 0, 0xffff\n\t"
|
|
456
889
|
"stwcx. %1,%y2\n\t"
|
|
457
890
|
"bne- 1b\n\t"
|
|
458
|
-
: "=&b" (original), "=&b" (
|
|
891
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
459
892
|
: "b" (v)
|
|
460
893
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
461
894
|
);
|
|
@@ -465,7 +898,7 @@ struct operations< 2u, false > :
|
|
|
465
898
|
|
|
466
899
|
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
467
900
|
{
|
|
468
|
-
storage_type original,
|
|
901
|
+
storage_type original, result;
|
|
469
902
|
fence_before(order);
|
|
470
903
|
__asm__ __volatile__
|
|
471
904
|
(
|
|
@@ -475,7 +908,7 @@ struct operations< 2u, false > :
|
|
|
475
908
|
"rlwinm %1, %1, 0, 0xffff\n\t"
|
|
476
909
|
"stwcx. %1,%y2\n\t"
|
|
477
910
|
"bne- 1b\n\t"
|
|
478
|
-
: "=&b" (original), "=&b" (
|
|
911
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
479
912
|
: "b" (v)
|
|
480
913
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
481
914
|
);
|
|
@@ -493,7 +926,7 @@ struct operations< 2u, true > :
|
|
|
493
926
|
|
|
494
927
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
495
928
|
{
|
|
496
|
-
storage_type original,
|
|
929
|
+
storage_type original, result;
|
|
497
930
|
fence_before(order);
|
|
498
931
|
__asm__ __volatile__
|
|
499
932
|
(
|
|
@@ -503,7 +936,7 @@ struct operations< 2u, true > :
|
|
|
503
936
|
"extsh %1, %1\n\t"
|
|
504
937
|
"stwcx. %1,%y2\n\t"
|
|
505
938
|
"bne- 1b\n\t"
|
|
506
|
-
: "=&b" (original), "=&b" (
|
|
939
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
507
940
|
: "b" (v)
|
|
508
941
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
509
942
|
);
|
|
@@ -513,7 +946,7 @@ struct operations< 2u, true > :
|
|
|
513
946
|
|
|
514
947
|
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
515
948
|
{
|
|
516
|
-
storage_type original,
|
|
949
|
+
storage_type original, result;
|
|
517
950
|
fence_before(order);
|
|
518
951
|
__asm__ __volatile__
|
|
519
952
|
(
|
|
@@ -523,7 +956,7 @@ struct operations< 2u, true > :
|
|
|
523
956
|
"extsh %1, %1\n\t"
|
|
524
957
|
"stwcx. %1,%y2\n\t"
|
|
525
958
|
"bne- 1b\n\t"
|
|
526
|
-
: "=&b" (original), "=&b" (
|
|
959
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
527
960
|
: "b" (v)
|
|
528
961
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
529
962
|
);
|
|
@@ -532,15 +965,19 @@ struct operations< 2u, true > :
|
|
|
532
965
|
}
|
|
533
966
|
};
|
|
534
967
|
|
|
968
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LHARX_STHCX)
|
|
535
969
|
|
|
536
|
-
#if defined(
|
|
970
|
+
#if defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX)
|
|
537
971
|
|
|
538
972
|
template< bool Signed >
|
|
539
973
|
struct operations< 8u, Signed > :
|
|
540
974
|
public gcc_ppc_operations_base
|
|
541
975
|
{
|
|
542
|
-
typedef typename make_storage_type< 8u
|
|
543
|
-
typedef typename make_storage_type< 8u
|
|
976
|
+
typedef typename make_storage_type< 8u >::type storage_type;
|
|
977
|
+
typedef typename make_storage_type< 8u >::aligned aligned_storage_type;
|
|
978
|
+
|
|
979
|
+
static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
|
|
980
|
+
static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
|
|
544
981
|
|
|
545
982
|
static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
546
983
|
{
|
|
@@ -558,7 +995,7 @@ struct operations< 8u, Signed > :
|
|
|
558
995
|
storage_type v;
|
|
559
996
|
if (order == memory_order_seq_cst)
|
|
560
997
|
__asm__ __volatile__ ("sync" ::: "memory");
|
|
561
|
-
if ((order & (memory_order_consume | memory_order_acquire)) !=
|
|
998
|
+
if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
|
|
562
999
|
{
|
|
563
1000
|
__asm__ __volatile__
|
|
564
1001
|
(
|
|
@@ -656,7 +1093,7 @@ struct operations< 8u, Signed > :
|
|
|
656
1093
|
|
|
657
1094
|
static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
658
1095
|
{
|
|
659
|
-
storage_type original,
|
|
1096
|
+
storage_type original, result;
|
|
660
1097
|
fence_before(order);
|
|
661
1098
|
__asm__ __volatile__
|
|
662
1099
|
(
|
|
@@ -665,7 +1102,7 @@ struct operations< 8u, Signed > :
|
|
|
665
1102
|
"add %1,%0,%3\n\t"
|
|
666
1103
|
"stdcx. %1,%y2\n\t"
|
|
667
1104
|
"bne- 1b\n\t"
|
|
668
|
-
: "=&b" (original), "=&b" (
|
|
1105
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
669
1106
|
: "b" (v)
|
|
670
1107
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
671
1108
|
);
|
|
@@ -675,7 +1112,7 @@ struct operations< 8u, Signed > :
|
|
|
675
1112
|
|
|
676
1113
|
static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
677
1114
|
{
|
|
678
|
-
storage_type original,
|
|
1115
|
+
storage_type original, result;
|
|
679
1116
|
fence_before(order);
|
|
680
1117
|
__asm__ __volatile__
|
|
681
1118
|
(
|
|
@@ -684,7 +1121,7 @@ struct operations< 8u, Signed > :
|
|
|
684
1121
|
"sub %1,%0,%3\n\t"
|
|
685
1122
|
"stdcx. %1,%y2\n\t"
|
|
686
1123
|
"bne- 1b\n\t"
|
|
687
|
-
: "=&b" (original), "=&b" (
|
|
1124
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
688
1125
|
: "b" (v)
|
|
689
1126
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
690
1127
|
);
|
|
@@ -694,7 +1131,7 @@ struct operations< 8u, Signed > :
|
|
|
694
1131
|
|
|
695
1132
|
static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
696
1133
|
{
|
|
697
|
-
storage_type original,
|
|
1134
|
+
storage_type original, result;
|
|
698
1135
|
fence_before(order);
|
|
699
1136
|
__asm__ __volatile__
|
|
700
1137
|
(
|
|
@@ -703,7 +1140,7 @@ struct operations< 8u, Signed > :
|
|
|
703
1140
|
"and %1,%0,%3\n\t"
|
|
704
1141
|
"stdcx. %1,%y2\n\t"
|
|
705
1142
|
"bne- 1b\n\t"
|
|
706
|
-
: "=&b" (original), "=&b" (
|
|
1143
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
707
1144
|
: "b" (v)
|
|
708
1145
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
709
1146
|
);
|
|
@@ -713,7 +1150,7 @@ struct operations< 8u, Signed > :
|
|
|
713
1150
|
|
|
714
1151
|
static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
715
1152
|
{
|
|
716
|
-
storage_type original,
|
|
1153
|
+
storage_type original, result;
|
|
717
1154
|
fence_before(order);
|
|
718
1155
|
__asm__ __volatile__
|
|
719
1156
|
(
|
|
@@ -722,7 +1159,7 @@ struct operations< 8u, Signed > :
|
|
|
722
1159
|
"or %1,%0,%3\n\t"
|
|
723
1160
|
"stdcx. %1,%y2\n\t"
|
|
724
1161
|
"bne- 1b\n\t"
|
|
725
|
-
: "=&b" (original), "=&b" (
|
|
1162
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
726
1163
|
: "b" (v)
|
|
727
1164
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
728
1165
|
);
|
|
@@ -732,7 +1169,7 @@ struct operations< 8u, Signed > :
|
|
|
732
1169
|
|
|
733
1170
|
static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
|
|
734
1171
|
{
|
|
735
|
-
storage_type original,
|
|
1172
|
+
storage_type original, result;
|
|
736
1173
|
fence_before(order);
|
|
737
1174
|
__asm__ __volatile__
|
|
738
1175
|
(
|
|
@@ -741,7 +1178,7 @@ struct operations< 8u, Signed > :
|
|
|
741
1178
|
"xor %1,%0,%3\n\t"
|
|
742
1179
|
"stdcx. %1,%y2\n\t"
|
|
743
1180
|
"bne- 1b\n\t"
|
|
744
|
-
: "=&b" (original), "=&b" (
|
|
1181
|
+
: "=&b" (original), "=&b" (result), "+Z" (storage)
|
|
745
1182
|
: "b" (v)
|
|
746
1183
|
: BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
|
|
747
1184
|
);
|
|
@@ -758,32 +1195,23 @@ struct operations< 8u, Signed > :
|
|
|
758
1195
|
{
|
|
759
1196
|
store(storage, 0, order);
|
|
760
1197
|
}
|
|
761
|
-
|
|
762
|
-
static BOOST_FORCEINLINE bool is_lock_free(storage_type const volatile&) BOOST_NOEXCEPT
|
|
763
|
-
{
|
|
764
|
-
return true;
|
|
765
|
-
}
|
|
766
1198
|
};
|
|
767
1199
|
|
|
768
|
-
#endif // defined(
|
|
1200
|
+
#endif // defined(BOOST_ATOMIC_DETAIL_PPC_HAS_LDARX_STDCX)
|
|
769
1201
|
|
|
770
1202
|
|
|
771
1203
|
BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT
|
|
772
1204
|
{
|
|
773
|
-
|
|
1205
|
+
if (order != memory_order_relaxed)
|
|
774
1206
|
{
|
|
775
|
-
case memory_order_consume:
|
|
776
|
-
case memory_order_acquire:
|
|
777
|
-
case memory_order_release:
|
|
778
|
-
case memory_order_acq_rel:
|
|
779
1207
|
#if defined(__powerpc64__) || defined(__PPC64__)
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
1208
|
+
if (order != memory_order_seq_cst)
|
|
1209
|
+
__asm__ __volatile__ ("lwsync" ::: "memory");
|
|
1210
|
+
else
|
|
1211
|
+
__asm__ __volatile__ ("sync" ::: "memory");
|
|
1212
|
+
#else
|
|
784
1213
|
__asm__ __volatile__ ("sync" ::: "memory");
|
|
785
|
-
|
|
786
|
-
default:;
|
|
1214
|
+
#endif
|
|
787
1215
|
}
|
|
788
1216
|
}
|
|
789
1217
|
|