passenger 6.0.7 → 6.0.8

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.
Files changed (1573) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +29 -0
  3. data/CONTRIBUTORS +1 -0
  4. data/README.md +2 -9
  5. data/build/common_library.rb +4 -4
  6. data/build/packaging.rb +4 -2
  7. data/build/support/cxx_dependency_map.rb +1 -0
  8. data/dev/copy_boost_headers +1 -1
  9. data/resources/release.txt +1 -0
  10. data/resources/templates/config/installation_utils/user_support_binaries_dir_not_writable.txt.erb +1 -0
  11. data/resources/templates/standalone/global.erb +4 -0
  12. data/src/agent/Core/AdminPanelConnector.h +1 -1
  13. data/src/agent/Core/ApplicationPool/Group.h +1 -1
  14. data/src/agent/Core/ApplicationPool/Group/InternalUtils.cpp +2 -2
  15. data/src/agent/Core/ApplicationPool/Group/OutOfBandWork.cpp +1 -1
  16. data/src/agent/Core/ApplicationPool/Options.h +2 -2
  17. data/src/agent/Core/ApplicationPool/Pool.h +1 -1
  18. data/src/agent/Core/ApplicationPool/Pool/ProcessUtils.cpp +1 -1
  19. data/src/agent/Core/Config.h +2 -2
  20. data/src/agent/Core/Controller/Config.h +2 -2
  21. data/src/agent/Core/SpawningKit/Handshake/BackgroundIOCapturer.h +1 -1
  22. data/src/agent/Core/SpawningKit/Handshake/Perform.h +1 -1
  23. data/src/agent/Core/SpawningKit/PipeWatcher.h +1 -1
  24. data/src/agent/Core/SpawningKit/SmartSpawner.h +1 -1
  25. data/src/agent/Core/SpawningKit/Spawner.h +1 -0
  26. data/src/agent/Core/TelemetryCollector.h +1 -1
  27. data/src/agent/Shared/ApiServerUtils.h +1 -1
  28. data/src/agent/Watchdog/Config.h +1 -1
  29. data/src/agent/Watchdog/InstanceDirToucher.cpp +1 -1
  30. data/src/agent/Watchdog/WatchdogMain.cpp +1 -1
  31. data/src/cxx_supportlib/BackgroundEventLoop.cpp +1 -1
  32. data/src/cxx_supportlib/ConfigKit/Schema.h +1 -1
  33. data/src/cxx_supportlib/ConfigKit/Translator.h +1 -1
  34. data/src/cxx_supportlib/Constants.h +2 -2
  35. data/src/cxx_supportlib/FileTools/FileManip.cpp +10 -1
  36. data/src/cxx_supportlib/FileTools/FileManip.h +16 -0
  37. data/src/cxx_supportlib/IOTools/BufferedIO.h +1 -1
  38. data/src/cxx_supportlib/IOTools/MessageIO.h +1 -1
  39. data/src/cxx_supportlib/SafeLibev.h +1 -1
  40. data/src/cxx_supportlib/ServerKit/AcceptLoadBalancer.h +1 -1
  41. data/src/cxx_supportlib/SystemTools/ProcessMetricsCollector.h +1 -1
  42. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +9 -12
  43. data/src/cxx_supportlib/oxt/dynamic_thread_group.hpp +5 -1
  44. data/src/cxx_supportlib/oxt/thread.hpp +1 -1
  45. data/src/cxx_supportlib/vendor-copy/websocketpp/changelog.md +107 -5
  46. data/src/cxx_supportlib/vendor-copy/websocketpp/readme.md +2 -2
  47. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/close.hpp +12 -1
  48. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/asio.hpp +13 -3
  49. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/memory.hpp +0 -1
  50. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/common/thread.hpp +6 -2
  51. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/config/core.hpp +13 -1
  52. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/connection.hpp +6 -15
  53. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/endpoint.hpp +24 -24
  54. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/disabled.hpp +1 -0
  55. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/extensions/permessage_deflate/enabled.hpp +84 -19
  56. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/frame.hpp +3 -0
  57. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/impl/parser.hpp +4 -0
  58. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/http/parser.hpp +10 -0
  59. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/connection_impl.hpp +150 -147
  60. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/impl/endpoint_impl.hpp +4 -4
  61. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/base.hpp +1 -1
  62. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/processors/hybi13.hpp +47 -25
  63. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/client_endpoint.hpp +3 -3
  64. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/roles/server_endpoint.hpp +14 -9
  65. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/sha1/sha1.hpp +189 -189
  66. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/connection.hpp +59 -66
  67. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/endpoint.hpp +73 -38
  68. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/none.hpp +9 -7
  69. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/asio/security/tls.hpp +12 -22
  70. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/base/endpoint.hpp +1 -1
  71. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/connection.hpp +11 -11
  72. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/debug/endpoint.hpp +1 -1
  73. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/connection.hpp +13 -13
  74. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/iostream/endpoint.hpp +3 -3
  75. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/transport/stub/connection.hpp +8 -8
  76. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/uri.hpp +1 -0
  77. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/utilities.hpp +2 -4
  78. data/src/cxx_supportlib/vendor-copy/websocketpp/websocketpp/version.hpp +3 -3
  79. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/compare.hpp +3 -3
  80. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/case_conv.hpp +2 -2
  81. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/classification.hpp +1 -1
  82. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/finder.hpp +15 -15
  83. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/formatter.hpp +1 -1
  84. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/detail/trim.hpp +3 -3
  85. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/find_format.hpp +1 -2
  86. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/formatter.hpp +0 -1
  87. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/iter_find.hpp +8 -0
  88. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/predicate.hpp +4 -3
  89. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/split.hpp +12 -0
  90. data/src/cxx_supportlib/vendor-modified/boost/array.hpp +2 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/asio.hpp +47 -17
  92. data/src/cxx_supportlib/vendor-modified/boost/asio/any_io_executor.hpp +73 -0
  93. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_allocator.hpp +2 -8
  94. data/src/cxx_supportlib/vendor-modified/boost/asio/associated_executor.hpp +37 -20
  95. data/src/cxx_supportlib/vendor-modified/boost/asio/async_result.hpp +426 -65
  96. data/src/cxx_supportlib/vendor-modified/boost/asio/awaitable.hpp +135 -0
  97. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_datagram_socket.hpp +432 -257
  98. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_deadline_timer.hpp +178 -113
  99. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_io_object.hpp +1 -1
  100. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_raw_socket.hpp +433 -257
  101. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_seq_packet_socket.hpp +286 -143
  102. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_serial_port.hpp +315 -96
  103. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_signal_set.hpp +241 -64
  104. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket.hpp +364 -227
  105. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_acceptor.hpp +976 -461
  106. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_iostream.hpp +21 -44
  107. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_socket_streambuf.hpp +15 -35
  108. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_stream_socket.hpp +329 -197
  109. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf.hpp +1 -1
  110. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_streambuf_fwd.hpp +1 -1
  111. data/src/cxx_supportlib/vendor-modified/boost/asio/basic_waitable_timer.hpp +221 -115
  112. data/src/cxx_supportlib/vendor-modified/boost/asio/bind_executor.hpp +11 -47
  113. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +416 -89
  114. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream.hpp +23 -27
  115. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_read_stream_fwd.hpp +1 -1
  116. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream.hpp +31 -30
  117. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_stream_fwd.hpp +1 -1
  118. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream.hpp +23 -27
  119. data/src/cxx_supportlib/vendor-modified/boost/asio/buffered_write_stream_fwd.hpp +1 -1
  120. data/src/cxx_supportlib/vendor-modified/boost/asio/buffers_iterator.hpp +1 -1
  121. data/src/cxx_supportlib/vendor-modified/boost/asio/co_spawn.hpp +473 -0
  122. data/src/cxx_supportlib/vendor-modified/boost/asio/completion_condition.hpp +1 -1
  123. data/src/cxx_supportlib/vendor-modified/boost/asio/compose.hpp +138 -0
  124. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +118 -102
  125. data/src/cxx_supportlib/vendor-modified/boost/asio/coroutine.hpp +3 -3
  126. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer.hpp +1 -1
  127. data/src/cxx_supportlib/vendor-modified/boost/asio/defer.hpp +33 -10
  128. data/src/cxx_supportlib/vendor-modified/boost/asio/detached.hpp +114 -0
  129. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array.hpp +1 -1
  130. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/array_fwd.hpp +1 -1
  131. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/assert.hpp +1 -1
  132. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/atomic_count.hpp +20 -1
  133. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/base_from_completion_cond.hpp +4 -3
  134. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bind_handler.hpp +145 -27
  135. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/blocking_executor_op.hpp +109 -0
  136. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_resize_guard.hpp +1 -1
  137. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffer_sequence_adapter.hpp +107 -1
  138. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/buffered_stream_storage.hpp +1 -1
  139. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/bulk_executor_op.hpp +90 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/call_stack.hpp +1 -1
  141. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono.hpp +1 -1
  142. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/chrono_time_traits.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/completion_handler.hpp +11 -6
  144. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/concurrency_hint.hpp +1 -1
  145. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_event.hpp +9 -1
  146. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/conditionally_enabled_mutex.hpp +1 -1
  147. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +481 -129
  148. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/consuming_buffers.hpp +1 -1
  149. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstddef.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/cstdint.hpp +1 -1
  151. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/date_time_fwd.hpp +1 -1
  152. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/deadline_timer_service.hpp +29 -12
  153. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dependent_type.hpp +1 -1
  154. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_ops.hpp +25 -7
  155. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_read_op.hpp +36 -16
  156. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/descriptor_write_op.hpp +36 -16
  157. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/dev_poll_reactor.hpp +1 -1
  158. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/epoll_reactor.hpp +1 -1
  159. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/event.hpp +1 -1
  160. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/eventfd_select_interrupter.hpp +2 -2
  161. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_function.hpp +205 -0
  162. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/executor_op.hpp +1 -1
  163. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fd_set_adapter.hpp +1 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/fenced_block.hpp +1 -1
  165. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/functional.hpp +1 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +1 -1
  167. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_arm_fenced_block.hpp +1 -1
  168. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_hppa_fenced_block.hpp +1 -1
  169. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_sync_fenced_block.hpp +1 -1
  170. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/gcc_x86_fenced_block.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/global.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_alloc_helpers.hpp +55 -6
  173. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_cont_helpers.hpp +1 -1
  174. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_invoke_helpers.hpp +24 -1
  175. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_tracking.hpp +27 -1
  176. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_type_requirements.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/handler_work.hpp +378 -35
  178. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/hash_map.hpp +1 -1
  179. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/buffer_sequence_adapter.ipp +1 -1
  180. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/descriptor_ops.ipp +218 -84
  181. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.hpp +1 -1
  182. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/dev_poll_reactor.ipp +1 -1
  183. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.hpp +1 -1
  184. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/epoll_reactor.ipp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/eventfd_select_interrupter.ipp +12 -8
  186. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/handler_tracking.ipp +40 -2
  187. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.hpp +1 -1
  188. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/kqueue_reactor.ipp +6 -2
  189. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/null_event.ipp +1 -1
  190. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/pipe_select_interrupter.ipp +11 -6
  191. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_event.ipp +1 -1
  192. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_mutex.ipp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_thread.ipp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/posix_tss_ptr.ipp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_descriptor_service.ipp +5 -4
  196. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_serial_port_service.ipp +16 -19
  197. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/reactive_socket_service_base.ipp +4 -4
  198. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/resolver_service_base.ipp +37 -33
  199. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/scheduler.ipp +87 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.hpp +1 -1
  201. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/select_reactor.ipp +8 -3
  202. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.hpp +1 -1
  203. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/service_registry.ipp +1 -1
  204. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/signal_set_service.ipp +22 -23
  205. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +674 -283
  206. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_select_interrupter.ipp +15 -6
  207. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.hpp +211 -5
  208. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_executor_service.ipp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.hpp +9 -10
  210. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/strand_service.ipp +6 -5
  211. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/throw_error.ipp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_ptime.ipp +1 -1
  213. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/timer_queue_set.ipp +1 -1
  214. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_control.hpp +1 -1
  215. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/io_object_impl.hpp +177 -0
  216. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +65 -16
  217. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_executor.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/keyword_tss_ptr.hpp +1 -1
  219. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/kqueue_reactor.hpp +1 -1
  220. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/local_free_on_block_exit.hpp +1 -1
  221. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/macos_fenced_block.hpp +1 -1
  222. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/memory.hpp +4 -1
  223. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/mutex.hpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/non_const_lvalue.hpp +56 -0
  225. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/noncopyable.hpp +1 -1
  226. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_event.hpp +7 -1
  227. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_fenced_block.hpp +1 -1
  228. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_global.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_mutex.hpp +1 -1
  230. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_reactor.hpp +1 -1
  231. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_signal_blocker.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_socket_service.hpp +63 -52
  233. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_static_mutex.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_thread.hpp +1 -1
  235. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/null_tss_ptr.hpp +1 -1
  236. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/object_pool.hpp +1 -1
  237. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/old_win_sdk_compat.hpp +1 -1
  238. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/op_queue.hpp +1 -1
  239. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/operation.hpp +1 -1
  240. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pipe_select_interrupter.hpp +2 -2
  241. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/pop_options.hpp +14 -8
  242. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_event.hpp +15 -2
  243. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_fd_set_adapter.hpp +1 -1
  244. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_global.hpp +1 -1
  245. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_mutex.hpp +1 -1
  246. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_signal_blocker.hpp +1 -1
  247. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_static_mutex.hpp +1 -1
  248. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_thread.hpp +1 -1
  249. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/posix_tss_ptr.hpp +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/push_options.hpp +16 -6
  251. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_descriptor_service.hpp +62 -34
  252. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_null_buffers_op.hpp +15 -7
  253. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_serial_port_service.hpp +15 -14
  254. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_accept_op.hpp +53 -28
  255. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_connect_op.hpp +20 -10
  256. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recv_op.hpp +43 -19
  257. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvfrom_op.hpp +42 -16
  258. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_recvmsg_op.hpp +26 -13
  259. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_send_op.hpp +48 -20
  260. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_sendto_op.hpp +43 -17
  261. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service.hpp +82 -80
  262. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_socket_service_base.hpp +77 -47
  263. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactive_wait_op.hpp +15 -7
  264. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor.hpp +1 -1
  265. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_fwd.hpp +1 -1
  266. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op.hpp +4 -2
  267. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/reactor_op_queue.hpp +1 -1
  268. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/recycling_allocator.hpp +16 -14
  269. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/regex_fwd.hpp +1 -1
  270. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_endpoint_op.hpp +31 -13
  271. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_op.hpp +1 -1
  272. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolve_query_op.hpp +31 -15
  273. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service.hpp +18 -18
  274. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/resolver_service_base.hpp +22 -19
  275. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler.hpp +21 -2
  276. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_operation.hpp +1 -1
  277. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scheduler_thread_info.hpp +1 -1
  278. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_lock.hpp +1 -1
  279. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/scoped_ptr.hpp +1 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_interrupter.hpp +1 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/select_reactor.hpp +1 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/service_registry.hpp +1 -1
  283. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_blocker.hpp +1 -1
  284. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_handler.hpp +11 -7
  285. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_init.hpp +1 -1
  286. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_op.hpp +1 -1
  287. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/signal_set_service.hpp +24 -12
  288. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_holder.hpp +1 -1
  289. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_ops.hpp +47 -1
  290. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_option.hpp +1 -1
  291. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_select_interrupter.hpp +2 -2
  292. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/socket_types.hpp +1 -1
  293. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/solaris_fenced_block.hpp +1 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/source_location.hpp +47 -0
  295. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/static_mutex.hpp +1 -1
  296. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_event.hpp +13 -1
  297. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_fenced_block.hpp +1 -1
  298. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_global.hpp +1 -1
  299. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_mutex.hpp +1 -1
  300. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_static_mutex.hpp +1 -1
  301. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/std_thread.hpp +1 -1
  302. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_executor_service.hpp +26 -2
  303. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/strand_service.hpp +5 -2
  304. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/string_view.hpp +1 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread.hpp +1 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_context.hpp +1 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_group.hpp +7 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/thread_info_base.hpp +67 -5
  309. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_error.hpp +1 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/throw_exception.hpp +1 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +1 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_base.hpp +1 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_ptime.hpp +1 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue_set.hpp +1 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler.hpp +1 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_scheduler_fwd.hpp +1 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/tss_ptr.hpp +1 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/type_traits.hpp +65 -3
  319. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/variadic_templates.hpp +177 -2
  320. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_handler.hpp +13 -8
  321. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wait_op.hpp +1 -1
  322. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/winsock_init.hpp +1 -1
  323. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/work_dispatcher.hpp +84 -8
  324. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/wrapped_handler.hpp +46 -10
  325. data/src/cxx_supportlib/vendor-modified/boost/asio/dispatch.hpp +27 -14
  326. data/src/cxx_supportlib/vendor-modified/boost/asio/error.hpp +1 -1
  327. data/src/cxx_supportlib/vendor-modified/boost/asio/execution.hpp +48 -0
  328. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/allocator.hpp +251 -0
  329. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/any_executor.hpp +2266 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bad_executor.hpp +49 -0
  331. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking.hpp +1353 -0
  332. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/blocking_adaptation.hpp +1066 -0
  333. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_execute.hpp +394 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/bulk_guarantee.hpp +1020 -0
  335. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/connect.hpp +490 -0
  336. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context.hpp +187 -0
  337. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/context_as.hpp +203 -0
  338. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_invocable.hpp +154 -0
  339. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_operation.hpp +107 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/as_receiver.hpp +130 -0
  341. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/bulk_sender.hpp +263 -0
  342. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/submit_receiver.hpp +235 -0
  343. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/detail/void_receiver.hpp +92 -0
  344. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/execute.hpp +270 -0
  345. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/executor.hpp +240 -0
  346. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/bad_executor.ipp +42 -0
  347. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/impl/receiver_invocation_error.ipp +38 -0
  348. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/invocable_archetype.hpp +73 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/mapping.hpp +919 -0
  350. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/occupancy.hpp +180 -0
  351. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/operation_state.hpp +96 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/outstanding_work.hpp +723 -0
  353. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/prefer_only.hpp +329 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver.hpp +282 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/receiver_invocation_error.hpp +50 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/relationship.hpp +722 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/schedule.hpp +294 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/scheduler.hpp +88 -0
  359. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/sender.hpp +313 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_done.hpp +257 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_error.hpp +257 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/set_value.hpp +490 -0
  363. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/start.hpp +254 -0
  364. data/src/cxx_supportlib/vendor-modified/boost/asio/execution/submit.hpp +454 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/asio/execution_context.hpp +3 -2
  366. data/src/cxx_supportlib/vendor-modified/boost/asio/executor.hpp +8 -2
  367. data/src/cxx_supportlib/vendor-modified/boost/asio/executor_work_guard.hpp +129 -12
  368. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/basic_endpoint.hpp +2 -2
  369. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/datagram_protocol.hpp +4 -4
  370. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/endpoint.hpp +1 -1
  371. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/detail/impl/endpoint.ipp +1 -1
  372. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/raw_protocol.hpp +4 -4
  373. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/seq_packet_protocol.hpp +4 -4
  374. data/src/cxx_supportlib/vendor-modified/boost/asio/generic/stream_protocol.hpp +4 -4
  375. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_alloc_hook.hpp +29 -6
  376. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_continuation_hook.hpp +1 -1
  377. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_invoke_hook.hpp +30 -4
  378. data/src/cxx_supportlib/vendor-modified/boost/asio/high_resolution_timer.hpp +1 -1
  379. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/awaitable.hpp +438 -0
  380. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_read_stream.hpp +154 -56
  381. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/buffered_write_stream.hpp +148 -52
  382. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/co_spawn.hpp +300 -0
  383. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/compose.hpp +637 -0
  384. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/connect.hpp +299 -243
  385. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/defer.hpp +204 -33
  386. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/detached.hpp +132 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/dispatch.hpp +199 -34
  388. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/error.ipp +1 -1
  389. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.hpp +8 -6
  390. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/execution_context.ipp +1 -1
  391. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.hpp +16 -101
  392. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/executor.ipp +6 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/handler_alloc_hook.ipp +14 -5
  394. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +209 -114
  395. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.ipp +4 -3
  396. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/multiple_exceptions.ipp +51 -0
  397. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/post.hpp +204 -33
  398. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read.hpp +619 -132
  399. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_at.hpp +194 -90
  400. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +2278 -445
  401. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/impl → impl}/redirect_error.hpp +148 -52
  402. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.hpp +1 -1
  403. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/serial_port_base.ipp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/spawn.hpp +59 -68
  405. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.cpp +2 -2
  406. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/src.hpp +4 -1
  407. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.hpp +1 -1
  408. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_context.ipp +25 -6
  409. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/system_executor.hpp +114 -13
  410. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.hpp +261 -38
  411. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/thread_pool.ipp +73 -8
  412. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_awaitable.hpp +281 -0
  413. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +131 -40
  414. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write.hpp +562 -132
  415. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/write_at.hpp +185 -91
  416. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context.hpp +714 -60
  417. data/src/cxx_supportlib/vendor-modified/boost/asio/io_context_strand.hpp +46 -54
  418. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service.hpp +1 -1
  419. data/src/cxx_supportlib/vendor-modified/boost/asio/io_service_strand.hpp +1 -1
  420. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address.hpp +35 -27
  421. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4.hpp +32 -26
  422. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_iterator.hpp +1 -1
  423. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v4_range.hpp +1 -1
  424. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6.hpp +41 -36
  425. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_iterator.hpp +1 -1
  426. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/address_v6_range.hpp +1 -1
  427. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +1 -1
  428. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_endpoint.hpp +24 -23
  429. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +200 -190
  430. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_entry.hpp +1 -1
  431. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_iterator.hpp +1 -1
  432. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_query.hpp +1 -1
  433. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +1 -1
  434. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/endpoint.hpp +21 -19
  435. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/impl/endpoint.ipp +10 -10
  436. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/detail/socket_option.hpp +1 -1
  437. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/host_name.hpp +1 -1
  438. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/icmp.hpp +7 -7
  439. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.hpp +1 -1
  440. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address.ipp +23 -18
  441. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.hpp +1 -1
  442. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v4.ipp +11 -11
  443. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.hpp +1 -1
  444. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/address_v6.ipp +26 -26
  445. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/basic_endpoint.hpp +1 -1
  446. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/host_name.ipp +1 -1
  447. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.hpp +1 -1
  448. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v4.ipp +1 -1
  449. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.hpp +1 -1
  450. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/impl/network_v6.ipp +1 -1
  451. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/multicast.hpp +8 -8
  452. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v4.hpp +1 -1
  453. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/network_v6.hpp +1 -1
  454. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_base.hpp +1 -1
  455. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_query_base.hpp +1 -1
  456. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/tcp.hpp +9 -9
  457. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/udp.hpp +7 -7
  458. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/unicast.hpp +3 -3
  459. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/v6_only.hpp +3 -3
  460. data/src/cxx_supportlib/vendor-modified/boost/asio/is_applicable_property.hpp +63 -0
  461. data/src/cxx_supportlib/vendor-modified/boost/asio/is_executor.hpp +1 -1
  462. data/src/cxx_supportlib/vendor-modified/boost/asio/is_read_buffered.hpp +1 -1
  463. data/src/cxx_supportlib/vendor-modified/boost/asio/is_write_buffered.hpp +1 -1
  464. data/src/cxx_supportlib/vendor-modified/boost/asio/local/basic_endpoint.hpp +10 -2
  465. data/src/cxx_supportlib/vendor-modified/boost/asio/local/connect_pair.hpp +14 -19
  466. data/src/cxx_supportlib/vendor-modified/boost/asio/local/datagram_protocol.hpp +4 -4
  467. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/endpoint.hpp +7 -1
  468. data/src/cxx_supportlib/vendor-modified/boost/asio/local/detail/impl/endpoint.ipp +8 -1
  469. data/src/cxx_supportlib/vendor-modified/boost/asio/local/stream_protocol.hpp +4 -4
  470. data/src/cxx_supportlib/vendor-modified/boost/asio/multiple_exceptions.hpp +60 -0
  471. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +1 -1
  472. data/src/cxx_supportlib/vendor-modified/boost/asio/placeholders.hpp +1 -1
  473. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_descriptor.hpp +189 -74
  474. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/basic_stream_descriptor.hpp +180 -72
  475. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor.hpp +5 -612
  476. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/descriptor_base.hpp +2 -2
  477. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor.hpp +3 -326
  478. data/src/cxx_supportlib/vendor-modified/boost/asio/post.hpp +29 -10
  479. data/src/cxx_supportlib/vendor-modified/boost/asio/prefer.hpp +660 -0
  480. data/src/cxx_supportlib/vendor-modified/boost/asio/query.hpp +300 -0
  481. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +398 -57
  482. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +51 -28
  483. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +1460 -423
  484. data/src/cxx_supportlib/vendor-modified/boost/asio/{experimental/redirect_error.hpp → redirect_error.hpp} +9 -10
  485. data/src/cxx_supportlib/vendor-modified/boost/asio/require.hpp +528 -0
  486. data/src/cxx_supportlib/vendor-modified/boost/asio/require_concept.hpp +314 -0
  487. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port.hpp +3 -736
  488. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_base.hpp +1 -1
  489. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set.hpp +3 -422
  490. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_base.hpp +26 -26
  491. data/src/cxx_supportlib/vendor-modified/boost/asio/spawn.hpp +13 -5
  492. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl.hpp +2 -1
  493. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context.hpp +4 -1
  494. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +1 -1
  495. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/buffered_handshake_op.hpp +6 -1
  496. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/engine.hpp +6 -1
  497. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/handshake_op.hpp +6 -1
  498. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/engine.ipp +37 -10
  499. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/impl/openssl_init.ipp +3 -3
  500. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/io.hpp +51 -8
  501. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_init.hpp +1 -1
  502. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/openssl_types.hpp +5 -1
  503. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/password_callback.hpp +1 -1
  504. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/read_op.hpp +6 -1
  505. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/shutdown_op.hpp +17 -2
  506. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/stream_core.hpp +41 -6
  507. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/verify_callback.hpp +1 -1
  508. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/detail/write_op.hpp +11 -2
  509. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/error.hpp +21 -7
  510. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/host_name_verification.hpp +92 -0
  511. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.hpp +1 -1
  512. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +44 -10
  513. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/error.ipp +3 -1
  514. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/host_name_verification.ipp +75 -0
  515. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/rfc2818_verification.ipp +5 -1
  516. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/src.hpp +2 -1
  517. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/rfc2818_verification.hpp +7 -3
  518. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +235 -97
  519. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream_base.hpp +1 -1
  520. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_context.hpp +1 -1
  521. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/verify_mode.hpp +1 -1
  522. data/src/cxx_supportlib/vendor-modified/boost/asio/static_thread_pool.hpp +33 -0
  523. data/src/cxx_supportlib/vendor-modified/boost/asio/steady_timer.hpp +1 -1
  524. data/src/cxx_supportlib/vendor-modified/boost/asio/strand.hpp +264 -13
  525. data/src/cxx_supportlib/vendor-modified/boost/asio/streambuf.hpp +1 -1
  526. data/src/cxx_supportlib/vendor-modified/boost/asio/system_context.hpp +16 -4
  527. data/src/cxx_supportlib/vendor-modified/boost/asio/system_executor.hpp +558 -25
  528. data/src/cxx_supportlib/vendor-modified/boost/asio/system_timer.hpp +1 -1
  529. data/src/cxx_supportlib/vendor-modified/boost/asio/this_coro.hpp +47 -0
  530. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +917 -38
  531. data/src/cxx_supportlib/vendor-modified/boost/asio/time_traits.hpp +1 -1
  532. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_free.hpp +116 -0
  533. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/bulk_execute_member.hpp +116 -0
  534. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_free.hpp +114 -0
  535. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/connect_member.hpp +114 -0
  536. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/equality_comparable.hpp +102 -0
  537. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_free.hpp +110 -0
  538. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/execute_member.hpp +110 -0
  539. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_free.hpp +110 -0
  540. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/prefer_member.hpp +110 -0
  541. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_free.hpp +110 -0
  542. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_member.hpp +110 -0
  543. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/query_static_constexpr_member.hpp +110 -0
  544. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_free.hpp +110 -0
  545. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_concept_member.hpp +110 -0
  546. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_free.hpp +110 -0
  547. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/require_member.hpp +110 -0
  548. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_free.hpp +110 -0
  549. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/schedule_member.hpp +110 -0
  550. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_free.hpp +110 -0
  551. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_done_member.hpp +110 -0
  552. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_free.hpp +114 -0
  553. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_error_member.hpp +114 -0
  554. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_free.hpp +236 -0
  555. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/set_value_member.hpp +236 -0
  556. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_free.hpp +110 -0
  557. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/start_member.hpp +110 -0
  558. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_query.hpp +110 -0
  559. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require.hpp +125 -0
  560. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/static_require_concept.hpp +125 -0
  561. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_free.hpp +114 -0
  562. data/src/cxx_supportlib/vendor-modified/boost/asio/traits/submit_member.hpp +114 -0
  563. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/buffer.hpp +1 -1
  564. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/executor.hpp +2 -2
  565. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/internet.hpp +1 -1
  566. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/io_context.hpp +1 -1
  567. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/net.hpp +1 -1
  568. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/netfwd.hpp +101 -36
  569. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/socket.hpp +1 -1
  570. data/src/cxx_supportlib/vendor-modified/boost/asio/ts/timer.hpp +1 -1
  571. data/src/cxx_supportlib/vendor-modified/boost/asio/unyield.hpp +1 -1
  572. data/src/cxx_supportlib/vendor-modified/boost/asio/use_awaitable.hpp +171 -0
  573. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +1 -1
  574. data/src/cxx_supportlib/vendor-modified/boost/asio/uses_executor.hpp +1 -1
  575. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +2 -2
  576. data/src/cxx_supportlib/vendor-modified/boost/asio/wait_traits.hpp +1 -1
  577. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_object_handle.hpp +295 -42
  578. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_overlapped_handle.hpp +363 -0
  579. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_random_access_handle.hpp +186 -72
  580. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_stream_handle.hpp +188 -73
  581. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle.hpp +3 -346
  582. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_handle.hpp +4 -296
  583. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/overlapped_ptr.hpp +38 -9
  584. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle.hpp +3 -344
  585. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle.hpp +3 -328
  586. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +372 -54
  587. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +51 -28
  588. data/src/cxx_supportlib/vendor-modified/boost/asio/yield.hpp +1 -1
  589. data/src/cxx_supportlib/vendor-modified/boost/assert/source_location.hpp +93 -0
  590. data/src/cxx_supportlib/vendor-modified/boost/atomic.hpp +9 -0
  591. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic.hpp +178 -11
  592. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_flag.hpp +12 -3
  593. data/src/cxx_supportlib/vendor-modified/boost/atomic/atomic_ref.hpp +85 -0
  594. data/src/cxx_supportlib/vendor-modified/boost/atomic/capabilities.hpp +2 -191
  595. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/addressof.hpp +3 -0
  596. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/aligned_variable.hpp +57 -0
  597. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag_impl.hpp +129 -0
  598. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{atomic_template.hpp → atomic_impl.hpp} +327 -429
  599. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_ref_impl.hpp +1126 -0
  600. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_cast.hpp +23 -4
  601. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/bitwise_fp_cast.hpp +3 -0
  602. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/capabilities.hpp +217 -0
  603. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch32.hpp +46 -0
  604. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_arch_gcc_aarch64.hpp +58 -0
  605. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_alpha.hpp → caps_arch_gcc_alpha.hpp} +4 -4
  606. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_arm.hpp → caps_arch_gcc_arm.hpp} +37 -8
  607. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_ppc.hpp → caps_arch_gcc_ppc.hpp} +19 -6
  608. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_gcc_sparc.hpp → caps_arch_gcc_sparc.hpp} +4 -4
  609. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{hwcaps_gcc_x86.hpp → caps_arch_gcc_x86.hpp} +22 -6
  610. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_arm.hpp → caps_arch_msvc_arm.hpp} +4 -4
  611. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{caps_msvc_x86.hpp → caps_arch_msvc_x86.hpp} +12 -6
  612. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_atomic.hpp +100 -75
  613. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_sync.hpp +0 -7
  614. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/cas_based_exchange.hpp +50 -0
  615. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/classify.hpp +81 -0
  616. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/config.hpp +39 -15
  617. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations.hpp +50 -0
  618. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_operations_fwd.hpp +38 -0
  619. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch32.hpp +1121 -0
  620. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_arch_ops_gcc_aarch64.hpp +1909 -0
  621. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_alpha.hpp → core_arch_ops_gcc_alpha.hpp} +280 -289
  622. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_arm.hpp → core_arch_ops_gcc_arm.hpp} +467 -447
  623. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_ppc.hpp → core_arch_ops_gcc_ppc.hpp} +75 -94
  624. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sparc.hpp → core_arch_ops_gcc_sparc.hpp} +33 -58
  625. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_x86_dcas.hpp → core_arch_ops_gcc_x86.hpp} +507 -20
  626. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_arm.hpp → core_arch_ops_msvc_arm.hpp} +58 -54
  627. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_msvc_x86.hpp → core_arch_ops_msvc_x86.hpp} +69 -101
  628. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations.hpp +49 -0
  629. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated.hpp +195 -0
  630. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_emulated_fwd.hpp +38 -0
  631. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_operations_fwd.hpp +38 -0
  632. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_cas_based.hpp → core_ops_cas_based.hpp} +9 -22
  633. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_gcc_atomic.hpp +306 -0
  634. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_gcc_sync.hpp → core_ops_gcc_sync.hpp} +75 -52
  635. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_linux_arm.hpp → core_ops_linux_arm.hpp} +32 -43
  636. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/core_ops_windows.hpp +201 -0
  637. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{ops_extending_cas_based.hpp → extending_cas_based_arithmetic.hpp} +12 -9
  638. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_operations_fwd.hpp +4 -1
  639. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_emulated.hpp +23 -12
  640. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_fp_ops_generic.hpp +12 -9
  641. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_operations_fwd.hpp +4 -1
  642. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_emulated.hpp +60 -40
  643. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch32.hpp +1060 -0
  644. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_aarch64.hpp +1330 -0
  645. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_arm.hpp +363 -355
  646. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_ppc.hpp +94 -91
  647. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_gcc_x86.hpp +232 -102
  648. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_generic.hpp +9 -17
  649. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_arm.hpp +6 -4
  650. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/extra_ops_msvc_x86.hpp +119 -92
  651. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_operations.hpp +41 -0
  652. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch32.hpp +60 -0
  653. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_aarch64.hpp +58 -0
  654. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_alpha.hpp +53 -0
  655. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_arm.hpp +90 -0
  656. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_ppc.hpp +68 -0
  657. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_sparc.hpp +70 -0
  658. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_gcc_x86.hpp +69 -0
  659. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_arm.hpp +66 -0
  660. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_arch_ops_msvc_x86.hpp +66 -0
  661. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations.hpp +41 -0
  662. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_operations_emulated.hpp +50 -0
  663. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_atomic.hpp +75 -0
  664. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_gcc_sync.hpp +53 -0
  665. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_linux_arm.hpp +64 -0
  666. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fence_ops_windows.hpp +67 -0
  667. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/footer.hpp +24 -0
  668. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_operations_fwd.hpp +4 -1
  669. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_emulated.hpp +14 -8
  670. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/fp_ops_generic.hpp +6 -3
  671. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/futex.hpp +147 -0
  672. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_arm_asm_common.hpp +75 -0
  673. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/gcc_atomic_memory_order_utils.hpp +66 -0
  674. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/header.hpp +72 -0
  675. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/{integral_extend.hpp → integral_conversions.hpp} +8 -5
  676. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/interlocked.hpp +35 -11
  677. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/intptr.hpp +46 -0
  678. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lock_pool.hpp +151 -0
  679. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/memory_order_utils.hpp +47 -0
  680. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/once_flag.hpp +43 -0
  681. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch32_common.hpp +53 -0
  682. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_aarch64_common.hpp +53 -0
  683. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_arm_common.hpp +8 -79
  684. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_ppc_common.hpp +4 -1
  685. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_msvc_common.hpp +7 -2
  686. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/pause.hpp +23 -5
  687. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/platform.hpp +64 -27
  688. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_traits.hpp +187 -0
  689. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/alignment_of.hpp +51 -0
  690. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_floating_point.hpp +3 -2
  691. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/type_traits/is_trivially_copyable.hpp +45 -0
  692. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_capabilities.hpp +363 -0
  693. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_dragonfly_umtx.hpp +30 -0
  694. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_freebsd_umtx.hpp +40 -0
  695. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_futex.hpp +31 -0
  696. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_caps_windows.hpp +55 -0
  697. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations.hpp +28 -0
  698. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_operations_fwd.hpp +43 -0
  699. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_dragonfly_umtx.hpp +75 -0
  700. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_emulated.hpp +97 -0
  701. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_freebsd_umtx.hpp +119 -0
  702. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_futex.hpp +111 -0
  703. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_generic.hpp +143 -0
  704. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/wait_ops_windows.hpp +150 -0
  705. data/src/cxx_supportlib/vendor-modified/boost/atomic/fences.hpp +7 -18
  706. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic.hpp +85 -0
  707. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_flag.hpp +40 -0
  708. data/src/cxx_supportlib/vendor-modified/boost/atomic/ipc_atomic_ref.hpp +85 -0
  709. data/src/cxx_supportlib/vendor-modified/boost/bind.hpp +20 -1
  710. data/src/cxx_supportlib/vendor-modified/boost/bind/bind.hpp +11 -11
  711. data/src/cxx_supportlib/vendor-modified/boost/bind/bind_template.hpp +1 -1
  712. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn.hpp +25 -11
  713. data/src/cxx_supportlib/vendor-modified/boost/bind/mem_fn_cc.hpp +18 -18
  714. data/src/cxx_supportlib/vendor-modified/boost/bind/placeholders.hpp +1 -1
  715. data/src/cxx_supportlib/vendor-modified/boost/bind/storage.hpp +1 -1
  716. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +26 -6
  717. data/src/cxx_supportlib/vendor-modified/boost/chrono/system_clocks.hpp +2 -2
  718. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +8 -5
  719. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +107 -105
  720. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -21
  721. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +25 -31
  722. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  723. data/src/cxx_supportlib/vendor-modified/boost/config/abi_prefix.hpp +1 -1
  724. data/src/cxx_supportlib/vendor-modified/boost/config/abi_suffix.hpp +1 -3
  725. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +72 -22
  726. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +4 -1
  727. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +13 -0
  728. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +155 -10
  729. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +2 -0
  730. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +5 -0
  731. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +2 -0
  732. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +21 -5
  733. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +2 -0
  734. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -0
  735. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +7 -0
  736. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +2 -0
  737. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +2 -0
  738. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +2 -0
  739. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +2 -0
  740. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +2 -0
  741. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +15 -7
  742. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +5 -0
  743. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +2 -0
  744. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -1
  745. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_stdlib_config.hpp +13 -2
  746. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +68 -4
  747. data/src/cxx_supportlib/vendor-modified/boost/config/platform/cygwin.hpp +3 -0
  748. data/src/cxx_supportlib/vendor-modified/boost/config/platform/vxworks.hpp +63 -74
  749. data/src/cxx_supportlib/vendor-modified/boost/config/requires_threads.hpp +1 -1
  750. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +10 -4
  751. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcomo.hpp +1 -0
  752. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +2 -0
  753. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +9 -1
  754. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/modena.hpp +1 -0
  755. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/msl.hpp +1 -0
  756. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/roguewave.hpp +2 -1
  757. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/sgi.hpp +1 -0
  758. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/stlport.hpp +6 -5
  759. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/vacpp.hpp +1 -0
  760. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/xlcpp_zos.hpp +1 -0
  761. data/src/cxx_supportlib/vendor-modified/boost/config/user.hpp +2 -2
  762. data/src/cxx_supportlib/vendor-modified/boost/config/workaround.hpp +15 -0
  763. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +10 -10
  764. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +13 -13
  765. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +19 -3
  766. data/src/cxx_supportlib/vendor-modified/boost/container/container_fwd.hpp +117 -29
  767. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +250 -208
  768. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +7 -7
  769. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_helpers.hpp +6 -6
  770. data/src/cxx_supportlib/vendor-modified/boost/container/detail/alloc_lib.h +4 -4
  771. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_list.hpp +2 -1
  772. data/src/cxx_supportlib/vendor-modified/boost/container/detail/block_slist.hpp +2 -1
  773. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +2 -2
  774. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_or_allocator_rebind.hpp +4 -0
  775. data/src/cxx_supportlib/vendor-modified/boost/container/detail/container_rebind.hpp +21 -116
  776. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +11 -8
  777. data/src/cxx_supportlib/vendor-modified/boost/container/detail/dispatch_uses_allocator.hpp +14 -14
  778. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +30 -24
  779. data/src/cxx_supportlib/vendor-modified/boost/container/detail/is_container.hpp +7 -0
  780. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterators.hpp +133 -117
  781. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +2 -2
  782. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +83 -18
  783. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +6 -6
  784. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +103 -69
  785. data/src/cxx_supportlib/vendor-modified/boost/container/detail/value_functors.hpp +6 -0
  786. data/src/cxx_supportlib/vendor-modified/boost/container/detail/version_type.hpp +3 -12
  787. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +6 -2
  788. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +51 -45
  789. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +24 -22
  790. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +83 -77
  791. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +82 -87
  792. data/src/cxx_supportlib/vendor-modified/boost/container/new_allocator.hpp +17 -2
  793. data/src/cxx_supportlib/vendor-modified/boost/container/node_allocator.hpp +2 -2
  794. data/src/cxx_supportlib/vendor-modified/boost/container/options.hpp +278 -2
  795. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/flat_set.hpp +3 -3
  796. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/global_resource.hpp +1 -4
  797. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/memory_resource.hpp +30 -1
  798. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +5 -4
  799. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +90 -6
  800. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +4 -4
  801. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/unsynchronized_pool_resource.hpp +4 -4
  802. data/src/cxx_supportlib/vendor-modified/boost/container/scoped_allocator.hpp +80 -80
  803. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +63 -67
  804. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +48 -42
  805. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +150 -105
  806. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +174 -155
  807. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +157 -105
  808. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +54 -53
  809. data/src/cxx_supportlib/vendor-modified/boost/container/throw_exception.hpp +15 -15
  810. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +207 -207
  811. data/src/cxx_supportlib/vendor-modified/boost/container_hash/extensions.hpp +0 -51
  812. data/src/cxx_supportlib/vendor-modified/boost/container_hash/hash.hpp +4 -3
  813. data/src/cxx_supportlib/vendor-modified/boost/core/addressof.hpp +2 -2
  814. data/src/cxx_supportlib/vendor-modified/boost/core/alloc_construct.hpp +169 -0
  815. data/src/cxx_supportlib/vendor-modified/boost/core/allocator_access.hpp +633 -0
  816. data/src/cxx_supportlib/vendor-modified/boost/core/checked_delete.hpp +6 -4
  817. data/src/cxx_supportlib/vendor-modified/boost/core/default_allocator.hpp +148 -0
  818. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +16 -6
  819. data/src/cxx_supportlib/vendor-modified/boost/core/first_scalar.hpp +45 -0
  820. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +157 -50
  821. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +82 -1
  822. data/src/cxx_supportlib/vendor-modified/boost/core/no_exceptions_support.hpp +14 -2
  823. data/src/cxx_supportlib/vendor-modified/boost/core/noinit_adaptor.hpp +87 -0
  824. data/src/cxx_supportlib/vendor-modified/boost/core/nvp.hpp +57 -0
  825. data/src/cxx_supportlib/vendor-modified/boost/core/pointer_traits.hpp +1 -0
  826. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +1 -1
  827. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +1 -1
  828. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +6 -3
  829. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +2 -2
  830. data/src/cxx_supportlib/vendor-modified/boost/core/uncaught_exceptions.hpp +155 -0
  831. data/src/cxx_supportlib/vendor-modified/boost/core/use_default.hpp +17 -0
  832. data/src/cxx_supportlib/vendor-modified/boost/cstdint.hpp +5 -5
  833. data/src/cxx_supportlib/vendor-modified/boost/current_function.hpp +3 -3
  834. data/src/cxx_supportlib/vendor-modified/boost/date_time/c_time.hpp +9 -4
  835. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +4 -17
  836. data/src/cxx_supportlib/vendor-modified/boost/date_time/constrained_value.hpp +19 -11
  837. data/src/cxx_supportlib/vendor-modified/boost/date_time/date.hpp +23 -23
  838. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration.hpp +17 -22
  839. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_duration_types.hpp +44 -49
  840. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_facet.hpp +5 -6
  841. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_generators.hpp +24 -19
  842. data/src/cxx_supportlib/vendor-modified/boost/date_time/date_parsing.hpp +51 -25
  843. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_rules.hpp +56 -56
  844. data/src/cxx_supportlib/vendor-modified/boost/date_time/dst_transition_generators.hpp +2 -2
  845. data/src/cxx_supportlib/vendor-modified/boost/date_time/find_match.hpp +42 -0
  846. data/src/cxx_supportlib/vendor-modified/boost/date_time/format_date_parser.hpp +98 -98
  847. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_date.hpp +22 -14
  848. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_day.hpp +4 -4
  849. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration.hpp +44 -32
  850. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_duration_types.hpp +2 -2
  851. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_month.hpp +51 -23
  852. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_serialize.hpp +29 -27
  853. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_weekday.hpp +43 -9
  854. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/greg_year.hpp +3 -3
  855. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian/parsers.hpp +32 -13
  856. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.hpp +15 -17
  857. data/src/cxx_supportlib/vendor-modified/boost/date_time/gregorian_calendar.ipp +27 -22
  858. data/src/cxx_supportlib/vendor-modified/boost/date_time/int_adapter.hpp +57 -37
  859. data/src/cxx_supportlib/vendor-modified/boost/date_time/local_time/local_time_io.hpp +3 -0
  860. data/src/cxx_supportlib/vendor-modified/boost/date_time/locale_config.hpp +3 -3
  861. data/src/cxx_supportlib/vendor-modified/boost/date_time/period.hpp +44 -47
  862. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_formatter.hpp +34 -31
  863. data/src/cxx_supportlib/vendor-modified/boost/date_time/period_parser.hpp +27 -28
  864. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/date_duration_operators.hpp +8 -8
  865. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_config.hpp +13 -26
  866. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +4 -4
  867. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/ptime.hpp +22 -4
  868. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/time_serialize.hpp +28 -12
  869. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_formatter.hpp +1 -0
  870. data/src/cxx_supportlib/vendor-modified/boost/date_time/special_values_parser.hpp +0 -5
  871. data/src/cxx_supportlib/vendor-modified/boost/date_time/string_parse_tree.hpp +5 -3
  872. data/src/cxx_supportlib/vendor-modified/boost/date_time/strings_from_facet.hpp +4 -2
  873. data/src/cxx_supportlib/vendor-modified/boost/date_time/time.hpp +24 -3
  874. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +56 -44
  875. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_facet.hpp +8 -11
  876. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_parsing.hpp +3 -8
  877. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_resolution_traits.hpp +18 -18
  878. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_counted.hpp +65 -50
  879. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_system_split.hpp +43 -30
  880. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_base.hpp +1 -1
  881. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_zone_names.hpp +1 -1
  882. data/src/cxx_supportlib/vendor-modified/boost/date_time/tz_db_base.hpp +0 -1
  883. data/src/cxx_supportlib/vendor-modified/boost/date_time/wrapping_int.hpp +16 -15
  884. data/src/cxx_supportlib/vendor-modified/boost/date_time/year_month_day.hpp +7 -5
  885. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +3 -4
  886. data/src/cxx_supportlib/vendor-modified/boost/exception/current_exception_cast.hpp +10 -4
  887. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/clone_current_exception.hpp +10 -4
  888. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/error_info_impl.hpp +12 -7
  889. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/exception_ptr.hpp +63 -8
  890. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/is_output_streamable.hpp +9 -4
  891. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/object_hex_dump.hpp +9 -4
  892. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/shared_ptr.hpp +2 -2
  893. data/src/cxx_supportlib/vendor-modified/boost/exception/detail/type_info.hpp +9 -4
  894. data/src/cxx_supportlib/vendor-modified/boost/exception/diagnostic_information.hpp +15 -6
  895. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +19 -57
  896. data/src/cxx_supportlib/vendor-modified/boost/exception/get_error_info.hpp +9 -4
  897. data/src/cxx_supportlib/vendor-modified/boost/exception/info.hpp +11 -6
  898. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string.hpp +9 -4
  899. data/src/cxx_supportlib/vendor-modified/boost/exception/to_string_stub.hpp +9 -4
  900. data/src/cxx_supportlib/vendor-modified/boost/exception_ptr.hpp +2 -2
  901. data/src/cxx_supportlib/vendor-modified/boost/foreach.hpp +13 -6
  902. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +4 -12
  903. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +22 -4
  904. data/src/cxx_supportlib/vendor-modified/boost/integer.hpp +2 -2
  905. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_ct.hpp +1 -1
  906. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +30 -28
  907. data/src/cxx_supportlib/vendor-modified/boost/integer/extended_euclidean.hpp +83 -0
  908. data/src/cxx_supportlib/vendor-modified/boost/integer/integer_log2.hpp +6 -6
  909. data/src/cxx_supportlib/vendor-modified/boost/integer/mod_inverse.hpp +53 -0
  910. data/src/cxx_supportlib/vendor-modified/boost/integer/static_log2.hpp +2 -3
  911. data/src/cxx_supportlib/vendor-modified/boost/integer/static_min_max.hpp +1 -0
  912. data/src/cxx_supportlib/vendor-modified/boost/integer_traits.hpp +1 -1
  913. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avl_set.hpp +22 -22
  914. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree.hpp +11 -11
  915. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bs_set.hpp +22 -22
  916. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree.hpp +11 -11
  917. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +2 -2
  918. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/ebo_functor_holder.hpp +3 -3
  919. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/generic_hook.hpp +12 -12
  920. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hashtable_node.hpp +18 -9
  921. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/hook_traits.hpp +12 -4
  922. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/iterator.hpp +10 -10
  923. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/key_nodeptr_comp.hpp +1 -1
  924. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +15 -3
  925. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/math.hpp +7 -12
  926. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/mpl.hpp +1 -0
  927. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +13 -1
  928. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +23 -11
  929. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/workaround.hpp +6 -1
  930. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +13 -17
  931. data/src/cxx_supportlib/vendor-modified/boost/intrusive/intrusive_fwd.hpp +3 -0
  932. data/src/cxx_supportlib/vendor-modified/boost/intrusive/list.hpp +9 -9
  933. data/src/cxx_supportlib/vendor-modified/boost/intrusive/options.hpp +9 -1
  934. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pack_options.hpp +6 -0
  935. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_traits.hpp +14 -14
  936. data/src/cxx_supportlib/vendor-modified/boost/intrusive/priority_compare.hpp +2 -2
  937. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree.hpp +11 -11
  938. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +1 -1
  939. data/src/cxx_supportlib/vendor-modified/boost/intrusive/set.hpp +22 -22
  940. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sg_set.hpp +22 -22
  941. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree.hpp +11 -11
  942. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +11 -11
  943. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splay_set.hpp +22 -22
  944. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree.hpp +11 -11
  945. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap.hpp +93 -66
  946. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +17 -14
  947. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_set.hpp +67 -60
  948. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +9 -9
  949. data/src/cxx_supportlib/vendor-modified/boost/io/ios_state.hpp +361 -315
  950. data/src/cxx_supportlib/vendor-modified/boost/io_fwd.hpp +45 -49
  951. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/config_def.hpp +4 -4
  952. data/src/cxx_supportlib/vendor-modified/boost/iterator/detail/facade_iterator_category.hpp +3 -2
  953. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_adaptor.hpp +3 -3
  954. data/src/cxx_supportlib/vendor-modified/boost/iterator/iterator_facade.hpp +1 -1
  955. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  956. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +18 -13
  957. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +43 -43
  958. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +2 -2
  959. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +1 -1
  960. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  961. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -5
  962. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  963. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +1 -1
  964. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +1 -1
  965. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +1 -1
  966. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/c_regex_traits.cpp +2 -2
  967. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +10 -3
  968. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/instances.cpp +1 -1
  969. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/posix_api.cpp +7 -0
  970. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex.cpp +4 -2
  971. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/regex_traits_defaults.cpp +2 -2
  972. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/static_mutex.cpp +3 -1
  973. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wc_regex_traits.cpp +5 -5
  974. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/wide_posix_api.cpp +7 -0
  975. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/winstances.cpp +1 -1
  976. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once.cpp +0 -1
  977. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/once_atomic.cpp +4 -3
  978. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +12 -7
  979. data/src/cxx_supportlib/vendor-modified/boost/math/policies/policy.hpp +50 -52
  980. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +41 -7
  981. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +23 -3
  982. data/src/cxx_supportlib/vendor-modified/boost/math/tools/promotion.hpp +6 -6
  983. data/src/cxx_supportlib/vendor-modified/boost/math/tools/user.hpp +2 -2
  984. data/src/cxx_supportlib/vendor-modified/boost/memory_order.hpp +6 -12
  985. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +35 -26
  986. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +18 -12
  987. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +103 -318
  988. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge.hpp +437 -10
  989. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/merge_sort.hpp +68 -0
  990. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/set_difference.hpp +1 -1
  991. data/src/cxx_supportlib/vendor-modified/boost/move/algo/predicate.hpp +15 -0
  992. data/src/cxx_supportlib/vendor-modified/boost/move/detail/iterator_to_raw_pointer.hpp +3 -3
  993. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils_core.hpp +11 -6
  994. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +2 -1
  995. data/src/cxx_supportlib/vendor-modified/boost/move/detail/unique_ptr_meta_utils.hpp +1 -1
  996. data/src/cxx_supportlib/vendor-modified/boost/move/iterator.hpp +1 -1
  997. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +3 -3
  998. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/common_name_wknd.hpp +2 -2
  999. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/adl.hpp +1 -1
  1000. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/arrays.hpp +1 -1
  1001. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bcc.hpp +2 -2
  1002. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/bind.hpp +1 -1
  1003. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/compiler.hpp +2 -2
  1004. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ctps.hpp +1 -1
  1005. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/dtp.hpp +3 -3
  1006. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/forwarding.hpp +1 -1
  1007. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/integral.hpp +1 -1
  1008. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/operators.hpp +1 -1
  1009. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/overload_resolution.hpp +1 -1
  1010. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/preprocessor.hpp +1 -1
  1011. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/config/ttp.hpp +2 -2
  1012. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/count_impl.hpp +1 -1
  1013. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/fold_impl_body.hpp +3 -3
  1014. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/has_rebind.hpp +4 -4
  1015. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/integral_wrapper.hpp +1 -1
  1016. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/lambda_support.hpp +3 -3
  1017. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/nested_type_wknd.hpp +1 -1
  1018. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/size_impl.hpp +1 -1
  1019. data/src/cxx_supportlib/vendor-modified/boost/mpl/aux_/static_cast.hpp +1 -1
  1020. data/src/cxx_supportlib/vendor-modified/boost/mpl/has_xxx.hpp +2 -2
  1021. data/src/cxx_supportlib/vendor-modified/boost/mpl/if.hpp +1 -1
  1022. data/src/cxx_supportlib/vendor-modified/boost/mpl/integral_c.hpp +1 -1
  1023. data/src/cxx_supportlib/vendor-modified/boost/mpl/lower_bound.hpp +1 -1
  1024. data/src/cxx_supportlib/vendor-modified/boost/mpl/numeric_cast.hpp +1 -1
  1025. data/src/cxx_supportlib/vendor-modified/boost/mpl/upper_bound.hpp +1 -1
  1026. data/src/cxx_supportlib/vendor-modified/boost/mpl/vector/aux_/at.hpp +1 -1
  1027. data/src/cxx_supportlib/vendor-modified/boost/none.hpp +4 -3
  1028. data/src/cxx_supportlib/vendor-modified/boost/numeric/conversion/converter_policies.hpp +4 -3
  1029. data/src/cxx_supportlib/vendor-modified/boost/operators.hpp +31 -24
  1030. data/src/cxx_supportlib/vendor-modified/boost/optional/bad_optional_access.hpp +9 -0
  1031. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +1 -1
  1032. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +9 -4
  1033. data/src/cxx_supportlib/vendor-modified/boost/parameter/are_tagged_arguments.hpp +125 -0
  1034. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/always_true_predicate.hpp +42 -0
  1035. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/arg_list.hpp +1252 -358
  1036. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/as_lvalue.hpp +25 -0
  1037. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/augment_predicate.hpp +198 -0
  1038. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/cast.hpp +7 -136
  1039. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/default.hpp +90 -59
  1040. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/has_nested_template_fn.hpp +111 -0
  1041. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_maybe.hpp +42 -16
  1042. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_placeholder.hpp +64 -0
  1043. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/is_tagged_argument.hpp +95 -0
  1044. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/lambda_tag.hpp +16 -0
  1045. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/maybe.hpp +128 -97
  1046. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/name.hpp +93 -0
  1047. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/as_parameter_requirements.hpp +32 -0
  1048. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduce_tag.hpp +217 -0
  1049. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/deduced_item.hpp +34 -0
  1050. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/insert_tagged.hpp +23 -0
  1051. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/is_named_argument.hpp +43 -0
  1052. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/item.hpp +47 -0
  1053. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_arg_list.hpp +438 -0
  1054. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_deduced_items.hpp +53 -0
  1055. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_items.hpp +45 -0
  1056. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/make_parameter_spec_items.hpp +244 -0
  1057. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/parameter_requirements.hpp +25 -0
  1058. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/predicate.hpp +87 -0
  1059. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/satisfies.hpp +142 -0
  1060. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_deduced.hpp +59 -0
  1061. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg.hpp +30 -0
  1062. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_keyword_arg_ref.hpp +67 -0
  1063. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_template_keyword_arg.hpp +30 -0
  1064. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/tag_type.hpp +89 -0
  1065. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pack/unmatched_argument.hpp +41 -0
  1066. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parameter_requirements.hpp +7 -20
  1067. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/parenthesized_type.hpp +8 -31
  1068. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/argument_pack.hpp +91 -0
  1069. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/match.hpp +55 -0
  1070. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/pp_impl/unwrap_predicate.hpp +97 -0
  1071. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each.hpp +1638 -0
  1072. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_for_each_inc.hpp +1796 -0
  1073. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/binary_seq_to_args.hpp +65 -0
  1074. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/convert_binary_seq.hpp +57 -0
  1075. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/flatten.hpp +7 -110
  1076. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each.hpp +7 -98
  1077. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/for_each_pred.hpp +1029 -0
  1078. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/argument_specs.hpp +24 -0
  1079. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/arity_range.hpp +42 -0
  1080. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/flatten.hpp +143 -0
  1081. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/for_each.hpp +152 -0
  1082. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/forwarding_overloads.hpp +509 -0
  1083. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_cast.hpp +730 -0
  1084. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_layer.hpp +474 -0
  1085. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_dispatch_tuple.hpp +33 -0
  1086. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_forward_match.hpp +43 -0
  1087. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/function_name.hpp +152 -0
  1088. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/no_spec_overloads.hpp +331 -0
  1089. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_return_type.hpp +122 -0
  1090. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/parenthesized_type.hpp +34 -0
  1091. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/specification.hpp +109 -0
  1092. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/impl/split_args.hpp +71 -0
  1093. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/inc_binary_seq.hpp +78 -0
  1094. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_binary.hpp +31 -0
  1095. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/is_nullary.hpp +32 -0
  1096. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_begin.hpp +165 -0
  1097. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/no_perfect_forwarding_end.hpp +24 -0
  1098. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/nullptr.hpp +18 -0
  1099. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/overloads.hpp +92 -0
  1100. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/qualifier.hpp +88 -0
  1101. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_enum.hpp +26 -0
  1102. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/preprocessor/seq_merge.hpp +1807 -0
  1103. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/result_of0.hpp +46 -29
  1104. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/set.hpp +94 -42
  1105. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tag.hpp +149 -27
  1106. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument.hpp +865 -159
  1107. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/tagged_argument_fwd.hpp +38 -0
  1108. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/template_keyword.hpp +76 -34
  1109. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/unwrap_cv_reference.hpp +159 -76
  1110. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default.hpp +17 -0
  1111. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/use_default_tag.hpp +29 -0
  1112. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/void.hpp +25 -16
  1113. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/yesno.hpp +30 -14
  1114. data/src/cxx_supportlib/vendor-modified/boost/parameter/binding.hpp +154 -70
  1115. data/src/cxx_supportlib/vendor-modified/boost/parameter/compose.hpp +210 -0
  1116. data/src/cxx_supportlib/vendor-modified/boost/parameter/config.hpp +75 -6
  1117. data/src/cxx_supportlib/vendor-modified/boost/parameter/deduced.hpp +132 -0
  1118. data/src/cxx_supportlib/vendor-modified/boost/parameter/is_argument_pack.hpp +29 -0
  1119. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword.hpp +724 -102
  1120. data/src/cxx_supportlib/vendor-modified/boost/parameter/keyword_fwd.hpp +23 -0
  1121. data/src/cxx_supportlib/vendor-modified/boost/parameter/macros.hpp +205 -72
  1122. data/src/cxx_supportlib/vendor-modified/boost/parameter/match.hpp +37 -44
  1123. data/src/cxx_supportlib/vendor-modified/boost/parameter/name.hpp +100 -126
  1124. data/src/cxx_supportlib/vendor-modified/boost/parameter/nested_keyword.hpp +111 -0
  1125. data/src/cxx_supportlib/vendor-modified/boost/parameter/optional.hpp +67 -0
  1126. data/src/cxx_supportlib/vendor-modified/boost/parameter/parameters.hpp +553 -884
  1127. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor.hpp +156 -1016
  1128. data/src/cxx_supportlib/vendor-modified/boost/parameter/preprocessor_no_spec.hpp +74 -0
  1129. data/src/cxx_supportlib/vendor-modified/boost/parameter/required.hpp +66 -0
  1130. data/src/cxx_supportlib/vendor-modified/boost/parameter/template_keyword.hpp +87 -0
  1131. data/src/cxx_supportlib/vendor-modified/boost/parameter/value_type.hpp +152 -70
  1132. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  1133. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/alpha.h +17 -16
  1134. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +86 -32
  1135. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/blackfin.h +11 -10
  1136. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/convex.h +14 -13
  1137. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ia64.h +17 -16
  1138. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/m68k.h +28 -27
  1139. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/mips.h +21 -20
  1140. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/parisc.h +19 -18
  1141. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ppc.h +23 -22
  1142. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +10 -9
  1143. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/pyramid.h +8 -7
  1144. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/riscv.h +43 -0
  1145. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/rs6k.h +16 -15
  1146. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sparc.h +12 -11
  1147. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/superh.h +16 -15
  1148. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys370.h +10 -9
  1149. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/sys390.h +10 -9
  1150. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86.h +4 -4
  1151. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/32.h +26 -25
  1152. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/x86/64.h +16 -15
  1153. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/z.h +9 -8
  1154. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/borland.h +12 -11
  1155. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/clang.h +10 -9
  1156. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/comeau.h +10 -9
  1157. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +12 -11
  1158. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/diab.h +10 -9
  1159. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/digitalmars.h +10 -9
  1160. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/dignus.h +10 -9
  1161. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/edg.h +10 -9
  1162. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ekopath.h +10 -9
  1163. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc.h +11 -10
  1164. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/gcc_xml.h +9 -8
  1165. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/greenhills.h +12 -11
  1166. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/hp_acc.h +10 -9
  1167. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/iar.h +10 -9
  1168. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/ibm.h +15 -14
  1169. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/intel.h +18 -17
  1170. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/kai.h +10 -9
  1171. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/llvm.h +9 -8
  1172. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metaware.h +9 -8
  1173. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/metrowerks.h +14 -13
  1174. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/microtec.h +9 -8
  1175. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/mpw.h +12 -11
  1176. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +10 -9
  1177. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/palm.h +10 -9
  1178. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/pgi.h +10 -9
  1179. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sgi_mipspro.h +12 -11
  1180. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/sunpro.h +14 -13
  1181. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/tendra.h +9 -8
  1182. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/visualc.h +13 -12
  1183. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/watcom.h +10 -9
  1184. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd.h +95 -46
  1185. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm.h +21 -19
  1186. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/arm/versions.h +16 -10
  1187. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc.h +21 -19
  1188. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/ppc/versions.h +27 -21
  1189. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86.h +39 -37
  1190. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86/versions.h +73 -67
  1191. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd.h +25 -23
  1192. data/src/cxx_supportlib/vendor-modified/boost/predef/hardware/simd/x86_amd/versions.h +24 -19
  1193. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +11 -10
  1194. data/src/cxx_supportlib/vendor-modified/boost/predef/language/objc.h +9 -8
  1195. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdc.h +10 -9
  1196. data/src/cxx_supportlib/vendor-modified/boost/predef/language/stdcpp.h +39 -32
  1197. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/cloudabi.h +10 -9
  1198. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/gnu.h +12 -11
  1199. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/uc.h +10 -9
  1200. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/vms.h +9 -8
  1201. data/src/cxx_supportlib/vendor-modified/boost/predef/library/c/zos.h +10 -9
  1202. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/cxx.h +10 -9
  1203. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/dinkumware.h +11 -10
  1204. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/libcomo.h +10 -9
  1205. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/modena.h +10 -9
  1206. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/msl.h +12 -11
  1207. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/roguewave.h +11 -10
  1208. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/sgi.h +10 -9
  1209. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stdcpp3.h +12 -11
  1210. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/stlport.h +13 -12
  1211. data/src/cxx_supportlib/vendor-modified/boost/predef/library/std/vacpp.h +9 -8
  1212. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +97 -35
  1213. data/src/cxx_supportlib/vendor-modified/boost/predef/os.h +0 -1
  1214. data/src/cxx_supportlib/vendor-modified/boost/predef/os/aix.h +14 -13
  1215. data/src/cxx_supportlib/vendor-modified/boost/predef/os/amigaos.h +10 -9
  1216. data/src/cxx_supportlib/vendor-modified/boost/predef/os/beos.h +9 -8
  1217. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd.h +22 -23
  1218. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/bsdi.h +9 -8
  1219. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/dragonfly.h +9 -8
  1220. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/free.h +10 -9
  1221. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/net.h +16 -15
  1222. data/src/cxx_supportlib/vendor-modified/boost/predef/os/bsd/open.h +59 -58
  1223. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +10 -9
  1224. data/src/cxx_supportlib/vendor-modified/boost/predef/os/haiku.h +9 -8
  1225. data/src/cxx_supportlib/vendor-modified/boost/predef/os/hpux.h +11 -10
  1226. data/src/cxx_supportlib/vendor-modified/boost/predef/os/ios.h +12 -11
  1227. data/src/cxx_supportlib/vendor-modified/boost/predef/os/irix.h +10 -9
  1228. data/src/cxx_supportlib/vendor-modified/boost/predef/os/linux.h +14 -10
  1229. data/src/cxx_supportlib/vendor-modified/boost/predef/os/macos.h +14 -13
  1230. data/src/cxx_supportlib/vendor-modified/boost/predef/os/os400.h +9 -8
  1231. data/src/cxx_supportlib/vendor-modified/boost/predef/os/qnxnto.h +12 -11
  1232. data/src/cxx_supportlib/vendor-modified/boost/predef/os/solaris.h +10 -9
  1233. data/src/cxx_supportlib/vendor-modified/boost/predef/os/unix.h +24 -22
  1234. data/src/cxx_supportlib/vendor-modified/boost/predef/os/vms.h +11 -10
  1235. data/src/cxx_supportlib/vendor-modified/boost/predef/os/windows.h +16 -15
  1236. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +12 -11
  1237. data/src/cxx_supportlib/vendor-modified/boost/predef/other/workaround.h +22 -14
  1238. data/src/cxx_supportlib/vendor-modified/boost/predef/platform.h +1 -0
  1239. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/android.h +44 -0
  1240. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/cloudabi.h +9 -8
  1241. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/ios.h +14 -9
  1242. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw.h +12 -11
  1243. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw32.h +10 -9
  1244. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/mingw64.h +10 -9
  1245. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_desktop.h +10 -9
  1246. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_phone.h +9 -8
  1247. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_runtime.h +10 -9
  1248. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_server.h +9 -8
  1249. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_store.h +10 -9
  1250. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_system.h +9 -8
  1251. data/src/cxx_supportlib/vendor-modified/boost/predef/platform/windows_uwp.h +12 -11
  1252. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  1253. data/src/cxx_supportlib/vendor-modified/boost/predef/version_number.h +16 -14
  1254. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/detail/get_data.hpp +20 -20
  1255. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_list.hpp +7 -7
  1256. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_seq.hpp +7 -7
  1257. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/array/to_tuple.hpp +7 -7
  1258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +2 -2
  1259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities.hpp +2 -0
  1260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/check_empty.hpp +19 -0
  1261. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/detail/is_empty.hpp +3 -3
  1262. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/is_empty_variadic.hpp +28 -1
  1263. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/facilities/va_opt.hpp +34 -0
  1264. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_array.hpp +16 -16
  1265. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/list/to_tuple.hpp +14 -14
  1266. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/repetition/for.hpp +7 -7
  1267. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/binary_transform.hpp +3 -3
  1268. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/detail/is_empty.hpp +11 -11
  1269. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each.hpp +27 -27
  1270. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/for_each_i.hpp +28 -28
  1271. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/replace.hpp +7 -7
  1272. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/seq/rest_n.hpp +9 -9
  1273. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/detail/is_single_return.hpp +3 -3
  1274. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/elem.hpp +4 -4
  1275. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/insert.hpp +2 -2
  1276. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_back.hpp +16 -16
  1277. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/pop_front.hpp +16 -16
  1278. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_back.hpp +1 -1
  1279. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/push_front.hpp +1 -1
  1280. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/rem.hpp +10 -10
  1281. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/remove.hpp +16 -16
  1282. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/replace.hpp +2 -2
  1283. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/reverse.hpp +2 -2
  1284. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_list.hpp +2 -2
  1285. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/tuple/to_seq.hpp +2 -2
  1286. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic.hpp +1 -0
  1287. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/has_opt.hpp +39 -0
  1288. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/detail/is_single_return.hpp +3 -3
  1289. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/variadic/has_opt.hpp +28 -0
  1290. data/src/cxx_supportlib/vendor-modified/boost/random/detail/integer_log2.hpp +1 -1
  1291. data/src/cxx_supportlib/vendor-modified/boost/random/discrete_distribution.hpp +4 -0
  1292. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +0 -6
  1293. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +4 -10
  1294. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  1295. data/src/cxx_supportlib/vendor-modified/boost/range/config.hpp +1 -1
  1296. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +4 -10
  1297. data/src/cxx_supportlib/vendor-modified/boost/range/iterator_range_core.hpp +0 -32
  1298. data/src/cxx_supportlib/vendor-modified/boost/range/rbegin.hpp +0 -13
  1299. data/src/cxx_supportlib/vendor-modified/boost/range/rend.hpp +0 -13
  1300. data/src/cxx_supportlib/vendor-modified/boost/range/size.hpp +1 -1
  1301. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +33 -7
  1302. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -2
  1303. data/src/cxx_supportlib/vendor-modified/boost/regex/config/borland.hpp +1 -1
  1304. data/src/cxx_supportlib/vendor-modified/boost/regex/pattern_except.hpp +4 -1
  1305. data/src/cxx_supportlib/vendor-modified/boost/regex/pending/object_cache.hpp +7 -0
  1306. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +17 -6
  1307. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +27 -5
  1308. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +36 -15
  1309. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cpp_regex_traits.hpp +4 -4
  1310. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/cregex.hpp +1 -1
  1311. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +105 -0
  1312. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/indexed_bit_flag.hpp +54 -0
  1313. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +1 -1
  1314. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +13 -1
  1315. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +1 -1
  1316. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +26 -16
  1317. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +16 -6
  1318. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +11 -11
  1319. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_recursive.hpp +6 -6
  1320. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +7 -0
  1321. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +2 -0
  1322. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +7 -7
  1323. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits.hpp +1 -1
  1324. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +3 -3
  1325. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/sub_match.hpp +1 -1
  1326. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +1 -1
  1327. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +3 -3
  1328. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +92 -388
  1329. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/bad_weak_ptr.hpp +5 -5
  1330. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count.hpp +8 -4
  1331. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc.hpp +7 -0
  1332. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_atomic.hpp +63 -0
  1333. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp +11 -0
  1334. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_nt.hpp +7 -0
  1335. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_pt.hpp +7 -0
  1336. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_spin.hpp +7 -0
  1337. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_std_atomic.hpp +8 -1
  1338. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_sync.hpp +13 -2
  1339. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +6 -6
  1340. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_sp_deleter.hpp +3 -3
  1341. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/shared_count.hpp +87 -47
  1342. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_convertible.hpp +1 -1
  1343. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base.hpp +12 -16
  1344. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +13 -3
  1345. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +10 -3
  1346. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +13 -3
  1347. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp +148 -0
  1348. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +13 -3
  1349. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +13 -3
  1350. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +13 -3
  1351. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +13 -3
  1352. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +13 -3
  1353. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +25 -16
  1354. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +16 -8
  1355. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +14 -4
  1356. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +10 -3
  1357. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +25 -17
  1358. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +10 -3
  1359. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +13 -3
  1360. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +23 -26
  1361. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_gcc_intrinsics.hpp +27 -0
  1362. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync_intrinsics.hpp +69 -0
  1363. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_pause.hpp +51 -0
  1364. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_thread_sleep.hpp +104 -0
  1365. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_typeinfo_.hpp +58 -0
  1366. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock.hpp +7 -9
  1367. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_arm.hpp +7 -0
  1368. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_gcc_atomic.hpp +85 -0
  1369. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_nt.hpp +7 -0
  1370. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_pt.hpp +7 -0
  1371. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_std_atomic.hpp +13 -5
  1372. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/spinlock_sync.hpp +8 -1
  1373. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -146
  1374. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/intrusive_ptr.hpp +47 -1
  1375. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_array.hpp +22 -22
  1376. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/make_shared_object.hpp +1 -1
  1377. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_array.hpp +1 -1
  1378. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/scoped_ptr.hpp +1 -1
  1379. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_array.hpp +3 -3
  1380. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/shared_ptr.hpp +58 -23
  1381. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/weak_ptr.hpp +79 -8
  1382. data/src/cxx_supportlib/vendor-modified/boost/static_assert.hpp +2 -2
  1383. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +5 -11
  1384. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +57 -16
  1385. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +32 -16
  1386. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +1 -1
  1387. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_adaptor.hpp +1 -1
  1388. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/deque_base.hpp +1 -1
  1389. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_deque_base.hpp +9 -21
  1390. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/detail/sync_queue_base.hpp +9 -21
  1391. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_adaptor.hpp +1 -1
  1392. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_base.hpp +1 -1
  1393. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/queue_op_status.hpp +3 -1
  1394. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_bounded_queue.hpp +1 -1
  1395. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_deque.hpp +3 -3
  1396. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_priority_queue.hpp +4 -4
  1397. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_queue.hpp +3 -3
  1398. data/src/cxx_supportlib/vendor-modified/boost/thread/concurrent_queues/sync_timed_queue.hpp +80 -14
  1399. data/src/cxx_supportlib/vendor-modified/boost/thread/csbl/queue.hpp +2 -1
  1400. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +11 -2
  1401. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/invoke.hpp +16 -17
  1402. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/platform_time.hpp +8 -8
  1403. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +4 -11
  1404. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp.orig +841 -0
  1405. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +3 -0
  1406. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor.hpp +2 -0
  1407. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/executor_adaptor.hpp +2 -0
  1408. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/generic_executor_ref.hpp +2 -0
  1409. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/inline_executor.hpp +8 -0
  1410. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/loop_executor.hpp +4 -0
  1411. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduled_thread_pool.hpp +4 -0
  1412. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduler.hpp +2 -0
  1413. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/scheduling_adaptor.hpp +3 -0
  1414. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor.hpp +4 -0
  1415. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/serial_executor_cont.hpp +9 -2
  1416. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/thread_executor.hpp +6 -0
  1417. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/work.hpp +3 -1
  1418. data/src/cxx_supportlib/vendor-modified/boost/thread/experimental/parallel/v2/task_region.hpp +6 -2
  1419. data/src/cxx_supportlib/vendor-modified/boost/thread/externally_locked.hpp +1 -0
  1420. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +2 -1
  1421. data/src/cxx_supportlib/vendor-modified/boost/thread/futures/wait_for_any.hpp +1 -0
  1422. data/src/cxx_supportlib/vendor-modified/boost/thread/interruption.hpp +22 -0
  1423. data/src/cxx_supportlib/vendor-modified/boost/thread/once.hpp.orig +54 -0
  1424. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_lockable.hpp +7 -2
  1425. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable.hpp +16 -12
  1426. data/src/cxx_supportlib/vendor-modified/boost/thread/poly_shared_lockable_adapter.hpp +3 -4
  1427. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +18 -24
  1428. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +6 -13
  1429. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +11 -37
  1430. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once.hpp +29 -28
  1431. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/once_atomic.hpp +1 -1
  1432. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_helpers.hpp +163 -18
  1433. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +1 -69
  1434. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +19 -19
  1435. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/shared_mutex.hpp +1 -1
  1436. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +9 -6
  1437. data/src/cxx_supportlib/vendor-modified/boost/thread/tss.hpp +23 -41
  1438. data/src/cxx_supportlib/vendor-modified/boost/thread/user_scheduler.hpp +3 -0
  1439. data/src/cxx_supportlib/vendor-modified/boost/thread/v2/shared_mutex.hpp +1 -1
  1440. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +138 -59
  1441. data/src/cxx_supportlib/vendor-modified/boost/tuple/detail/tuple_basic.hpp +15 -11
  1442. data/src/cxx_supportlib/vendor-modified/boost/tuple/tuple.hpp +51 -0
  1443. data/src/cxx_supportlib/vendor-modified/boost/type_index.hpp +1 -1
  1444. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +1 -1
  1445. data/src/cxx_supportlib/vendor-modified/boost/type_index/type_index_facade.hpp +1 -1
  1446. data/src/cxx_supportlib/vendor-modified/boost/type_traits/add_pointer.hpp +1 -1
  1447. data/src/cxx_supportlib/vendor-modified/boost/type_traits/aligned_storage.hpp +1 -1
  1448. data/src/cxx_supportlib/vendor-modified/boost/type_traits/alignment_of.hpp +3 -3
  1449. data/src/cxx_supportlib/vendor-modified/boost/type_traits/conjunction.hpp +40 -0
  1450. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_cv_ref.hpp +31 -0
  1451. data/src/cxx_supportlib/vendor-modified/boost/type_traits/copy_reference.hpp +35 -0
  1452. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +25 -4
  1453. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_binary_operator.hpp +6 -6
  1454. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +6 -6
  1455. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +6 -6
  1456. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +3 -3
  1457. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +102 -6
  1458. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_ptr_tester.hpp +415 -255
  1459. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -1
  1460. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp +1345 -1542
  1461. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +4 -4
  1462. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +143 -28
  1463. data/src/cxx_supportlib/vendor-modified/boost/type_traits/disjunction.hpp +40 -0
  1464. data/src/cxx_supportlib/vendor-modified/boost/type_traits/extent.hpp +2 -2
  1465. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +6 -6
  1466. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +6 -6
  1467. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_nothrow_copy.hpp +1 -1
  1468. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +6 -6
  1469. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +1 -1
  1470. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_promotion.hpp +2 -2
  1471. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +1 -1
  1472. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_array.hpp +2 -2
  1473. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_base_and_derived.hpp +2 -2
  1474. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_bounded_array.hpp +42 -0
  1475. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +1 -1
  1476. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_compound.hpp +1 -1
  1477. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_const.hpp +1 -1
  1478. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_constructible.hpp +1 -1
  1479. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_convertible.hpp +3 -3
  1480. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_default_constructible.hpp +1 -1
  1481. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_destructible.hpp +1 -1
  1482. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_empty.hpp +3 -3
  1483. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_enum.hpp +4 -4
  1484. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_fundamental.hpp +1 -1
  1485. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_integral.hpp +3 -3
  1486. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_lvalue_reference.hpp +1 -1
  1487. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_pointer.hpp +1 -1
  1488. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_pointer.hpp +1 -1
  1489. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_same.hpp +1 -1
  1490. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_scoped_enum.hpp +26 -0
  1491. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_signed.hpp +2 -2
  1492. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_trivially_copyable.hpp +27 -0
  1493. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unbounded_array.hpp +41 -0
  1494. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unscoped_enum.hpp +25 -0
  1495. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_unsigned.hpp +2 -2
  1496. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +2 -2
  1497. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_volatile.hpp +1 -1
  1498. data/src/cxx_supportlib/vendor-modified/boost/type_traits/negation.hpp +23 -0
  1499. data/src/cxx_supportlib/vendor-modified/boost/type_traits/rank.hpp +4 -4
  1500. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_all_extents.hpp +1 -1
  1501. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_const.hpp +1 -1
  1502. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_cv.hpp +1 -1
  1503. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_extent.hpp +1 -1
  1504. data/src/cxx_supportlib/vendor-modified/boost/type_traits/remove_volatile.hpp +1 -1
  1505. data/src/cxx_supportlib/vendor-modified/boost/type_traits/type_with_alignment.hpp +2 -2
  1506. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +1 -0
  1507. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +1 -0
  1508. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/result_of_iterate.hpp +3 -3
  1509. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +3 -42
  1510. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +4 -43
  1511. data/src/cxx_supportlib/vendor-modified/boost/utility/value_init.hpp +29 -67
  1512. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  1513. data/src/nginx_module/Configuration.c +3 -3
  1514. data/src/nginx_module/config +2 -0
  1515. data/src/nginx_module/ngx_http_passenger_module.c +2 -2
  1516. data/src/ruby_supportlib/phusion_passenger.rb +1 -1
  1517. data/src/ruby_supportlib/phusion_passenger/admin_tools.rb +1 -1
  1518. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +4 -1
  1519. data/src/ruby_supportlib/phusion_passenger/common_library.rb +2 -0
  1520. data/src/ruby_supportlib/phusion_passenger/config/download_agent_command.rb +1 -1
  1521. data/src/ruby_supportlib/phusion_passenger/config/download_nginx_engine_command.rb +1 -1
  1522. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -1
  1523. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +17 -9
  1524. data/src/ruby_supportlib/phusion_passenger/platform_info/apache.rb +1 -3
  1525. data/src/ruby_supportlib/phusion_passenger/platform_info/cxx_portability.rb +3 -0
  1526. data/src/ruby_supportlib/phusion_passenger/standalone/start_command.rb +1 -1
  1527. metadata +302 -70
  1528. data/src/cxx_supportlib/vendor-modified/boost/asio/datagram_socket_service.hpp +0 -468
  1529. data/src/cxx_supportlib/vendor-modified/boost/asio/deadline_timer_service.hpp +0 -175
  1530. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental.hpp +0 -22
  1531. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/co_spawn.hpp +0 -228
  1532. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/detached.hpp +0 -67
  1533. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/co_spawn.hpp +0 -878
  1534. data/src/cxx_supportlib/vendor-modified/boost/asio/experimental/impl/detached.hpp +0 -93
  1535. data/src/cxx_supportlib/vendor-modified/boost/asio/handler_type.hpp +0 -52
  1536. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/resolver_service.hpp +0 -202
  1537. data/src/cxx_supportlib/vendor-modified/boost/asio/posix/stream_descriptor_service.hpp +0 -281
  1538. data/src/cxx_supportlib/vendor-modified/boost/asio/raw_socket_service.hpp +0 -468
  1539. data/src/cxx_supportlib/vendor-modified/boost/asio/seq_packet_socket_service.hpp +0 -418
  1540. data/src/cxx_supportlib/vendor-modified/boost/asio/serial_port_service.hpp +0 -251
  1541. data/src/cxx_supportlib/vendor-modified/boost/asio/signal_set_service.hpp +0 -144
  1542. data/src/cxx_supportlib/vendor-modified/boost/asio/socket_acceptor_service.hpp +0 -374
  1543. data/src/cxx_supportlib/vendor-modified/boost/asio/stream_socket_service.hpp +0 -414
  1544. data/src/cxx_supportlib/vendor-modified/boost/asio/waitable_timer_service.hpp +0 -212
  1545. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/basic_handle.hpp +0 -275
  1546. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/object_handle_service.hpp +0 -185
  1547. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/random_access_handle_service.hpp +0 -216
  1548. data/src/cxx_supportlib/vendor-modified/boost/asio/windows/stream_handle_service.hpp +0 -212
  1549. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/atomic_flag.hpp +0 -71
  1550. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_arm.hpp +0 -39
  1551. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_ppc.hpp +0 -37
  1552. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/caps_gcc_x86.hpp +0 -40
  1553. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/lockpool.hpp +0 -51
  1554. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations.hpp +0 -24
  1555. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_fwd.hpp +0 -35
  1556. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/operations_lockfree.hpp +0 -30
  1557. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_emulated.hpp +0 -162
  1558. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_atomic.hpp +0 -392
  1559. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86.hpp +0 -563
  1560. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/storage_type.hpp +0 -207
  1561. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +0 -89
  1562. data/src/cxx_supportlib/vendor-modified/boost/detail/atomic_count.hpp +0 -21
  1563. data/src/cxx_supportlib/vendor-modified/boost/detail/endian.hpp +0 -11
  1564. data/src/cxx_supportlib/vendor-modified/boost/detail/iterator.hpp +0 -39
  1565. data/src/cxx_supportlib/vendor-modified/boost/detail/sp_typeinfo.hpp +0 -36
  1566. data/src/cxx_supportlib/vendor-modified/boost/parameter/aux_/overloads.hpp +0 -88
  1567. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +0 -28
  1568. data/src/cxx_supportlib/vendor-modified/boost/predef/os/android.h +0 -45
  1569. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/atomic_count_solaris.hpp +0 -59
  1570. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +0 -151
  1571. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +0 -161
  1572. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +0 -116
  1573. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_has_sync.hpp +0 -69
@@ -0,0 +1,1909 @@
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) 2020 Andrey Semashev
7
+ */
8
+ /*!
9
+ * \file atomic/detail/core_arch_ops_gcc_aarch64.hpp
10
+ *
11
+ * This header contains implementation of the \c core_arch_operations template.
12
+ */
13
+
14
+ #ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_
15
+ #define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_
16
+
17
+ #include <cstddef>
18
+ #include <boost/cstdint.hpp>
19
+ #include <boost/memory_order.hpp>
20
+ #include <boost/atomic/detail/config.hpp>
21
+ #include <boost/atomic/detail/storage_traits.hpp>
22
+ #include <boost/atomic/detail/core_arch_operations_fwd.hpp>
23
+ #include <boost/atomic/detail/capabilities.hpp>
24
+ #include <boost/atomic/detail/ops_gcc_aarch64_common.hpp>
25
+ #include <boost/atomic/detail/header.hpp>
26
+
27
+ #ifdef BOOST_HAS_PRAGMA_ONCE
28
+ #pragma once
29
+ #endif
30
+
31
+ namespace boost {
32
+ namespace atomics {
33
+ namespace detail {
34
+
35
+ struct core_arch_operations_gcc_aarch64_base
36
+ {
37
+ static BOOST_CONSTEXPR_OR_CONST bool full_cas_based = false;
38
+ static BOOST_CONSTEXPR_OR_CONST bool is_always_lock_free = true;
39
+ };
40
+
41
+ // Due to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63359 we have to explicitly specify size of the registers
42
+ // to use in the asm blocks below. Use %w prefix for the 32-bit registers and %x for 64-bit ones.
43
+
44
+ // A note about compare_exchange implementations. Since failure_order must never include release semantics and
45
+ // must not be stronger than success_order, we can always use success_order to select instructions. Thus, when
46
+ // CAS fails, only the acquire semantics of success_order is applied, which may be stronger than failure_order.
47
+
48
+ template< bool Signed, bool Interprocess >
49
+ struct core_arch_operations< 1u, Signed, Interprocess > :
50
+ public core_arch_operations_gcc_aarch64_base
51
+ {
52
+ typedef typename storage_traits< 1u >::type storage_type;
53
+
54
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u;
55
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u;
56
+ static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
57
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
58
+
59
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
60
+ {
61
+ if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
62
+ {
63
+ __asm__ __volatile__
64
+ (
65
+ "stlrb %w[value], %[storage]\n\t"
66
+ : [storage] "=Q" (storage)
67
+ : [value] "r" (v)
68
+ : "memory"
69
+ );
70
+ }
71
+ else
72
+ {
73
+ storage = v;
74
+ }
75
+ }
76
+
77
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
78
+ {
79
+ storage_type v;
80
+ if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
81
+ {
82
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC)
83
+ if (order == memory_order_consume || order == memory_order_acquire)
84
+ {
85
+ __asm__ __volatile__
86
+ (
87
+ "ldaprb %w[value], %[storage]\n\t"
88
+ : [value] "=r" (v)
89
+ : [storage] "Q" (storage)
90
+ : "memory"
91
+ );
92
+ }
93
+ else
94
+ #endif
95
+ {
96
+ __asm__ __volatile__
97
+ (
98
+ "ldarb %w[value], %[storage]\n\t"
99
+ : [value] "=r" (v)
100
+ : [storage] "Q" (storage)
101
+ : "memory"
102
+ );
103
+ }
104
+ }
105
+ else
106
+ {
107
+ v = storage;
108
+ }
109
+
110
+ return v;
111
+ }
112
+
113
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
114
+ {
115
+ storage_type original;
116
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
117
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
118
+ __asm__ __volatile__\
119
+ (\
120
+ "swp" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\
121
+ : [storage] "+Q" (storage), [original] "=r" (original)\
122
+ : [value] "r" (v)\
123
+ : "memory"\
124
+ );
125
+ #else
126
+ uint32_t tmp;
127
+
128
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
129
+ __asm__ __volatile__\
130
+ (\
131
+ "1:\n\t"\
132
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
133
+ "st" st_mo "xrb %w[tmp], %w[value], %[storage]\n\t"\
134
+ "cbnz %w[tmp], 1b\n\t"\
135
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\
136
+ : [value] "r" (v)\
137
+ : "memory"\
138
+ );
139
+ #endif
140
+
141
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
142
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
143
+
144
+ return original;
145
+ }
146
+
147
+ static BOOST_FORCEINLINE bool compare_exchange_weak(
148
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
149
+ {
150
+ storage_type original;
151
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
152
+ original = expected;
153
+
154
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
155
+ __asm__ __volatile__\
156
+ (\
157
+ "cas" ld_mo st_mo "b %w[original], %w[desired], %[storage]\n\t"\
158
+ : [storage] "+Q" (storage), [original] "+r" (original)\
159
+ : [desired] "r" (desired)\
160
+ : "memory"\
161
+ );
162
+
163
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
164
+ bool success = original == expected;
165
+ #else
166
+ bool success;
167
+
168
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
169
+ __asm__ __volatile__\
170
+ (\
171
+ "uxtb %w[expected], %w[expected]\n\t"\
172
+ "mov %w[success], #0\n\t"\
173
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
174
+ "cmp %w[original], %w[expected]\n\t"\
175
+ "b.ne 1f\n\t"\
176
+ "st" st_mo "xrb %w[success], %w[desired], %[storage]\n\t"\
177
+ "eor %w[success], %w[success], #1\n\t"\
178
+ "1:\n\t"\
179
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
180
+ : [desired] "r" (desired), [expected] "r" (expected)\
181
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
182
+ );
183
+
184
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
185
+ #endif
186
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
187
+
188
+ expected = original;
189
+ return success;
190
+ }
191
+
192
+ static BOOST_FORCEINLINE bool compare_exchange_strong(
193
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
194
+ {
195
+ storage_type original;
196
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
197
+ original = expected;
198
+
199
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
200
+ __asm__ __volatile__\
201
+ (\
202
+ "cas" ld_mo st_mo "b %w[original], %w[desired], %[storage]\n\t"\
203
+ : [storage] "+Q" (storage), [original] "+r" (original)\
204
+ : [desired] "r" (desired)\
205
+ : "memory"\
206
+ );
207
+
208
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
209
+ bool success = original == expected;
210
+ #else
211
+ bool success;
212
+
213
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
214
+ __asm__ __volatile__\
215
+ (\
216
+ "uxtb %w[expected], %w[expected]\n\t"\
217
+ "1:\n\t"\
218
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
219
+ "cmp %w[original], %w[expected]\n\t"\
220
+ "b.ne 2f\n\t"\
221
+ "st" st_mo "xrb %w[success], %w[desired], %[storage]\n\t"\
222
+ "cbnz %w[success], 1b\n\t"\
223
+ "2:\n\t"\
224
+ "cset %w[success], eq\n\t"\
225
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
226
+ : [desired] "r" (desired), [expected] "r" (expected)\
227
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
228
+ );
229
+
230
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
231
+ #endif
232
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
233
+
234
+ expected = original;
235
+ return success;
236
+ }
237
+
238
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
239
+ {
240
+ storage_type original;
241
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
242
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
243
+ __asm__ __volatile__\
244
+ (\
245
+ "ldadd" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\
246
+ : [storage] "+Q" (storage), [original] "=r" (original)\
247
+ : [value] "r" (v)\
248
+ : "memory"\
249
+ );
250
+ #else
251
+ storage_type result;
252
+ uint32_t tmp;
253
+
254
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
255
+ __asm__ __volatile__\
256
+ (\
257
+ "1:\n\t"\
258
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
259
+ "add %w[result], %w[original], %w[value]\n\t"\
260
+ "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\
261
+ "cbnz %w[tmp], 1b\n\t"\
262
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
263
+ : [value] "Ir" (v)\
264
+ : "memory"\
265
+ );
266
+ #endif
267
+
268
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
269
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
270
+
271
+ return original;
272
+ }
273
+
274
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
275
+ {
276
+ storage_type original;
277
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
278
+ v = -v;
279
+
280
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
281
+ __asm__ __volatile__\
282
+ (\
283
+ "ldadd" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\
284
+ : [storage] "+Q" (storage), [original] "=r" (original)\
285
+ : [value] "r" (v)\
286
+ : "memory"\
287
+ );
288
+
289
+ #else
290
+ storage_type result;
291
+ uint32_t tmp;
292
+
293
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
294
+ __asm__ __volatile__\
295
+ (\
296
+ "1:\n\t"\
297
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
298
+ "sub %w[result], %w[original], %w[value]\n\t"\
299
+ "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\
300
+ "cbnz %w[tmp], 1b\n\t"\
301
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
302
+ : [value] "Ir" (v)\
303
+ : "memory"\
304
+ );
305
+ #endif
306
+
307
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
308
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
309
+
310
+ return original;
311
+ }
312
+
313
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
314
+ {
315
+ storage_type original;
316
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
317
+ v = ~v;
318
+
319
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
320
+ __asm__ __volatile__\
321
+ (\
322
+ "ldclr" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\
323
+ : [storage] "+Q" (storage), [original] "=r" (original)\
324
+ : [value] "r" (v)\
325
+ : "memory"\
326
+ );
327
+ #else
328
+ storage_type result;
329
+ uint32_t tmp;
330
+
331
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
332
+ __asm__ __volatile__\
333
+ (\
334
+ "1:\n\t"\
335
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
336
+ "and %w[result], %w[original], %w[value]\n\t"\
337
+ "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\
338
+ "cbnz %w[tmp], 1b\n\t"\
339
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
340
+ : [value] "Kr" (v)\
341
+ : "memory"\
342
+ );
343
+ #endif
344
+
345
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
346
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
347
+
348
+ return original;
349
+ }
350
+
351
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
352
+ {
353
+ storage_type original;
354
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
355
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
356
+ __asm__ __volatile__\
357
+ (\
358
+ "ldset" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\
359
+ : [storage] "+Q" (storage), [original] "=r" (original)\
360
+ : [value] "r" (v)\
361
+ : "memory"\
362
+ );
363
+ #else
364
+ storage_type result;
365
+ uint32_t tmp;
366
+
367
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
368
+ __asm__ __volatile__\
369
+ (\
370
+ "1:\n\t"\
371
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
372
+ "orr %w[result], %w[original], %w[value]\n\t"\
373
+ "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\
374
+ "cbnz %w[tmp], 1b\n\t"\
375
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
376
+ : [value] "Kr" (v)\
377
+ : "memory"\
378
+ );
379
+ #endif
380
+
381
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
382
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
383
+
384
+ return original;
385
+ }
386
+
387
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
388
+ {
389
+ storage_type original;
390
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
391
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
392
+ __asm__ __volatile__\
393
+ (\
394
+ "ldeor" ld_mo st_mo "b %w[value], %w[original], %[storage]\n\t"\
395
+ : [storage] "+Q" (storage), [original] "=r" (original)\
396
+ : [value] "r" (v)\
397
+ : "memory"\
398
+ );
399
+ #else
400
+ storage_type result;
401
+ uint32_t tmp;
402
+
403
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
404
+ __asm__ __volatile__\
405
+ (\
406
+ "1:\n\t"\
407
+ "ld" ld_mo "xrb %w[original], %[storage]\n\t"\
408
+ "eor %w[result], %w[original], %w[value]\n\t"\
409
+ "st" st_mo "xrb %w[tmp], %w[result], %[storage]\n\t"\
410
+ "cbnz %w[tmp], 1b\n\t"\
411
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
412
+ : [value] "Kr" (v)\
413
+ : "memory"\
414
+ );
415
+ #endif
416
+
417
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
418
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
419
+
420
+ return original;
421
+ }
422
+
423
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
424
+ {
425
+ return !!exchange(storage, (storage_type)1, order);
426
+ }
427
+
428
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
429
+ {
430
+ store(storage, (storage_type)0, order);
431
+ }
432
+ };
433
+
434
+ template< bool Signed, bool Interprocess >
435
+ struct core_arch_operations< 2u, Signed, Interprocess > :
436
+ public core_arch_operations_gcc_aarch64_base
437
+ {
438
+ typedef typename storage_traits< 2u >::type storage_type;
439
+
440
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u;
441
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u;
442
+ static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
443
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
444
+
445
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
446
+ {
447
+ if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
448
+ {
449
+ __asm__ __volatile__
450
+ (
451
+ "stlrh %w[value], %[storage]\n\t"
452
+ : [storage] "=Q" (storage)
453
+ : [value] "r" (v)
454
+ : "memory"
455
+ );
456
+ }
457
+ else
458
+ {
459
+ storage = v;
460
+ }
461
+ }
462
+
463
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
464
+ {
465
+ storage_type v;
466
+ if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
467
+ {
468
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC)
469
+ if (order == memory_order_consume || order == memory_order_acquire)
470
+ {
471
+ __asm__ __volatile__
472
+ (
473
+ "ldaprh %w[value], %[storage]\n\t"
474
+ : [value] "=r" (v)
475
+ : [storage] "Q" (storage)
476
+ : "memory"
477
+ );
478
+ }
479
+ else
480
+ #endif
481
+ {
482
+ __asm__ __volatile__
483
+ (
484
+ "ldarh %w[value], %[storage]\n\t"
485
+ : [value] "=r" (v)
486
+ : [storage] "Q" (storage)
487
+ : "memory"
488
+ );
489
+ }
490
+ }
491
+ else
492
+ {
493
+ v = storage;
494
+ }
495
+
496
+ return v;
497
+ }
498
+
499
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
500
+ {
501
+ storage_type original;
502
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
503
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
504
+ __asm__ __volatile__\
505
+ (\
506
+ "swp" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\
507
+ : [storage] "+Q" (storage), [original] "=r" (original)\
508
+ : [value] "r" (v)\
509
+ : "memory"\
510
+ );
511
+ #else
512
+ uint32_t tmp;
513
+
514
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
515
+ __asm__ __volatile__\
516
+ (\
517
+ "1:\n\t"\
518
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
519
+ "st" st_mo "xrh %w[tmp], %w[value], %[storage]\n\t"\
520
+ "cbnz %w[tmp], 1b\n\t"\
521
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\
522
+ : [value] "r" (v)\
523
+ : "memory"\
524
+ );
525
+ #endif
526
+
527
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
528
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
529
+
530
+ return original;
531
+ }
532
+
533
+ static BOOST_FORCEINLINE bool compare_exchange_weak(
534
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
535
+ {
536
+ storage_type original;
537
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
538
+ original = expected;
539
+
540
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
541
+ __asm__ __volatile__\
542
+ (\
543
+ "cas" ld_mo st_mo "h %w[original], %w[desired], %[storage]\n\t"\
544
+ : [storage] "+Q" (storage), [original] "+r" (original)\
545
+ : [desired] "r" (desired)\
546
+ : "memory"\
547
+ );
548
+
549
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
550
+ bool success = original == expected;
551
+ #else
552
+ bool success;
553
+
554
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
555
+ __asm__ __volatile__\
556
+ (\
557
+ "uxth %w[expected], %w[expected]\n\t"\
558
+ "mov %w[success], #0\n\t"\
559
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
560
+ "cmp %w[original], %w[expected]\n\t"\
561
+ "b.ne 1f\n\t"\
562
+ "st" st_mo "xrh %w[success], %w[desired], %[storage]\n\t"\
563
+ "eor %w[success], %w[success], #1\n\t"\
564
+ "1:\n\t"\
565
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
566
+ : [desired] "r" (desired), [expected] "r" (expected)\
567
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
568
+ );
569
+
570
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
571
+ #endif
572
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
573
+
574
+ expected = original;
575
+ return success;
576
+ }
577
+
578
+ static BOOST_FORCEINLINE bool compare_exchange_strong(
579
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
580
+ {
581
+ storage_type original;
582
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
583
+ original = expected;
584
+
585
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
586
+ __asm__ __volatile__\
587
+ (\
588
+ "cas" ld_mo st_mo "h %w[original], %w[desired], %[storage]\n\t"\
589
+ : [storage] "+Q" (storage), [original] "+r" (original)\
590
+ : [desired] "r" (desired)\
591
+ : "memory"\
592
+ );
593
+
594
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
595
+ bool success = original == expected;
596
+ #else
597
+ bool success;
598
+
599
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
600
+ __asm__ __volatile__\
601
+ (\
602
+ "uxth %w[expected], %w[expected]\n\t"\
603
+ "1:\n\t"\
604
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
605
+ "cmp %w[original], %w[expected]\n\t"\
606
+ "b.ne 2f\n\t"\
607
+ "st" st_mo "xrh %w[success], %w[desired], %[storage]\n\t"\
608
+ "cbnz %w[success], 1b\n\t"\
609
+ "2:\n\t"\
610
+ "cset %w[success], eq\n\t"\
611
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
612
+ : [desired] "r" (desired), [expected] "r" (expected)\
613
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
614
+ );
615
+
616
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
617
+ #endif
618
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
619
+
620
+ expected = original;
621
+ return success;
622
+ }
623
+
624
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
625
+ {
626
+ storage_type original;
627
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
628
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
629
+ __asm__ __volatile__\
630
+ (\
631
+ "ldadd" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\
632
+ : [storage] "+Q" (storage), [original] "=r" (original)\
633
+ : [value] "r" (v)\
634
+ : "memory"\
635
+ );
636
+ #else
637
+ storage_type result;
638
+ uint32_t tmp;
639
+
640
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
641
+ __asm__ __volatile__\
642
+ (\
643
+ "1:\n\t"\
644
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
645
+ "add %w[result], %w[original], %w[value]\n\t"\
646
+ "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\
647
+ "cbnz %w[tmp], 1b\n\t"\
648
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
649
+ : [value] "Ir" (v)\
650
+ : "memory"\
651
+ );
652
+ #endif
653
+
654
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
655
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
656
+
657
+ return original;
658
+ }
659
+
660
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
661
+ {
662
+ storage_type original;
663
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
664
+ v = -v;
665
+
666
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
667
+ __asm__ __volatile__\
668
+ (\
669
+ "ldadd" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\
670
+ : [storage] "+Q" (storage), [original] "=r" (original)\
671
+ : [value] "r" (v)\
672
+ : "memory"\
673
+ );
674
+
675
+ #else
676
+ storage_type result;
677
+ uint32_t tmp;
678
+
679
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
680
+ __asm__ __volatile__\
681
+ (\
682
+ "1:\n\t"\
683
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
684
+ "sub %w[result], %w[original], %w[value]\n\t"\
685
+ "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\
686
+ "cbnz %w[tmp], 1b\n\t"\
687
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
688
+ : [value] "Ir" (v)\
689
+ : "memory"\
690
+ );
691
+ #endif
692
+
693
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
694
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
695
+
696
+ return original;
697
+ }
698
+
699
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
700
+ {
701
+ storage_type original;
702
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
703
+ v = ~v;
704
+
705
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
706
+ __asm__ __volatile__\
707
+ (\
708
+ "ldclr" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\
709
+ : [storage] "+Q" (storage), [original] "=r" (original)\
710
+ : [value] "r" (v)\
711
+ : "memory"\
712
+ );
713
+ #else
714
+ storage_type result;
715
+ uint32_t tmp;
716
+
717
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
718
+ __asm__ __volatile__\
719
+ (\
720
+ "1:\n\t"\
721
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
722
+ "and %w[result], %w[original], %w[value]\n\t"\
723
+ "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\
724
+ "cbnz %w[tmp], 1b\n\t"\
725
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
726
+ : [value] "Kr" (v)\
727
+ : "memory"\
728
+ );
729
+ #endif
730
+
731
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
732
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
733
+
734
+ return original;
735
+ }
736
+
737
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
738
+ {
739
+ storage_type original;
740
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
741
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
742
+ __asm__ __volatile__\
743
+ (\
744
+ "ldset" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\
745
+ : [storage] "+Q" (storage), [original] "=r" (original)\
746
+ : [value] "r" (v)\
747
+ : "memory"\
748
+ );
749
+ #else
750
+ storage_type result;
751
+ uint32_t tmp;
752
+
753
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
754
+ __asm__ __volatile__\
755
+ (\
756
+ "1:\n\t"\
757
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
758
+ "orr %w[result], %w[original], %w[value]\n\t"\
759
+ "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\
760
+ "cbnz %w[tmp], 1b\n\t"\
761
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
762
+ : [value] "Kr" (v)\
763
+ : "memory"\
764
+ );
765
+ #endif
766
+
767
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
768
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
769
+
770
+ return original;
771
+ }
772
+
773
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
774
+ {
775
+ storage_type original;
776
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
777
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
778
+ __asm__ __volatile__\
779
+ (\
780
+ "ldeor" ld_mo st_mo "h %w[value], %w[original], %[storage]\n\t"\
781
+ : [storage] "+Q" (storage), [original] "=r" (original)\
782
+ : [value] "r" (v)\
783
+ : "memory"\
784
+ );
785
+ #else
786
+ storage_type result;
787
+ uint32_t tmp;
788
+
789
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
790
+ __asm__ __volatile__\
791
+ (\
792
+ "1:\n\t"\
793
+ "ld" ld_mo "xrh %w[original], %[storage]\n\t"\
794
+ "eor %w[result], %w[original], %w[value]\n\t"\
795
+ "st" st_mo "xrh %w[tmp], %w[result], %[storage]\n\t"\
796
+ "cbnz %w[tmp], 1b\n\t"\
797
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
798
+ : [value] "Kr" (v)\
799
+ : "memory"\
800
+ );
801
+ #endif
802
+
803
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
804
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
805
+
806
+ return original;
807
+ }
808
+
809
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
810
+ {
811
+ return !!exchange(storage, (storage_type)1, order);
812
+ }
813
+
814
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
815
+ {
816
+ store(storage, (storage_type)0, order);
817
+ }
818
+ };
819
+
820
+ template< bool Signed, bool Interprocess >
821
+ struct core_arch_operations< 4u, Signed, Interprocess > :
822
+ public core_arch_operations_gcc_aarch64_base
823
+ {
824
+ typedef typename storage_traits< 4u >::type storage_type;
825
+
826
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
827
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u;
828
+ static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
829
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
830
+
831
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
832
+ {
833
+ if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
834
+ {
835
+ __asm__ __volatile__
836
+ (
837
+ "stlr %w[value], %[storage]\n\t"
838
+ : [storage] "=Q" (storage)
839
+ : [value] "r" (v)
840
+ : "memory"
841
+ );
842
+ }
843
+ else
844
+ {
845
+ storage = v;
846
+ }
847
+ }
848
+
849
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
850
+ {
851
+ storage_type v;
852
+ if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
853
+ {
854
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC)
855
+ if (order == memory_order_consume || order == memory_order_acquire)
856
+ {
857
+ __asm__ __volatile__
858
+ (
859
+ "ldapr %w[value], %[storage]\n\t"
860
+ : [value] "=r" (v)
861
+ : [storage] "Q" (storage)
862
+ : "memory"
863
+ );
864
+ }
865
+ else
866
+ #endif
867
+ {
868
+ __asm__ __volatile__
869
+ (
870
+ "ldar %w[value], %[storage]\n\t"
871
+ : [value] "=r" (v)
872
+ : [storage] "Q" (storage)
873
+ : "memory"
874
+ );
875
+ }
876
+ }
877
+ else
878
+ {
879
+ v = storage;
880
+ }
881
+
882
+ return v;
883
+ }
884
+
885
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
886
+ {
887
+ storage_type original;
888
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
889
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
890
+ __asm__ __volatile__\
891
+ (\
892
+ "swp" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\
893
+ : [storage] "+Q" (storage), [original] "=r" (original)\
894
+ : [value] "r" (v)\
895
+ : "memory"\
896
+ );
897
+ #else
898
+ uint32_t tmp;
899
+
900
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
901
+ __asm__ __volatile__\
902
+ (\
903
+ "1:\n\t"\
904
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
905
+ "st" st_mo "xr %w[tmp], %w[value], %[storage]\n\t"\
906
+ "cbnz %w[tmp], 1b\n\t"\
907
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\
908
+ : [value] "r" (v)\
909
+ : "memory"\
910
+ );
911
+ #endif
912
+
913
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
914
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
915
+
916
+ return original;
917
+ }
918
+
919
+ static BOOST_FORCEINLINE bool compare_exchange_weak(
920
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
921
+ {
922
+ storage_type original;
923
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
924
+ original = expected;
925
+
926
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
927
+ __asm__ __volatile__\
928
+ (\
929
+ "cas" ld_mo st_mo " %w[original], %w[desired], %[storage]\n\t"\
930
+ : [storage] "+Q" (storage), [original] "+r" (original)\
931
+ : [desired] "r" (desired)\
932
+ : "memory"\
933
+ );
934
+
935
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
936
+ bool success = original == expected;
937
+ #else
938
+ bool success;
939
+
940
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
941
+ __asm__ __volatile__\
942
+ (\
943
+ "mov %w[success], #0\n\t"\
944
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
945
+ "cmp %w[original], %w[expected]\n\t"\
946
+ "b.ne 1f\n\t"\
947
+ "st" st_mo "xr %w[success], %w[desired], %[storage]\n\t"\
948
+ "eor %w[success], %w[success], #1\n\t"\
949
+ "1:\n\t"\
950
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
951
+ : [desired] "r" (desired), [expected] "Ir" (expected)\
952
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
953
+ );
954
+
955
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
956
+ #endif
957
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
958
+
959
+ expected = original;
960
+ return success;
961
+ }
962
+
963
+ static BOOST_FORCEINLINE bool compare_exchange_strong(
964
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
965
+ {
966
+ storage_type original;
967
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
968
+ original = expected;
969
+
970
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
971
+ __asm__ __volatile__\
972
+ (\
973
+ "cas" ld_mo st_mo " %w[original], %w[desired], %[storage]\n\t"\
974
+ : [storage] "+Q" (storage), [original] "+r" (original)\
975
+ : [desired] "r" (desired)\
976
+ : "memory"\
977
+ );
978
+
979
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
980
+ bool success = original == expected;
981
+ #else
982
+ bool success;
983
+
984
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
985
+ __asm__ __volatile__\
986
+ (\
987
+ "1:\n\t"\
988
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
989
+ "cmp %w[original], %w[expected]\n\t"\
990
+ "b.ne 2f\n\t"\
991
+ "st" st_mo "xr %w[success], %w[desired], %[storage]\n\t"\
992
+ "cbnz %w[success], 1b\n\t"\
993
+ "2:\n\t"\
994
+ "cset %w[success], eq\n\t"\
995
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
996
+ : [desired] "r" (desired), [expected] "Ir" (expected)\
997
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
998
+ );
999
+
1000
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1001
+ #endif
1002
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1003
+
1004
+ expected = original;
1005
+ return success;
1006
+ }
1007
+
1008
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1009
+ {
1010
+ storage_type original;
1011
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1012
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1013
+ __asm__ __volatile__\
1014
+ (\
1015
+ "ldadd" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\
1016
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1017
+ : [value] "r" (v)\
1018
+ : "memory"\
1019
+ );
1020
+ #else
1021
+ storage_type result;
1022
+ uint32_t tmp;
1023
+
1024
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1025
+ __asm__ __volatile__\
1026
+ (\
1027
+ "1:\n\t"\
1028
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
1029
+ "add %w[result], %w[original], %w[value]\n\t"\
1030
+ "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\
1031
+ "cbnz %w[tmp], 1b\n\t"\
1032
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1033
+ : [value] "Ir" (v)\
1034
+ : "memory"\
1035
+ );
1036
+ #endif
1037
+
1038
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1039
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1040
+
1041
+ return original;
1042
+ }
1043
+
1044
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1045
+ {
1046
+ storage_type original;
1047
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1048
+ v = -v;
1049
+
1050
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1051
+ __asm__ __volatile__\
1052
+ (\
1053
+ "ldadd" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\
1054
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1055
+ : [value] "r" (v)\
1056
+ : "memory"\
1057
+ );
1058
+
1059
+ #else
1060
+ storage_type result;
1061
+ uint32_t tmp;
1062
+
1063
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1064
+ __asm__ __volatile__\
1065
+ (\
1066
+ "1:\n\t"\
1067
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
1068
+ "sub %w[result], %w[original], %w[value]\n\t"\
1069
+ "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\
1070
+ "cbnz %w[tmp], 1b\n\t"\
1071
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1072
+ : [value] "Ir" (v)\
1073
+ : "memory"\
1074
+ );
1075
+ #endif
1076
+
1077
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1078
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1079
+
1080
+ return original;
1081
+ }
1082
+
1083
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1084
+ {
1085
+ storage_type original;
1086
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1087
+ v = ~v;
1088
+
1089
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1090
+ __asm__ __volatile__\
1091
+ (\
1092
+ "ldclr" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\
1093
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1094
+ : [value] "r" (v)\
1095
+ : "memory"\
1096
+ );
1097
+ #else
1098
+ storage_type result;
1099
+ uint32_t tmp;
1100
+
1101
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1102
+ __asm__ __volatile__\
1103
+ (\
1104
+ "1:\n\t"\
1105
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
1106
+ "and %w[result], %w[original], %w[value]\n\t"\
1107
+ "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\
1108
+ "cbnz %w[tmp], 1b\n\t"\
1109
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1110
+ : [value] "Kr" (v)\
1111
+ : "memory"\
1112
+ );
1113
+ #endif
1114
+
1115
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1116
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1117
+
1118
+ return original;
1119
+ }
1120
+
1121
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1122
+ {
1123
+ storage_type original;
1124
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1125
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1126
+ __asm__ __volatile__\
1127
+ (\
1128
+ "ldset" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\
1129
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1130
+ : [value] "r" (v)\
1131
+ : "memory"\
1132
+ );
1133
+ #else
1134
+ storage_type result;
1135
+ uint32_t tmp;
1136
+
1137
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1138
+ __asm__ __volatile__\
1139
+ (\
1140
+ "1:\n\t"\
1141
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
1142
+ "orr %w[result], %w[original], %w[value]\n\t"\
1143
+ "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\
1144
+ "cbnz %w[tmp], 1b\n\t"\
1145
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1146
+ : [value] "Kr" (v)\
1147
+ : "memory"\
1148
+ );
1149
+ #endif
1150
+
1151
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1152
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1153
+
1154
+ return original;
1155
+ }
1156
+
1157
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1158
+ {
1159
+ storage_type original;
1160
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1161
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1162
+ __asm__ __volatile__\
1163
+ (\
1164
+ "ldeor" ld_mo st_mo " %w[value], %w[original], %[storage]\n\t"\
1165
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1166
+ : [value] "r" (v)\
1167
+ : "memory"\
1168
+ );
1169
+ #else
1170
+ storage_type result;
1171
+ uint32_t tmp;
1172
+
1173
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1174
+ __asm__ __volatile__\
1175
+ (\
1176
+ "1:\n\t"\
1177
+ "ld" ld_mo "xr %w[original], %[storage]\n\t"\
1178
+ "eor %w[result], %w[original], %w[value]\n\t"\
1179
+ "st" st_mo "xr %w[tmp], %w[result], %[storage]\n\t"\
1180
+ "cbnz %w[tmp], 1b\n\t"\
1181
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1182
+ : [value] "Kr" (v)\
1183
+ : "memory"\
1184
+ );
1185
+ #endif
1186
+
1187
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1188
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1189
+
1190
+ return original;
1191
+ }
1192
+
1193
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1194
+ {
1195
+ return !!exchange(storage, (storage_type)1, order);
1196
+ }
1197
+
1198
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1199
+ {
1200
+ store(storage, (storage_type)0, order);
1201
+ }
1202
+ };
1203
+
1204
+ template< bool Signed, bool Interprocess >
1205
+ struct core_arch_operations< 8u, Signed, Interprocess > :
1206
+ public core_arch_operations_gcc_aarch64_base
1207
+ {
1208
+ typedef typename storage_traits< 8u >::type storage_type;
1209
+
1210
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
1211
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u;
1212
+ static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
1213
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
1214
+
1215
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1216
+ {
1217
+ if ((static_cast< unsigned int >(order) & static_cast< unsigned int >(memory_order_release)) != 0u)
1218
+ {
1219
+ __asm__ __volatile__
1220
+ (
1221
+ "stlr %x[value], %[storage]\n\t"
1222
+ : [storage] "=Q" (storage)
1223
+ : [value] "r" (v)
1224
+ : "memory"
1225
+ );
1226
+ }
1227
+ else
1228
+ {
1229
+ storage = v;
1230
+ }
1231
+ }
1232
+
1233
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
1234
+ {
1235
+ storage_type v;
1236
+ if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
1237
+ {
1238
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_RCPC)
1239
+ if (order == memory_order_consume || order == memory_order_acquire)
1240
+ {
1241
+ __asm__ __volatile__
1242
+ (
1243
+ "ldapr %x[value], %[storage]\n\t"
1244
+ : [value] "=r" (v)
1245
+ : [storage] "Q" (storage)
1246
+ : "memory"
1247
+ );
1248
+ }
1249
+ else
1250
+ #endif
1251
+ {
1252
+ __asm__ __volatile__
1253
+ (
1254
+ "ldar %x[value], %[storage]\n\t"
1255
+ : [value] "=r" (v)
1256
+ : [storage] "Q" (storage)
1257
+ : "memory"
1258
+ );
1259
+ }
1260
+ }
1261
+ else
1262
+ {
1263
+ v = storage;
1264
+ }
1265
+
1266
+ return v;
1267
+ }
1268
+
1269
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1270
+ {
1271
+ storage_type original;
1272
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1273
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1274
+ __asm__ __volatile__\
1275
+ (\
1276
+ "swp" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\
1277
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1278
+ : [value] "r" (v)\
1279
+ : "memory"\
1280
+ );
1281
+ #else
1282
+ uint32_t tmp;
1283
+
1284
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1285
+ __asm__ __volatile__\
1286
+ (\
1287
+ "1:\n\t"\
1288
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1289
+ "st" st_mo "xr %w[tmp], %x[value], %[storage]\n\t"\
1290
+ "cbnz %w[tmp], 1b\n\t"\
1291
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original] "=&r" (original)\
1292
+ : [value] "r" (v)\
1293
+ : "memory"\
1294
+ );
1295
+ #endif
1296
+
1297
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1298
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1299
+
1300
+ return original;
1301
+ }
1302
+
1303
+ static BOOST_FORCEINLINE bool compare_exchange_weak(
1304
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1305
+ {
1306
+ storage_type original;
1307
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1308
+ original = expected;
1309
+
1310
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1311
+ __asm__ __volatile__\
1312
+ (\
1313
+ "cas" ld_mo st_mo " %x[original], %x[desired], %[storage]\n\t"\
1314
+ : [storage] "+Q" (storage), [original] "+r" (original)\
1315
+ : [desired] "r" (desired)\
1316
+ : "memory"\
1317
+ );
1318
+
1319
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1320
+ bool success = original == expected;
1321
+ #else
1322
+ bool success;
1323
+
1324
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1325
+ __asm__ __volatile__\
1326
+ (\
1327
+ "mov %w[success], #0\n\t"\
1328
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1329
+ "cmp %x[original], %x[expected]\n\t"\
1330
+ "b.ne 1f\n\t"\
1331
+ "st" st_mo "xr %w[success], %x[desired], %[storage]\n\t"\
1332
+ "eor %w[success], %w[success], #1\n\t"\
1333
+ "1:\n\t"\
1334
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
1335
+ : [desired] "r" (desired), [expected] "Ir" (expected)\
1336
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1337
+ );
1338
+
1339
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1340
+ #endif
1341
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1342
+
1343
+ expected = original;
1344
+ return success;
1345
+ }
1346
+
1347
+ static BOOST_FORCEINLINE bool compare_exchange_strong(
1348
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1349
+ {
1350
+ storage_type original;
1351
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1352
+ original = expected;
1353
+
1354
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1355
+ __asm__ __volatile__\
1356
+ (\
1357
+ "cas" ld_mo st_mo " %x[original], %x[desired], %[storage]\n\t"\
1358
+ : [storage] "+Q" (storage), [original] "+r" (original)\
1359
+ : [desired] "r" (desired)\
1360
+ : "memory"\
1361
+ );
1362
+
1363
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1364
+ bool success = original == expected;
1365
+ #else
1366
+ bool success;
1367
+
1368
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1369
+ __asm__ __volatile__\
1370
+ (\
1371
+ "1:\n\t"\
1372
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1373
+ "cmp %x[original], %x[expected]\n\t"\
1374
+ "b.ne 2f\n\t"\
1375
+ "st" st_mo "xr %w[success], %x[desired], %[storage]\n\t"\
1376
+ "cbnz %w[success], 1b\n\t"\
1377
+ "2:\n\t"\
1378
+ "cset %w[success], eq\n\t"\
1379
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original] "=&r" (original)\
1380
+ : [desired] "r" (desired), [expected] "Ir" (expected)\
1381
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1382
+ );
1383
+
1384
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1385
+ #endif
1386
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1387
+
1388
+ expected = original;
1389
+ return success;
1390
+ }
1391
+
1392
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1393
+ {
1394
+ storage_type original;
1395
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1396
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1397
+ __asm__ __volatile__\
1398
+ (\
1399
+ "ldadd" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\
1400
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1401
+ : [value] "r" (v)\
1402
+ : "memory"\
1403
+ );
1404
+ #else
1405
+ storage_type result;
1406
+ uint32_t tmp;
1407
+
1408
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1409
+ __asm__ __volatile__\
1410
+ (\
1411
+ "1:\n\t"\
1412
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1413
+ "add %x[result], %x[original], %x[value]\n\t"\
1414
+ "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\
1415
+ "cbnz %w[tmp], 1b\n\t"\
1416
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1417
+ : [value] "Ir" (v)\
1418
+ : "memory"\
1419
+ );
1420
+ #endif
1421
+
1422
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1423
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1424
+
1425
+ return original;
1426
+ }
1427
+
1428
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1429
+ {
1430
+ storage_type original;
1431
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1432
+ v = -v;
1433
+
1434
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1435
+ __asm__ __volatile__\
1436
+ (\
1437
+ "ldadd" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\
1438
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1439
+ : [value] "r" (v)\
1440
+ : "memory"\
1441
+ );
1442
+
1443
+ #else
1444
+ storage_type result;
1445
+ uint32_t tmp;
1446
+
1447
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1448
+ __asm__ __volatile__\
1449
+ (\
1450
+ "1:\n\t"\
1451
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1452
+ "sub %x[result], %x[original], %x[value]\n\t"\
1453
+ "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\
1454
+ "cbnz %w[tmp], 1b\n\t"\
1455
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1456
+ : [value] "Ir" (v)\
1457
+ : "memory"\
1458
+ );
1459
+ #endif
1460
+
1461
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1462
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1463
+
1464
+ return original;
1465
+ }
1466
+
1467
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1468
+ {
1469
+ storage_type original;
1470
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1471
+ v = ~v;
1472
+
1473
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1474
+ __asm__ __volatile__\
1475
+ (\
1476
+ "ldclr" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\
1477
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1478
+ : [value] "r" (v)\
1479
+ : "memory"\
1480
+ );
1481
+ #else
1482
+ storage_type result;
1483
+ uint32_t tmp;
1484
+
1485
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1486
+ __asm__ __volatile__\
1487
+ (\
1488
+ "1:\n\t"\
1489
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1490
+ "and %x[result], %x[original], %x[value]\n\t"\
1491
+ "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\
1492
+ "cbnz %w[tmp], 1b\n\t"\
1493
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1494
+ : [value] "Kr" (v)\
1495
+ : "memory"\
1496
+ );
1497
+ #endif
1498
+
1499
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1500
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1501
+
1502
+ return original;
1503
+ }
1504
+
1505
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1506
+ {
1507
+ storage_type original;
1508
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1509
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1510
+ __asm__ __volatile__\
1511
+ (\
1512
+ "ldset" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\
1513
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1514
+ : [value] "r" (v)\
1515
+ : "memory"\
1516
+ );
1517
+ #else
1518
+ storage_type result;
1519
+ uint32_t tmp;
1520
+
1521
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1522
+ __asm__ __volatile__\
1523
+ (\
1524
+ "1:\n\t"\
1525
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1526
+ "orr %x[result], %x[original], %x[value]\n\t"\
1527
+ "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\
1528
+ "cbnz %w[tmp], 1b\n\t"\
1529
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1530
+ : [value] "Kr" (v)\
1531
+ : "memory"\
1532
+ );
1533
+ #endif
1534
+
1535
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1536
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1537
+
1538
+ return original;
1539
+ }
1540
+
1541
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1542
+ {
1543
+ storage_type original;
1544
+ #if defined(BOOST_ATOMIC_DETAIL_AARCH64_HAS_LSE)
1545
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1546
+ __asm__ __volatile__\
1547
+ (\
1548
+ "ldeor" ld_mo st_mo " %x[value], %x[original], %[storage]\n\t"\
1549
+ : [storage] "+Q" (storage), [original] "=r" (original)\
1550
+ : [value] "r" (v)\
1551
+ : "memory"\
1552
+ );
1553
+ #else
1554
+ storage_type result;
1555
+ uint32_t tmp;
1556
+
1557
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1558
+ __asm__ __volatile__\
1559
+ (\
1560
+ "1:\n\t"\
1561
+ "ld" ld_mo "xr %x[original], %[storage]\n\t"\
1562
+ "eor %x[result], %x[original], %x[value]\n\t"\
1563
+ "st" st_mo "xr %w[tmp], %x[result], %[storage]\n\t"\
1564
+ "cbnz %w[tmp], 1b\n\t"\
1565
+ : [tmp] "=&r" (tmp), [result] "=&r" (result), [storage] "+Q" (storage), [original] "=&r" (original)\
1566
+ : [value] "Kr" (v)\
1567
+ : "memory"\
1568
+ );
1569
+ #endif
1570
+
1571
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1572
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1573
+
1574
+ return original;
1575
+ }
1576
+
1577
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1578
+ {
1579
+ return !!exchange(storage, (storage_type)1, order);
1580
+ }
1581
+
1582
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1583
+ {
1584
+ store(storage, (storage_type)0, order);
1585
+ }
1586
+ };
1587
+
1588
+ // For 128-bit atomic operations we always have to use ldxp+stxp (optionally, with acquire/release semantics), even in load and store operations.
1589
+ // ARM Architecture Reference Manual Armv8, for Armv8-A architecture profile, Section B2.2.1 "Requirements for single-copy atomicity"
1590
+ // specifies that ldxp does not guarantee an atomic load, and we have to perform ldxp+stxp loop to ensure that the loaded value
1591
+ // is consistent with a previous atomic store.
1592
+ //
1593
+ // The ldxp and stxp instructions operate on pairs of registers, meaning that each load loads two integers from memory in
1594
+ // successive address order, to the first and second registers in the pair, respectively, and store similarly stores two integers.
1595
+ // The order of these integers does not depend on the active endianness mode (although the byte order in the integers themselves
1596
+ // obviously does depend on endianness). This means we need to account for the current endianness mode ourselves, where it matters.
1597
+ //
1598
+ // Unlike AArch32/A32 or ARMv7, ldxp/stxp do not require adjacent even+odd registers in the pair and accept any two different
1599
+ // registers. Still, it may be more preferable to select the adjacent registers as 128-bit objects are represented by two adjacent
1600
+ // registers in the ABI. Unfortunately, clang 10 and probably older doesn't seem to support allocating register pairs in the asm blocks,
1601
+ // like in ARMv7. For now we use a union to convert between a pair of 64-bit elements and 128-bit storage.
1602
+
1603
+ template< bool Signed, bool Interprocess >
1604
+ struct core_arch_operations< 16u, Signed, Interprocess > :
1605
+ public core_arch_operations_gcc_aarch64_base
1606
+ {
1607
+ typedef typename storage_traits< 16u >::type storage_type;
1608
+
1609
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 16u;
1610
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 16u;
1611
+ static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
1612
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
1613
+
1614
+ // Union to convert between two 64-bit registers and a 128-bit storage
1615
+ union storage_union
1616
+ {
1617
+ storage_type as_storage;
1618
+ uint64_t as_uint64[2u];
1619
+ };
1620
+
1621
+ static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1622
+ {
1623
+ exchange(storage, v, order);
1624
+ }
1625
+
1626
+ static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
1627
+ {
1628
+ storage_union v;
1629
+ uint32_t tmp;
1630
+ if ((static_cast< unsigned int >(order) & (static_cast< unsigned int >(memory_order_consume) | static_cast< unsigned int >(memory_order_acquire))) != 0u)
1631
+ {
1632
+ __asm__ __volatile__
1633
+ (
1634
+ "1:\n\t"
1635
+ "ldaxp %x[value_0], %x[value_1], %[storage]\n\t"
1636
+ "stxp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t"
1637
+ "cbnz %w[tmp], 1b\n\t"
1638
+ : [tmp] "=&r" (tmp), [value_0] "=&r" (v.as_uint64[0u]), [value_1] "=&r" (v.as_uint64[1u])
1639
+ : [storage] "Q" (storage)
1640
+ : "memory"
1641
+ );
1642
+ }
1643
+ else
1644
+ {
1645
+ __asm__ __volatile__
1646
+ (
1647
+ "1:\n\t"
1648
+ "ldxp %x[value_0], %x[value_1], %[storage]\n\t"
1649
+ "stxp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t"
1650
+ "cbnz %w[tmp], 1b\n\t"
1651
+ : [tmp] "=&r" (tmp), [value_0] "=&r" (v.as_uint64[0u]), [value_1] "=&r" (v.as_uint64[1u])
1652
+ : [storage] "Q" (storage)
1653
+ : "memory"
1654
+ );
1655
+ }
1656
+
1657
+ return v.as_storage;
1658
+ }
1659
+
1660
+ static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1661
+ {
1662
+ storage_union original;
1663
+ storage_union value = { v };
1664
+ uint32_t tmp;
1665
+
1666
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1667
+ __asm__ __volatile__\
1668
+ (\
1669
+ "1:\n\t"\
1670
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1671
+ "st" st_mo "xp %w[tmp], %x[value_0], %x[value_1], %[storage]\n\t"\
1672
+ "cbnz %w[tmp], 1b\n\t"\
1673
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])\
1674
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\
1675
+ : "memory"\
1676
+ );
1677
+
1678
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1679
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1680
+
1681
+ return original.as_storage;
1682
+ }
1683
+
1684
+ static BOOST_FORCEINLINE bool compare_exchange_weak(
1685
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1686
+ {
1687
+ storage_union original;
1688
+ storage_union e = { expected };
1689
+ storage_union d = { desired };
1690
+ bool success;
1691
+
1692
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1693
+ __asm__ __volatile__\
1694
+ (\
1695
+ "mov %w[success], #0\n\t"\
1696
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1697
+ "cmp %x[original_0], %x[expected_0]\n\t"\
1698
+ "ccmp %x[original_1], %x[expected_1], #0, eq\n\t"\
1699
+ "b.ne 1f\n\t"\
1700
+ "st" st_mo "xp %w[success], %x[desired_0], %x[desired_1], %[storage]\n\t"\
1701
+ "eor %w[success], %w[success], #1\n\t"\
1702
+ "1:\n\t"\
1703
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])\
1704
+ : [desired_0] "r" (d.as_uint64[0u]), [desired_1] "r" (d.as_uint64[1u]), [expected_0] "r" (e.as_uint64[0u]), [expected_1] "r" (e.as_uint64[1u])\
1705
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1706
+ );
1707
+
1708
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1709
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1710
+
1711
+ expected = original.as_storage;
1712
+ return success;
1713
+ }
1714
+
1715
+ static BOOST_FORCEINLINE bool compare_exchange_strong(
1716
+ storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1717
+ {
1718
+ storage_union original;
1719
+ storage_union e = { expected };
1720
+ storage_union d = { desired };
1721
+ bool success;
1722
+
1723
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1724
+ __asm__ __volatile__\
1725
+ (\
1726
+ "1:\n\t"\
1727
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1728
+ "cmp %x[original_0], %x[expected_0]\n\t"\
1729
+ "ccmp %x[original_1], %x[expected_1], #0, eq\n\t"\
1730
+ "b.ne 2f\n\t"\
1731
+ "st" st_mo "xp %w[success], %x[desired_0], %x[desired_1], %[storage]\n\t"\
1732
+ "cbnz %w[success], 1b\n\t"\
1733
+ "2:\n\t"\
1734
+ "cset %w[success], eq\n\t"\
1735
+ : [success] "=&r" (success), [storage] "+Q" (storage), [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u])\
1736
+ : [desired_0] "r" (d.as_uint64[0u]), [desired_1] "r" (d.as_uint64[1u]), [expected_0] "r" (e.as_uint64[0u]), [expected_1] "r" (e.as_uint64[1u])\
1737
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1738
+ );
1739
+
1740
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(success_order)
1741
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1742
+
1743
+ expected = original.as_storage;
1744
+ return success;
1745
+ }
1746
+
1747
+ static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1748
+ {
1749
+ storage_union original;
1750
+ storage_union value = { v };
1751
+ storage_union result;
1752
+ uint32_t tmp;
1753
+
1754
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1755
+ __asm__ __volatile__\
1756
+ (\
1757
+ "1:\n\t"\
1758
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1759
+ "adds %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "]\n\t"\
1760
+ "adc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "]\n\t"\
1761
+ "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\
1762
+ "cbnz %w[tmp], 1b\n\t"\
1763
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\
1764
+ [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\
1765
+ [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\
1766
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\
1767
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1768
+ );
1769
+
1770
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1771
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1772
+
1773
+ return original.as_storage;
1774
+ }
1775
+
1776
+ static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1777
+ {
1778
+ storage_union original;
1779
+ storage_union value = { v };
1780
+ storage_union result;
1781
+ uint32_t tmp;
1782
+
1783
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1784
+ __asm__ __volatile__\
1785
+ (\
1786
+ "1:\n\t"\
1787
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1788
+ "subs %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_LO "]\n\t"\
1789
+ "sbc %x[result_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[original_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "], %x[value_" BOOST_ATOMIC_DETAIL_AARCH64_ASM_ARG_HI "]\n\t"\
1790
+ "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\
1791
+ "cbnz %w[tmp], 1b\n\t"\
1792
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\
1793
+ [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\
1794
+ [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\
1795
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\
1796
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1797
+ );
1798
+
1799
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1800
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1801
+
1802
+ return original.as_storage;
1803
+ }
1804
+
1805
+ static BOOST_FORCEINLINE storage_type fetch_and(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1806
+ {
1807
+ storage_union original;
1808
+ storage_union value = { v };
1809
+ storage_union result;
1810
+ uint32_t tmp;
1811
+
1812
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1813
+ __asm__ __volatile__\
1814
+ (\
1815
+ "1:\n\t"\
1816
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1817
+ "and %x[result_0], %x[original_0], %x[value_0]\n\t"\
1818
+ "and %x[result_1], %x[original_1], %x[value_1]\n\t"\
1819
+ "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\
1820
+ "cbnz %w[tmp], 1b\n\t"\
1821
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\
1822
+ [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\
1823
+ [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\
1824
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\
1825
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1826
+ );
1827
+
1828
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1829
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1830
+
1831
+ return original.as_storage;
1832
+ }
1833
+
1834
+ static BOOST_FORCEINLINE storage_type fetch_or(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1835
+ {
1836
+ storage_union original;
1837
+ storage_union value = { v };
1838
+ storage_union result;
1839
+ uint32_t tmp;
1840
+
1841
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1842
+ __asm__ __volatile__\
1843
+ (\
1844
+ "1:\n\t"\
1845
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1846
+ "orr %x[result_0], %x[original_0], %x[value_0]\n\t"\
1847
+ "orr %x[result_1], %x[original_1], %x[value_1]\n\t"\
1848
+ "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\
1849
+ "cbnz %w[tmp], 1b\n\t"\
1850
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\
1851
+ [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\
1852
+ [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\
1853
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\
1854
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1855
+ );
1856
+
1857
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1858
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1859
+
1860
+ return original.as_storage;
1861
+ }
1862
+
1863
+ static BOOST_FORCEINLINE storage_type fetch_xor(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1864
+ {
1865
+ storage_union original;
1866
+ storage_union value = { v };
1867
+ storage_union result;
1868
+ uint32_t tmp;
1869
+
1870
+ #define BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN(ld_mo, st_mo)\
1871
+ __asm__ __volatile__\
1872
+ (\
1873
+ "1:\n\t"\
1874
+ "ld" ld_mo "xp %x[original_0], %x[original_1], %[storage]\n\t"\
1875
+ "eor %x[result_0], %x[original_0], %x[value_0]\n\t"\
1876
+ "eor %x[result_1], %x[original_1], %x[value_1]\n\t"\
1877
+ "st" st_mo "xp %w[tmp], %x[result_0], %x[result_1], %[storage]\n\t"\
1878
+ "cbnz %w[tmp], 1b\n\t"\
1879
+ : [tmp] "=&r" (tmp), [storage] "+Q" (storage),\
1880
+ [original_0] "=&r" (original.as_uint64[0u]), [original_1] "=&r" (original.as_uint64[1u]),\
1881
+ [result_0] "=&r" (result.as_uint64[0u]), [result_1] "=&r" (result.as_uint64[1u])\
1882
+ : [value_0] "r" (value.as_uint64[0u]), [value_1] "r" (value.as_uint64[1u])\
1883
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"\
1884
+ );
1885
+
1886
+ BOOST_ATOMIC_DETAIL_AARCH64_MO_SWITCH(order)
1887
+ #undef BOOST_ATOMIC_DETAIL_AARCH64_MO_INSN
1888
+
1889
+ return original.as_storage;
1890
+ }
1891
+
1892
+ static BOOST_FORCEINLINE bool test_and_set(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1893
+ {
1894
+ return !!exchange(storage, (storage_type)1, order);
1895
+ }
1896
+
1897
+ static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1898
+ {
1899
+ store(storage, (storage_type)0, order);
1900
+ }
1901
+ };
1902
+
1903
+ } // namespace detail
1904
+ } // namespace atomics
1905
+ } // namespace boost
1906
+
1907
+ #include <boost/atomic/detail/footer.hpp>
1908
+
1909
+ #endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_AARCH64_HPP_INCLUDED_