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
@@ -5,26 +5,28 @@
5
5
  *
6
6
  * Copyright (c) 2009 Helge Bahmann
7
7
  * Copyright (c) 2013 Tim Blechmann
8
- * Copyright (c) 2014 Andrey Semashev
8
+ * Copyright (c) 2014, 2020 Andrey Semashev
9
9
  */
10
10
  /*!
11
- * \file atomic/detail/ops_gcc_arm.hpp
11
+ * \file atomic/detail/core_arch_ops_gcc_arm.hpp
12
12
  *
13
- * This header contains implementation of the \c operations template.
13
+ * This header contains implementation of the \c core_arch_operations template.
14
14
  */
15
15
 
16
- #ifndef BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_
17
- #define BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_
16
+ #ifndef BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_
17
+ #define BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_
18
18
 
19
19
  #include <cstddef>
20
20
  #include <boost/cstdint.hpp>
21
21
  #include <boost/memory_order.hpp>
22
22
  #include <boost/atomic/detail/config.hpp>
23
- #include <boost/atomic/detail/storage_type.hpp>
24
- #include <boost/atomic/detail/integral_extend.hpp>
25
- #include <boost/atomic/detail/operations_fwd.hpp>
23
+ #include <boost/atomic/detail/storage_traits.hpp>
24
+ #include <boost/atomic/detail/integral_conversions.hpp>
25
+ #include <boost/atomic/detail/core_arch_operations_fwd.hpp>
26
26
  #include <boost/atomic/detail/ops_gcc_arm_common.hpp>
27
- #include <boost/atomic/capabilities.hpp>
27
+ #include <boost/atomic/detail/gcc_arm_asm_common.hpp>
28
+ #include <boost/atomic/detail/capabilities.hpp>
29
+ #include <boost/atomic/detail/header.hpp>
28
30
 
29
31
  #ifdef BOOST_HAS_PRAGMA_ONCE
30
32
  #pragma once
@@ -53,18 +55,17 @@ namespace detail {
53
55
  // LDREXH, LDREXB, STREXH and STREXB.
54
56
  // There are also double-word versions, LDREXD and STREXD.
55
57
  // (Actually it looks like these are available from version 6k onwards.)
56
- // FIXME these are not yet used; should be mostly a matter of copy-and-paste.
57
- // I think you can supply an immediate offset to the address.
58
58
 
59
- template< bool Signed >
60
- struct operations< 4u, Signed > :
61
- public gcc_arm_operations_base
59
+ template< bool Signed, bool Interprocess >
60
+ struct core_arch_operations< 4u, Signed, Interprocess > :
61
+ public core_arch_operations_gcc_arm_base
62
62
  {
63
- typedef typename make_storage_type< 4u >::type storage_type;
64
- typedef typename make_storage_type< 4u >::aligned aligned_storage_type;
63
+ typedef typename storage_traits< 4u >::type storage_type;
65
64
 
66
65
  static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 4u;
66
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 4u;
67
67
  static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
68
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
68
69
 
69
70
  static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
70
71
  {
@@ -82,17 +83,17 @@ struct operations< 4u, Signed > :
82
83
 
83
84
  static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
84
85
  {
85
- storage_type original;
86
86
  fence_before(order);
87
+ storage_type original;
87
88
  uint32_t tmp;
88
89
  __asm__ __volatile__
89
90
  (
90
91
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
91
- "1:\n"
92
- "ldrex %[original], %[storage]\n" // load the original value
93
- "strex %[tmp], %[value], %[storage]\n" // store the replacement, tmp = store failed
94
- "teq %[tmp], #0\n" // check if store succeeded
95
- "bne 1b\n"
92
+ "1:\n\t"
93
+ "ldrex %[original], %[storage]\n\t" // load the original value
94
+ "strex %[tmp], %[value], %[storage]\n\t" // store the replacement, tmp = store failed
95
+ "teq %[tmp], #0\n\t" // check if store succeeded
96
+ "bne 1b\n\t"
96
97
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
97
98
  : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)
98
99
  : [value] "r" (v)
@@ -106,25 +107,28 @@ struct operations< 4u, Signed > :
106
107
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
107
108
  {
108
109
  fence_before(success_order);
109
- uint32_t success;
110
+ bool success = false;
111
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
110
112
  uint32_t tmp;
113
+ #endif
111
114
  storage_type original;
112
115
  __asm__ __volatile__
113
116
  (
114
117
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
115
- "mov %[success], #0\n" // success = 0
116
- "ldrex %[original], %[storage]\n" // original = *(&storage)
117
- "cmp %[original], %[expected]\n" // flags = original==expected
118
- "itt eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
119
- "strexeq %[success], %[desired], %[storage]\n" // if (flags.equal) *(&storage) = desired, success = store failed
120
- "eoreq %[success], %[success], #1\n" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
118
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
119
+ "cmp %[original], %[expected]\n\t" // flags = original==expected
120
+ "itt eq\n\t" // [hint that the following 2 instructions are conditional on flags.equal]
121
+ "strexeq %[success], %[desired], %[storage]\n\t" // if (flags.equal) *(&storage) = desired, success = store failed
122
+ "eoreq %[success], %[success], #1\n\t" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
121
123
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
122
- : [original] "=&r" (original), // %0
123
- [success] "=&r" (success), // %1
124
- [tmp] "=&l" (tmp), // %2
125
- [storage] "+Q" (storage) // %3
126
- : [expected] "Ir" (expected), // %4
127
- [desired] "r" (desired) // %5
124
+ : [original] "=&r" (original),
125
+ [success] "+r" (success),
126
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
127
+ [tmp] "=&l" (tmp),
128
+ #endif
129
+ [storage] "+Q" (storage)
130
+ : [expected] "Ir" (expected),
131
+ [desired] "r" (desired)
128
132
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
129
133
  );
130
134
  if (success)
@@ -132,35 +136,38 @@ struct operations< 4u, Signed > :
132
136
  else
133
137
  fence_after(failure_order);
134
138
  expected = original;
135
- return !!success;
139
+ return success;
136
140
  }
137
141
 
138
142
  static BOOST_FORCEINLINE bool compare_exchange_strong(
139
143
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
140
144
  {
141
145
  fence_before(success_order);
142
- uint32_t success;
146
+ bool success = false;
147
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
143
148
  uint32_t tmp;
149
+ #endif
144
150
  storage_type original;
145
151
  __asm__ __volatile__
146
152
  (
147
153
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
148
- "mov %[success], #0\n" // success = 0
149
- "1:\n"
150
- "ldrex %[original], %[storage]\n" // original = *(&storage)
151
- "cmp %[original], %[expected]\n" // flags = original==expected
152
- "bne 2f\n" // if (!flags.equal) goto end
153
- "strex %[success], %[desired], %[storage]\n" // *(&storage) = desired, success = store failed
154
- "eors %[success], %[success], #1\n" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
155
- "beq 1b\n" // if (flags.equal) goto retry
156
- "2:\n"
154
+ "1:\n\t"
155
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
156
+ "cmp %[original], %[expected]\n\t" // flags = original==expected
157
+ "bne 2f\n\t" // if (!flags.equal) goto end
158
+ "strex %[success], %[desired], %[storage]\n\t" // *(&storage) = desired, success = store failed
159
+ "eors %[success], %[success], #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
160
+ "beq 1b\n\t" // if (flags.equal) goto retry
161
+ "2:\n\t"
157
162
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
158
- : [original] "=&r" (original), // %0
159
- [success] "=&r" (success), // %1
160
- [tmp] "=&l" (tmp), // %2
161
- [storage] "+Q" (storage) // %3
162
- : [expected] "Ir" (expected), // %4
163
- [desired] "r" (desired) // %5
163
+ : [original] "=&r" (original),
164
+ [success] "+r" (success),
165
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
166
+ [tmp] "=&l" (tmp),
167
+ #endif
168
+ [storage] "+Q" (storage)
169
+ : [expected] "Ir" (expected),
170
+ [desired] "r" (desired)
164
171
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
165
172
  );
166
173
  if (success)
@@ -168,7 +175,7 @@ struct operations< 4u, Signed > :
168
175
  else
169
176
  fence_after(failure_order);
170
177
  expected = original;
171
- return !!success;
178
+ return success;
172
179
  }
173
180
 
174
181
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
@@ -179,12 +186,12 @@ struct operations< 4u, Signed > :
179
186
  __asm__ __volatile__
180
187
  (
181
188
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
182
- "1:\n"
183
- "ldrex %[original], %[storage]\n" // original = *(&storage)
184
- "add %[result], %[original], %[value]\n" // result = original + value
185
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
186
- "teq %[tmp], #0\n" // flags = tmp==0
187
- "bne 1b\n" // if (!flags.equal) goto retry
189
+ "1:\n\t"
190
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
191
+ "add %[result], %[original], %[value]\n\t" // result = original + value
192
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
193
+ "teq %[tmp], #0\n\t" // flags = tmp==0
194
+ "bne 1b\n\t" // if (!flags.equal) goto retry
188
195
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
189
196
  : [original] "=&r" (original), // %0
190
197
  [result] "=&r" (result), // %1
@@ -205,12 +212,12 @@ struct operations< 4u, Signed > :
205
212
  __asm__ __volatile__
206
213
  (
207
214
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
208
- "1:\n"
209
- "ldrex %[original], %[storage]\n" // original = *(&storage)
210
- "sub %[result], %[original], %[value]\n" // result = original - value
211
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
212
- "teq %[tmp], #0\n" // flags = tmp==0
213
- "bne 1b\n" // if (!flags.equal) goto retry
215
+ "1:\n\t"
216
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
217
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
218
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
219
+ "teq %[tmp], #0\n\t" // flags = tmp==0
220
+ "bne 1b\n\t" // if (!flags.equal) goto retry
214
221
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
215
222
  : [original] "=&r" (original), // %0
216
223
  [result] "=&r" (result), // %1
@@ -231,12 +238,12 @@ struct operations< 4u, Signed > :
231
238
  __asm__ __volatile__
232
239
  (
233
240
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
234
- "1:\n"
235
- "ldrex %[original], %[storage]\n" // original = *(&storage)
236
- "and %[result], %[original], %[value]\n" // result = original & value
237
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
238
- "teq %[tmp], #0\n" // flags = tmp==0
239
- "bne 1b\n" // if (!flags.equal) goto retry
241
+ "1:\n\t"
242
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
243
+ "and %[result], %[original], %[value]\n\t" // result = original & value
244
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
245
+ "teq %[tmp], #0\n\t" // flags = tmp==0
246
+ "bne 1b\n\t" // if (!flags.equal) goto retry
240
247
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
241
248
  : [original] "=&r" (original), // %0
242
249
  [result] "=&r" (result), // %1
@@ -257,12 +264,12 @@ struct operations< 4u, Signed > :
257
264
  __asm__ __volatile__
258
265
  (
259
266
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
260
- "1:\n"
261
- "ldrex %[original], %[storage]\n" // original = *(&storage)
262
- "orr %[result], %[original], %[value]\n" // result = original | value
263
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
264
- "teq %[tmp], #0\n" // flags = tmp==0
265
- "bne 1b\n" // if (!flags.equal) goto retry
267
+ "1:\n\t"
268
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
269
+ "orr %[result], %[original], %[value]\n\t" // result = original | value
270
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
271
+ "teq %[tmp], #0\n\t" // flags = tmp==0
272
+ "bne 1b\n\t" // if (!flags.equal) goto retry
266
273
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
267
274
  : [original] "=&r" (original), // %0
268
275
  [result] "=&r" (result), // %1
@@ -283,12 +290,12 @@ struct operations< 4u, Signed > :
283
290
  __asm__ __volatile__
284
291
  (
285
292
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
286
- "1:\n"
287
- "ldrex %[original], %[storage]\n" // original = *(&storage)
288
- "eor %[result], %[original], %[value]\n" // result = original ^ value
289
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
290
- "teq %[tmp], #0\n" // flags = tmp==0
291
- "bne 1b\n" // if (!flags.equal) goto retry
293
+ "1:\n\t"
294
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
295
+ "eor %[result], %[original], %[value]\n\t" // result = original ^ value
296
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
297
+ "teq %[tmp], #0\n\t" // flags = tmp==0
298
+ "bne 1b\n\t" // if (!flags.equal) goto retry
292
299
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
293
300
  : [original] "=&r" (original), // %0
294
301
  [result] "=&r" (result), // %1
@@ -308,22 +315,23 @@ struct operations< 4u, Signed > :
308
315
 
309
316
  static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
310
317
  {
311
- store(storage, 0, order);
318
+ store(storage, (storage_type)0, order);
312
319
  }
313
320
  };
314
321
 
315
322
  #if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB)
316
323
 
317
- template< bool Signed >
318
- struct operations< 1u, Signed > :
319
- public gcc_arm_operations_base
324
+ template< bool Signed, bool Interprocess >
325
+ struct core_arch_operations< 1u, Signed, Interprocess > :
326
+ public core_arch_operations_gcc_arm_base
320
327
  {
321
- typedef typename make_storage_type< 1u >::type storage_type;
322
- typedef typename make_storage_type< 1u >::aligned aligned_storage_type;
323
- typedef typename make_storage_type< 4u >::type extended_storage_type;
328
+ typedef typename storage_traits< 1u >::type storage_type;
329
+ typedef typename storage_traits< 4u >::type extended_storage_type;
324
330
 
325
331
  static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 1u;
332
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 1u;
326
333
  static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
334
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
327
335
 
328
336
  static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
329
337
  {
@@ -341,17 +349,17 @@ struct operations< 1u, Signed > :
341
349
 
342
350
  static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
343
351
  {
344
- extended_storage_type original;
345
352
  fence_before(order);
353
+ extended_storage_type original;
346
354
  uint32_t tmp;
347
355
  __asm__ __volatile__
348
356
  (
349
357
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
350
- "1:\n"
351
- "ldrexb %[original], %[storage]\n" // load the original value and zero-extend to 32 bits
352
- "strexb %[tmp], %[value], %[storage]\n" // store the replacement, tmp = store failed
353
- "teq %[tmp], #0\n" // check if store succeeded
354
- "bne 1b\n"
358
+ "1:\n\t"
359
+ "ldrexb %[original], %[storage]\n\t" // load the original value and zero-extend to 32 bits
360
+ "strexb %[tmp], %[value], %[storage]\n\t" // store the replacement, tmp = store failed
361
+ "teq %[tmp], #0\n\t" // check if store succeeded
362
+ "bne 1b\n\t"
355
363
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
356
364
  : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)
357
365
  : [value] "r" (v)
@@ -365,25 +373,28 @@ struct operations< 1u, Signed > :
365
373
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
366
374
  {
367
375
  fence_before(success_order);
368
- uint32_t success;
376
+ bool success = false;
377
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
369
378
  uint32_t tmp;
379
+ #endif
370
380
  extended_storage_type original;
371
381
  __asm__ __volatile__
372
382
  (
373
383
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
374
- "mov %[success], #0\n" // success = 0
375
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
376
- "cmp %[original], %[expected]\n" // flags = original==expected
377
- "itt eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
378
- "strexbeq %[success], %[desired], %[storage]\n" // if (flags.equal) *(&storage) = desired, success = store failed
379
- "eoreq %[success], %[success], #1\n" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
384
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
385
+ "cmp %[original], %[expected]\n\t" // flags = original==expected
386
+ "itt eq\n\t" // [hint that the following 2 instructions are conditional on flags.equal]
387
+ "strexbeq %[success], %[desired], %[storage]\n\t" // if (flags.equal) *(&storage) = desired, success = store failed
388
+ "eoreq %[success], %[success], #1\n\t" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
380
389
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
381
- : [original] "=&r" (original), // %0
382
- [success] "=&r" (success), // %1
383
- [tmp] "=&l" (tmp), // %2
384
- [storage] "+Q" (storage) // %3
385
- : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
386
- [desired] "r" (desired) // %5
390
+ : [original] "=&r" (original),
391
+ [success] "+r" (success),
392
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
393
+ [tmp] "=&l" (tmp),
394
+ #endif
395
+ [storage] "+Q" (storage)
396
+ : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)),
397
+ [desired] "r" (desired)
387
398
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
388
399
  );
389
400
  if (success)
@@ -391,35 +402,38 @@ struct operations< 1u, Signed > :
391
402
  else
392
403
  fence_after(failure_order);
393
404
  expected = static_cast< storage_type >(original);
394
- return !!success;
405
+ return success;
395
406
  }
396
407
 
397
408
  static BOOST_FORCEINLINE bool compare_exchange_strong(
398
409
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
399
410
  {
400
411
  fence_before(success_order);
401
- uint32_t success;
412
+ bool success = false;
413
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
402
414
  uint32_t tmp;
415
+ #endif
403
416
  extended_storage_type original;
404
417
  __asm__ __volatile__
405
418
  (
406
419
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
407
- "mov %[success], #0\n" // success = 0
408
- "1:\n"
409
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
410
- "cmp %[original], %[expected]\n" // flags = original==expected
411
- "bne 2f\n" // if (!flags.equal) goto end
412
- "strexb %[success], %[desired], %[storage]\n" // *(&storage) = desired, success = store failed
413
- "eors %[success], %[success], #1\n" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
414
- "beq 1b\n" // if (flags.equal) goto retry
415
- "2:\n"
420
+ "1:\n\t"
421
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
422
+ "cmp %[original], %[expected]\n\t" // flags = original==expected
423
+ "bne 2f\n\t" // if (!flags.equal) goto end
424
+ "strexb %[success], %[desired], %[storage]\n\t" // *(&storage) = desired, success = store failed
425
+ "eors %[success], %[success], #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
426
+ "beq 1b\n\t" // if (flags.equal) goto retry
427
+ "2:\n\t"
416
428
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
417
- : [original] "=&r" (original), // %0
418
- [success] "=&r" (success), // %1
419
- [tmp] "=&l" (tmp), // %2
420
- [storage] "+Q" (storage) // %3
421
- : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
422
- [desired] "r" (desired) // %5
429
+ : [original] "=&r" (original),
430
+ [success] "+r" (success),
431
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
432
+ [tmp] "=&l" (tmp),
433
+ #endif
434
+ [storage] "+Q" (storage)
435
+ : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)),
436
+ [desired] "r" (desired)
423
437
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
424
438
  );
425
439
  if (success)
@@ -427,7 +441,7 @@ struct operations< 1u, Signed > :
427
441
  else
428
442
  fence_after(failure_order);
429
443
  expected = static_cast< storage_type >(original);
430
- return !!success;
444
+ return success;
431
445
  }
432
446
 
433
447
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
@@ -438,12 +452,12 @@ struct operations< 1u, Signed > :
438
452
  __asm__ __volatile__
439
453
  (
440
454
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
441
- "1:\n"
442
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
443
- "add %[result], %[original], %[value]\n" // result = original + value
444
- "strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
445
- "teq %[tmp], #0\n" // flags = tmp==0
446
- "bne 1b\n" // if (!flags.equal) goto retry
455
+ "1:\n\t"
456
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
457
+ "add %[result], %[original], %[value]\n\t" // result = original + value
458
+ "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
459
+ "teq %[tmp], #0\n\t" // flags = tmp==0
460
+ "bne 1b\n\t" // if (!flags.equal) goto retry
447
461
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
448
462
  : [original] "=&r" (original), // %0
449
463
  [result] "=&r" (result), // %1
@@ -464,12 +478,12 @@ struct operations< 1u, Signed > :
464
478
  __asm__ __volatile__
465
479
  (
466
480
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
467
- "1:\n"
468
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
469
- "sub %[result], %[original], %[value]\n" // result = original - value
470
- "strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
471
- "teq %[tmp], #0\n" // flags = tmp==0
472
- "bne 1b\n" // if (!flags.equal) goto retry
481
+ "1:\n\t"
482
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
483
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
484
+ "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
485
+ "teq %[tmp], #0\n\t" // flags = tmp==0
486
+ "bne 1b\n\t" // if (!flags.equal) goto retry
473
487
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
474
488
  : [original] "=&r" (original), // %0
475
489
  [result] "=&r" (result), // %1
@@ -490,12 +504,12 @@ struct operations< 1u, Signed > :
490
504
  __asm__ __volatile__
491
505
  (
492
506
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
493
- "1:\n"
494
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
495
- "and %[result], %[original], %[value]\n" // result = original & value
496
- "strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
497
- "teq %[tmp], #0\n" // flags = tmp==0
498
- "bne 1b\n" // if (!flags.equal) goto retry
507
+ "1:\n\t"
508
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
509
+ "and %[result], %[original], %[value]\n\t" // result = original & value
510
+ "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
511
+ "teq %[tmp], #0\n\t" // flags = tmp==0
512
+ "bne 1b\n\t" // if (!flags.equal) goto retry
499
513
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
500
514
  : [original] "=&r" (original), // %0
501
515
  [result] "=&r" (result), // %1
@@ -516,12 +530,12 @@ struct operations< 1u, Signed > :
516
530
  __asm__ __volatile__
517
531
  (
518
532
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
519
- "1:\n"
520
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
521
- "orr %[result], %[original], %[value]\n" // result = original | value
522
- "strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
523
- "teq %[tmp], #0\n" // flags = tmp==0
524
- "bne 1b\n" // if (!flags.equal) goto retry
533
+ "1:\n\t"
534
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
535
+ "orr %[result], %[original], %[value]\n\t" // result = original | value
536
+ "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
537
+ "teq %[tmp], #0\n\t" // flags = tmp==0
538
+ "bne 1b\n\t" // if (!flags.equal) goto retry
525
539
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
526
540
  : [original] "=&r" (original), // %0
527
541
  [result] "=&r" (result), // %1
@@ -542,12 +556,12 @@ struct operations< 1u, Signed > :
542
556
  __asm__ __volatile__
543
557
  (
544
558
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
545
- "1:\n"
546
- "ldrexb %[original], %[storage]\n" // original = zero_extend(*(&storage))
547
- "eor %[result], %[original], %[value]\n" // result = original ^ value
548
- "strexb %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
549
- "teq %[tmp], #0\n" // flags = tmp==0
550
- "bne 1b\n" // if (!flags.equal) goto retry
559
+ "1:\n\t"
560
+ "ldrexb %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
561
+ "eor %[result], %[original], %[value]\n\t" // result = original ^ value
562
+ "strexb %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
563
+ "teq %[tmp], #0\n\t" // flags = tmp==0
564
+ "bne 1b\n\t" // if (!flags.equal) goto retry
551
565
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
552
566
  : [original] "=&r" (original), // %0
553
567
  [result] "=&r" (result), // %1
@@ -567,34 +581,34 @@ struct operations< 1u, Signed > :
567
581
 
568
582
  static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
569
583
  {
570
- store(storage, 0, order);
584
+ store(storage, (storage_type)0, order);
571
585
  }
572
586
  };
573
587
 
574
588
  #else // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXB_STREXB)
575
589
 
576
- template< >
577
- struct operations< 1u, false > :
578
- public operations< 4u, false >
590
+ template< bool Interprocess >
591
+ struct core_arch_operations< 1u, false, Interprocess > :
592
+ public core_arch_operations< 4u, false, Interprocess >
579
593
  {
580
- typedef operations< 4u, false > base_type;
581
- typedef base_type::storage_type storage_type;
594
+ typedef core_arch_operations< 4u, false, Interprocess > base_type;
595
+ typedef typename base_type::storage_type storage_type;
582
596
 
583
597
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
584
598
  {
585
- fence_before(order);
599
+ base_type::fence_before(order);
586
600
  uint32_t tmp;
587
601
  storage_type original, result;
588
602
  __asm__ __volatile__
589
603
  (
590
604
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
591
- "1:\n"
592
- "ldrex %[original], %[storage]\n" // original = *(&storage)
593
- "add %[result], %[original], %[value]\n" // result = original + value
594
- "uxtb %[result], %[result]\n" // zero extend result from 8 to 32 bits
595
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
596
- "teq %[tmp], #0\n" // flags = tmp==0
597
- "bne 1b\n" // if (!flags.equal) goto retry
605
+ "1:\n\t"
606
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
607
+ "add %[result], %[original], %[value]\n\t" // result = original + value
608
+ "uxtb %[result], %[result]\n\t" // zero extend result from 8 to 32 bits
609
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
610
+ "teq %[tmp], #0\n\t" // flags = tmp==0
611
+ "bne 1b\n\t" // if (!flags.equal) goto retry
598
612
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
599
613
  : [original] "=&r" (original), // %0
600
614
  [result] "=&r" (result), // %1
@@ -603,25 +617,25 @@ struct operations< 1u, false > :
603
617
  : [value] "Ir" (v) // %4
604
618
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
605
619
  );
606
- fence_after(order);
620
+ base_type::fence_after(order);
607
621
  return original;
608
622
  }
609
623
 
610
624
  static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
611
625
  {
612
- fence_before(order);
626
+ base_type::fence_before(order);
613
627
  uint32_t tmp;
614
628
  storage_type original, result;
615
629
  __asm__ __volatile__
616
630
  (
617
631
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
618
- "1:\n"
619
- "ldrex %[original], %[storage]\n" // original = *(&storage)
620
- "sub %[result], %[original], %[value]\n" // result = original - value
621
- "uxtb %[result], %[result]\n" // zero extend result from 8 to 32 bits
622
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
623
- "teq %[tmp], #0\n" // flags = tmp==0
624
- "bne 1b\n" // if (!flags.equal) goto retry
632
+ "1:\n\t"
633
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
634
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
635
+ "uxtb %[result], %[result]\n\t" // zero extend result from 8 to 32 bits
636
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
637
+ "teq %[tmp], #0\n\t" // flags = tmp==0
638
+ "bne 1b\n\t" // if (!flags.equal) goto retry
625
639
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
626
640
  : [original] "=&r" (original), // %0
627
641
  [result] "=&r" (result), // %1
@@ -630,33 +644,33 @@ struct operations< 1u, false > :
630
644
  : [value] "Ir" (v) // %4
631
645
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
632
646
  );
633
- fence_after(order);
647
+ base_type::fence_after(order);
634
648
  return original;
635
649
  }
636
650
  };
637
651
 
638
- template< >
639
- struct operations< 1u, true > :
640
- public operations< 4u, true >
652
+ template< bool Interprocess >
653
+ struct core_arch_operations< 1u, true, Interprocess > :
654
+ public core_arch_operations< 4u, true, Interprocess >
641
655
  {
642
- typedef operations< 4u, true > base_type;
643
- typedef base_type::storage_type storage_type;
656
+ typedef core_arch_operations< 4u, true, Interprocess > base_type;
657
+ typedef typename base_type::storage_type storage_type;
644
658
 
645
659
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
646
660
  {
647
- fence_before(order);
661
+ base_type::fence_before(order);
648
662
  uint32_t tmp;
649
663
  storage_type original, result;
650
664
  __asm__ __volatile__
651
665
  (
652
666
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
653
- "1:\n"
654
- "ldrex %[original], %[storage]\n" // original = *(&storage)
655
- "add %[result], %[original], %[value]\n" // result = original + value
656
- "sxtb %[result], %[result]\n" // sign extend result from 8 to 32 bits
657
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
658
- "teq %[tmp], #0\n" // flags = tmp==0
659
- "bne 1b\n" // if (!flags.equal) goto retry
667
+ "1:\n\t"
668
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
669
+ "add %[result], %[original], %[value]\n\t" // result = original + value
670
+ "sxtb %[result], %[result]\n\t" // sign extend result from 8 to 32 bits
671
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
672
+ "teq %[tmp], #0\n\t" // flags = tmp==0
673
+ "bne 1b\n\t" // if (!flags.equal) goto retry
660
674
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
661
675
  : [original] "=&r" (original), // %0
662
676
  [result] "=&r" (result), // %1
@@ -665,25 +679,25 @@ struct operations< 1u, true > :
665
679
  : [value] "Ir" (v) // %4
666
680
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
667
681
  );
668
- fence_after(order);
682
+ base_type::fence_after(order);
669
683
  return original;
670
684
  }
671
685
 
672
686
  static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
673
687
  {
674
- fence_before(order);
688
+ base_type::fence_before(order);
675
689
  uint32_t tmp;
676
690
  storage_type original, result;
677
691
  __asm__ __volatile__
678
692
  (
679
693
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
680
- "1:\n"
681
- "ldrex %[original], %[storage]\n" // original = *(&storage)
682
- "sub %[result], %[original], %[value]\n" // result = original - value
683
- "sxtb %[result], %[result]\n" // sign extend result from 8 to 32 bits
684
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
685
- "teq %[tmp], #0\n" // flags = tmp==0
686
- "bne 1b\n" // if (!flags.equal) goto retry
694
+ "1:\n\t"
695
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
696
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
697
+ "sxtb %[result], %[result]\n\t" // sign extend result from 8 to 32 bits
698
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
699
+ "teq %[tmp], #0\n\t" // flags = tmp==0
700
+ "bne 1b\n\t" // if (!flags.equal) goto retry
687
701
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
688
702
  : [original] "=&r" (original), // %0
689
703
  [result] "=&r" (result), // %1
@@ -692,7 +706,7 @@ struct operations< 1u, true > :
692
706
  : [value] "Ir" (v) // %4
693
707
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
694
708
  );
695
- fence_after(order);
709
+ base_type::fence_after(order);
696
710
  return original;
697
711
  }
698
712
  };
@@ -701,16 +715,17 @@ struct operations< 1u, true > :
701
715
 
702
716
  #if defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH)
703
717
 
704
- template< bool Signed >
705
- struct operations< 2u, Signed > :
706
- public gcc_arm_operations_base
718
+ template< bool Signed, bool Interprocess >
719
+ struct core_arch_operations< 2u, Signed, Interprocess > :
720
+ public core_arch_operations_gcc_arm_base
707
721
  {
708
- typedef typename make_storage_type< 2u >::type storage_type;
709
- typedef typename make_storage_type< 2u >::aligned aligned_storage_type;
710
- typedef typename make_storage_type< 4u >::type extended_storage_type;
722
+ typedef typename storage_traits< 2u >::type storage_type;
723
+ typedef typename storage_traits< 4u >::type extended_storage_type;
711
724
 
712
725
  static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 2u;
726
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 2u;
713
727
  static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
728
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
714
729
 
715
730
  static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
716
731
  {
@@ -728,17 +743,17 @@ struct operations< 2u, Signed > :
728
743
 
729
744
  static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
730
745
  {
731
- extended_storage_type original;
732
746
  fence_before(order);
747
+ extended_storage_type original;
733
748
  uint32_t tmp;
734
749
  __asm__ __volatile__
735
750
  (
736
751
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
737
- "1:\n"
738
- "ldrexh %[original], %[storage]\n" // load the original value and zero-extend to 32 bits
739
- "strexh %[tmp], %[value], %[storage]\n" // store the replacement, tmp = store failed
740
- "teq %[tmp], #0\n" // check if store succeeded
741
- "bne 1b\n"
752
+ "1:\n\t"
753
+ "ldrexh %[original], %[storage]\n\t" // load the original value and zero-extend to 32 bits
754
+ "strexh %[tmp], %[value], %[storage]\n\t" // store the replacement, tmp = store failed
755
+ "teq %[tmp], #0\n\t" // check if store succeeded
756
+ "bne 1b\n\t"
742
757
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
743
758
  : [tmp] "=&l" (tmp), [original] "=&r" (original), [storage] "+Q" (storage)
744
759
  : [value] "r" (v)
@@ -752,25 +767,28 @@ struct operations< 2u, Signed > :
752
767
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
753
768
  {
754
769
  fence_before(success_order);
755
- uint32_t success;
770
+ bool success = false;
771
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
756
772
  uint32_t tmp;
773
+ #endif
757
774
  extended_storage_type original;
758
775
  __asm__ __volatile__
759
776
  (
760
777
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
761
- "mov %[success], #0\n" // success = 0
762
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
763
- "cmp %[original], %[expected]\n" // flags = original==expected
764
- "itt eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
765
- "strexheq %[success], %[desired], %[storage]\n" // if (flags.equal) *(&storage) = desired, success = store failed
766
- "eoreq %[success], %[success], #1\n" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
778
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
779
+ "cmp %[original], %[expected]\n\t" // flags = original==expected
780
+ "itt eq\n\t" // [hint that the following 2 instructions are conditional on flags.equal]
781
+ "strexheq %[success], %[desired], %[storage]\n\t" // if (flags.equal) *(&storage) = desired, success = store failed
782
+ "eoreq %[success], %[success], #1\n\t" // if (flags.equal) success ^= 1 (i.e. make it 1 if store succeeded)
767
783
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
768
- : [original] "=&r" (original), // %0
769
- [success] "=&r" (success), // %1
770
- [tmp] "=&l" (tmp), // %2
771
- [storage] "+Q" (storage) // %3
772
- : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
773
- [desired] "r" (desired) // %5
784
+ : [original] "=&r" (original),
785
+ [success] "+r" (success),
786
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
787
+ [tmp] "=&l" (tmp),
788
+ #endif
789
+ [storage] "+Q" (storage)
790
+ : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)),
791
+ [desired] "r" (desired)
774
792
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
775
793
  );
776
794
  if (success)
@@ -778,35 +796,38 @@ struct operations< 2u, Signed > :
778
796
  else
779
797
  fence_after(failure_order);
780
798
  expected = static_cast< storage_type >(original);
781
- return !!success;
799
+ return success;
782
800
  }
783
801
 
784
802
  static BOOST_FORCEINLINE bool compare_exchange_strong(
785
803
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
786
804
  {
787
805
  fence_before(success_order);
788
- uint32_t success;
806
+ bool success = false;
807
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
789
808
  uint32_t tmp;
809
+ #endif
790
810
  extended_storage_type original;
791
811
  __asm__ __volatile__
792
812
  (
793
813
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
794
- "mov %[success], #0\n" // success = 0
795
- "1:\n"
796
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
797
- "cmp %[original], %[expected]\n" // flags = original==expected
798
- "bne 2f\n" // if (!flags.equal) goto end
799
- "strexh %[success], %[desired], %[storage]\n" // *(&storage) = desired, success = store failed
800
- "eors %[success], %[success], #1\n" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
801
- "beq 1b\n" // if (flags.equal) goto retry
802
- "2:\n"
814
+ "1:\n\t"
815
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
816
+ "cmp %[original], %[expected]\n\t" // flags = original==expected
817
+ "bne 2f\n\t" // if (!flags.equal) goto end
818
+ "strexh %[success], %[desired], %[storage]\n\t" // *(&storage) = desired, success = store failed
819
+ "eors %[success], %[success], #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded); flags.equal = success == 0
820
+ "beq 1b\n\t" // if (flags.equal) goto retry
821
+ "2:\n\t"
803
822
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
804
- : [original] "=&r" (original), // %0
805
- [success] "=&r" (success), // %1
806
- [tmp] "=&l" (tmp), // %2
807
- [storage] "+Q" (storage) // %3
808
- : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)), // %4
809
- [desired] "r" (desired) // %5
823
+ : [original] "=&r" (original),
824
+ [success] "+r" (success),
825
+ #if !defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
826
+ [tmp] "=&l" (tmp),
827
+ #endif
828
+ [storage] "+Q" (storage)
829
+ : [expected] "Ir" (atomics::detail::zero_extend< extended_storage_type >(expected)),
830
+ [desired] "r" (desired)
810
831
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
811
832
  );
812
833
  if (success)
@@ -814,7 +835,7 @@ struct operations< 2u, Signed > :
814
835
  else
815
836
  fence_after(failure_order);
816
837
  expected = static_cast< storage_type >(original);
817
- return !!success;
838
+ return success;
818
839
  }
819
840
 
820
841
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
@@ -825,12 +846,12 @@ struct operations< 2u, Signed > :
825
846
  __asm__ __volatile__
826
847
  (
827
848
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
828
- "1:\n"
829
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
830
- "add %[result], %[original], %[value]\n" // result = original + value
831
- "strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
832
- "teq %[tmp], #0\n" // flags = tmp==0
833
- "bne 1b\n" // if (!flags.equal) goto retry
849
+ "1:\n\t"
850
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
851
+ "add %[result], %[original], %[value]\n\t" // result = original + value
852
+ "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
853
+ "teq %[tmp], #0\n\t" // flags = tmp==0
854
+ "bne 1b\n\t" // if (!flags.equal) goto retry
834
855
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
835
856
  : [original] "=&r" (original), // %0
836
857
  [result] "=&r" (result), // %1
@@ -851,12 +872,12 @@ struct operations< 2u, Signed > :
851
872
  __asm__ __volatile__
852
873
  (
853
874
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
854
- "1:\n"
855
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
856
- "sub %[result], %[original], %[value]\n" // result = original - value
857
- "strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
858
- "teq %[tmp], #0\n" // flags = tmp==0
859
- "bne 1b\n" // if (!flags.equal) goto retry
875
+ "1:\n\t"
876
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
877
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
878
+ "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
879
+ "teq %[tmp], #0\n\t" // flags = tmp==0
880
+ "bne 1b\n\t" // if (!flags.equal) goto retry
860
881
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
861
882
  : [original] "=&r" (original), // %0
862
883
  [result] "=&r" (result), // %1
@@ -877,12 +898,12 @@ struct operations< 2u, Signed > :
877
898
  __asm__ __volatile__
878
899
  (
879
900
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
880
- "1:\n"
881
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
882
- "and %[result], %[original], %[value]\n" // result = original & value
883
- "strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
884
- "teq %[tmp], #0\n" // flags = tmp==0
885
- "bne 1b\n" // if (!flags.equal) goto retry
901
+ "1:\n\t"
902
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
903
+ "and %[result], %[original], %[value]\n\t" // result = original & value
904
+ "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
905
+ "teq %[tmp], #0\n\t" // flags = tmp==0
906
+ "bne 1b\n\t" // if (!flags.equal) goto retry
886
907
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
887
908
  : [original] "=&r" (original), // %0
888
909
  [result] "=&r" (result), // %1
@@ -903,12 +924,12 @@ struct operations< 2u, Signed > :
903
924
  __asm__ __volatile__
904
925
  (
905
926
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
906
- "1:\n"
907
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
908
- "orr %[result], %[original], %[value]\n" // result = original | value
909
- "strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
910
- "teq %[tmp], #0\n" // flags = tmp==0
911
- "bne 1b\n" // if (!flags.equal) goto retry
927
+ "1:\n\t"
928
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
929
+ "orr %[result], %[original], %[value]\n\t" // result = original | value
930
+ "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
931
+ "teq %[tmp], #0\n\t" // flags = tmp==0
932
+ "bne 1b\n\t" // if (!flags.equal) goto retry
912
933
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
913
934
  : [original] "=&r" (original), // %0
914
935
  [result] "=&r" (result), // %1
@@ -929,12 +950,12 @@ struct operations< 2u, Signed > :
929
950
  __asm__ __volatile__
930
951
  (
931
952
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
932
- "1:\n"
933
- "ldrexh %[original], %[storage]\n" // original = zero_extend(*(&storage))
934
- "eor %[result], %[original], %[value]\n" // result = original ^ value
935
- "strexh %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
936
- "teq %[tmp], #0\n" // flags = tmp==0
937
- "bne 1b\n" // if (!flags.equal) goto retry
953
+ "1:\n\t"
954
+ "ldrexh %[original], %[storage]\n\t" // original = zero_extend(*(&storage))
955
+ "eor %[result], %[original], %[value]\n\t" // result = original ^ value
956
+ "strexh %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
957
+ "teq %[tmp], #0\n\t" // flags = tmp==0
958
+ "bne 1b\n\t" // if (!flags.equal) goto retry
938
959
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
939
960
  : [original] "=&r" (original), // %0
940
961
  [result] "=&r" (result), // %1
@@ -954,34 +975,34 @@ struct operations< 2u, Signed > :
954
975
 
955
976
  static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
956
977
  {
957
- store(storage, 0, order);
978
+ store(storage, (storage_type)0, order);
958
979
  }
959
980
  };
960
981
 
961
982
  #else // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXH_STREXH)
962
983
 
963
- template< >
964
- struct operations< 2u, false > :
965
- public operations< 4u, false >
984
+ template< bool Interprocess >
985
+ struct core_arch_operations< 2u, false, Interprocess > :
986
+ public core_arch_operations< 4u, false, Interprocess >
966
987
  {
967
- typedef operations< 4u, false > base_type;
968
- typedef base_type::storage_type storage_type;
988
+ typedef core_arch_operations< 4u, false, Interprocess > base_type;
989
+ typedef typename base_type::storage_type storage_type;
969
990
 
970
991
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
971
992
  {
972
- fence_before(order);
993
+ base_type::fence_before(order);
973
994
  uint32_t tmp;
974
995
  storage_type original, result;
975
996
  __asm__ __volatile__
976
997
  (
977
998
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
978
- "1:\n"
979
- "ldrex %[original], %[storage]\n" // original = *(&storage)
980
- "add %[result], %[original], %[value]\n" // result = original + value
981
- "uxth %[result], %[result]\n" // zero extend result from 16 to 32 bits
982
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
983
- "teq %[tmp], #0\n" // flags = tmp==0
984
- "bne 1b\n" // if (!flags.equal) goto retry
999
+ "1:\n\t"
1000
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
1001
+ "add %[result], %[original], %[value]\n\t" // result = original + value
1002
+ "uxth %[result], %[result]\n\t" // zero extend result from 16 to 32 bits
1003
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
1004
+ "teq %[tmp], #0\n\t" // flags = tmp==0
1005
+ "bne 1b\n\t" // if (!flags.equal) goto retry
985
1006
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
986
1007
  : [original] "=&r" (original), // %0
987
1008
  [result] "=&r" (result), // %1
@@ -990,25 +1011,25 @@ struct operations< 2u, false > :
990
1011
  : [value] "Ir" (v) // %4
991
1012
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
992
1013
  );
993
- fence_after(order);
1014
+ base_type::fence_after(order);
994
1015
  return original;
995
1016
  }
996
1017
 
997
1018
  static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
998
1019
  {
999
- fence_before(order);
1020
+ base_type::fence_before(order);
1000
1021
  uint32_t tmp;
1001
1022
  storage_type original, result;
1002
1023
  __asm__ __volatile__
1003
1024
  (
1004
1025
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
1005
- "1:\n"
1006
- "ldrex %[original], %[storage]\n" // original = *(&storage)
1007
- "sub %[result], %[original], %[value]\n" // result = original - value
1008
- "uxth %[result], %[result]\n" // zero extend result from 16 to 32 bits
1009
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
1010
- "teq %[tmp], #0\n" // flags = tmp==0
1011
- "bne 1b\n" // if (!flags.equal) goto retry
1026
+ "1:\n\t"
1027
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
1028
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
1029
+ "uxth %[result], %[result]\n\t" // zero extend result from 16 to 32 bits
1030
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
1031
+ "teq %[tmp], #0\n\t" // flags = tmp==0
1032
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1012
1033
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
1013
1034
  : [original] "=&r" (original), // %0
1014
1035
  [result] "=&r" (result), // %1
@@ -1017,33 +1038,33 @@ struct operations< 2u, false > :
1017
1038
  : [value] "Ir" (v) // %4
1018
1039
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1019
1040
  );
1020
- fence_after(order);
1041
+ base_type::fence_after(order);
1021
1042
  return original;
1022
1043
  }
1023
1044
  };
1024
1045
 
1025
- template< >
1026
- struct operations< 2u, true > :
1027
- public operations< 4u, true >
1046
+ template< bool Interprocess >
1047
+ struct core_arch_operations< 2u, true, Interprocess > :
1048
+ public core_arch_operations< 4u, true, Interprocess >
1028
1049
  {
1029
- typedef operations< 4u, true > base_type;
1030
- typedef base_type::storage_type storage_type;
1050
+ typedef core_arch_operations< 4u, true, Interprocess > base_type;
1051
+ typedef typename base_type::storage_type storage_type;
1031
1052
 
1032
1053
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1033
1054
  {
1034
- fence_before(order);
1055
+ base_type::fence_before(order);
1035
1056
  uint32_t tmp;
1036
1057
  storage_type original, result;
1037
1058
  __asm__ __volatile__
1038
1059
  (
1039
1060
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
1040
- "1:\n"
1041
- "ldrex %[original], %[storage]\n" // original = *(&storage)
1042
- "add %[result], %[original], %[value]\n" // result = original + value
1043
- "sxth %[result], %[result]\n" // sign extend result from 16 to 32 bits
1044
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
1045
- "teq %[tmp], #0\n" // flags = tmp==0
1046
- "bne 1b\n" // if (!flags.equal) goto retry
1061
+ "1:\n\t"
1062
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
1063
+ "add %[result], %[original], %[value]\n\t" // result = original + value
1064
+ "sxth %[result], %[result]\n\t" // sign extend result from 16 to 32 bits
1065
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
1066
+ "teq %[tmp], #0\n\t" // flags = tmp==0
1067
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1047
1068
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
1048
1069
  : [original] "=&r" (original), // %0
1049
1070
  [result] "=&r" (result), // %1
@@ -1052,25 +1073,25 @@ struct operations< 2u, true > :
1052
1073
  : [value] "Ir" (v) // %4
1053
1074
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1054
1075
  );
1055
- fence_after(order);
1076
+ base_type::fence_after(order);
1056
1077
  return original;
1057
1078
  }
1058
1079
 
1059
1080
  static BOOST_FORCEINLINE storage_type fetch_sub(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1060
1081
  {
1061
- fence_before(order);
1082
+ base_type::fence_before(order);
1062
1083
  uint32_t tmp;
1063
1084
  storage_type original, result;
1064
1085
  __asm__ __volatile__
1065
1086
  (
1066
1087
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%[tmp])
1067
- "1:\n"
1068
- "ldrex %[original], %[storage]\n" // original = *(&storage)
1069
- "sub %[result], %[original], %[value]\n" // result = original - value
1070
- "sxth %[result], %[result]\n" // sign extend result from 16 to 32 bits
1071
- "strex %[tmp], %[result], %[storage]\n" // *(&storage) = result, tmp = store failed
1072
- "teq %[tmp], #0\n" // flags = tmp==0
1073
- "bne 1b\n" // if (!flags.equal) goto retry
1088
+ "1:\n\t"
1089
+ "ldrex %[original], %[storage]\n\t" // original = *(&storage)
1090
+ "sub %[result], %[original], %[value]\n\t" // result = original - value
1091
+ "sxth %[result], %[result]\n\t" // sign extend result from 16 to 32 bits
1092
+ "strex %[tmp], %[result], %[storage]\n\t" // *(&storage) = result, tmp = store failed
1093
+ "teq %[tmp], #0\n\t" // flags = tmp==0
1094
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1074
1095
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%[tmp])
1075
1096
  : [original] "=&r" (original), // %0
1076
1097
  [result] "=&r" (result), // %1
@@ -1079,7 +1100,7 @@ struct operations< 2u, true > :
1079
1100
  : [value] "Ir" (v) // %4
1080
1101
  : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1081
1102
  );
1082
- fence_after(order);
1103
+ base_type::fence_after(order);
1083
1104
  return original;
1084
1105
  }
1085
1106
  };
@@ -1099,15 +1120,16 @@ struct operations< 2u, true > :
1099
1120
  // and the upper half (Rt2) - via the same placeholder with an 'H' after the '%' sign (e.g. %H0).
1100
1121
  // See: http://hardwarebug.org/2010/07/06/arm-inline-asm-secrets/
1101
1122
 
1102
- template< bool Signed >
1103
- struct operations< 8u, Signed > :
1104
- public gcc_arm_operations_base
1123
+ template< bool Signed, bool Interprocess >
1124
+ struct core_arch_operations< 8u, Signed, Interprocess > :
1125
+ public core_arch_operations_gcc_arm_base
1105
1126
  {
1106
- typedef typename make_storage_type< 8u >::type storage_type;
1107
- typedef typename make_storage_type< 8u >::aligned aligned_storage_type;
1127
+ typedef typename storage_traits< 8u >::type storage_type;
1108
1128
 
1109
1129
  static BOOST_CONSTEXPR_OR_CONST std::size_t storage_size = 8u;
1130
+ static BOOST_CONSTEXPR_OR_CONST std::size_t storage_alignment = 8u;
1110
1131
  static BOOST_CONSTEXPR_OR_CONST bool is_signed = Signed;
1132
+ static BOOST_CONSTEXPR_OR_CONST bool is_interprocess = Interprocess;
1111
1133
 
1112
1134
  static BOOST_FORCEINLINE void store(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1113
1135
  {
@@ -1116,40 +1138,51 @@ struct operations< 8u, Signed > :
1116
1138
 
1117
1139
  static BOOST_FORCEINLINE storage_type load(storage_type const volatile& storage, memory_order order) BOOST_NOEXCEPT
1118
1140
  {
1141
+ // ARMv7 says ldrex (and other load-exclusive instructions) can be used without a matching strex, see
1142
+ // "ARM Architecture Reference Manual ARMv7-A and ARMv7-R edition", Section A3.4.5 "Load-Exclusive and Store-Exclusive usage restrictions".
1119
1143
  storage_type original;
1144
+ #if defined(BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_UNUSED)
1145
+ __asm__ __volatile__
1146
+ (
1147
+ "ldrexd %0, %H0, %1\n\t"
1148
+ : "=&r" (original) // %0
1149
+ : "Q" (storage) // %1
1150
+ );
1151
+ #else
1120
1152
  uint32_t tmp;
1121
1153
  __asm__ __volatile__
1122
1154
  (
1123
1155
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1124
- "ldrexd %1, %H1, [%2]\n"
1156
+ "ldrexd %1, %H1, %2\n\t"
1125
1157
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1126
1158
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1127
1159
  "=&r" (original) // %1
1128
- : "r" (&storage) // %2
1160
+ : "Q" (storage) // %2
1129
1161
  );
1162
+ #endif
1130
1163
  fence_after(order);
1131
1164
  return original;
1132
1165
  }
1133
1166
 
1134
1167
  static BOOST_FORCEINLINE storage_type exchange(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
1135
1168
  {
1136
- storage_type original;
1137
1169
  fence_before(order);
1170
+ storage_type original;
1138
1171
  uint32_t tmp;
1139
1172
  __asm__ __volatile__
1140
1173
  (
1141
1174
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1142
- "1:\n"
1143
- "ldrexd %1, %H1, [%3]\n" // load the original value
1144
- "strexd %0, %2, %H2, [%3]\n" // store the replacement, tmp = store failed
1145
- "teq %0, #0\n" // check if store succeeded
1146
- "bne 1b\n"
1175
+ "1:\n\t"
1176
+ "ldrexd %1, %H1, %2\n\t" // load the original value
1177
+ "strexd %0, %3, %H3, %2\n\t" // store the replacement, tmp = store failed
1178
+ "teq %0, #0\n\t" // check if store succeeded
1179
+ "bne 1b\n\t"
1147
1180
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1148
1181
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1149
- "=&r" (original) // %1
1150
- : "r" (v), // %2
1151
- "r" (&storage) // %3
1152
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1182
+ "=&r" (original), // %1
1183
+ "+Q" (storage) // %2
1184
+ : "r" (v) // %3
1185
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1153
1186
  );
1154
1187
  fence_after(order);
1155
1188
  return original;
@@ -1159,74 +1192,72 @@ struct operations< 8u, Signed > :
1159
1192
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1160
1193
  {
1161
1194
  fence_before(success_order);
1195
+ storage_type original;
1196
+ bool success = false;
1162
1197
  uint32_t tmp;
1163
- storage_type original, old_val = expected;
1164
1198
  __asm__ __volatile__
1165
1199
  (
1166
1200
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1167
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1168
- "cmp %1, %2\n" // flags = original.lo==old_val.lo
1169
- "ittt eq\n" // [hint that the following 3 instructions are conditional on flags.equal]
1170
- "cmpeq %H1, %H2\n" // if (flags.equal) flags = original.hi==old_val.hi
1171
- "strexdeq %0, %4, %H4, [%3]\n" // if (flags.equal) *(&storage) = desired, tmp = store failed
1172
- "teqeq %0, #0\n" // if (flags.equal) flags = tmp==0
1173
- "ite eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
1174
- "moveq %2, #1\n" // if (flags.equal) old_val.lo = 1
1175
- "movne %2, #0\n" // if (!flags.equal) old_val.lo = 0
1201
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1202
+ "cmp %1, %4\n\t" // flags = original.lo==expected.lo
1203
+ "it eq\n\t" // [hint that the following 1 instruction is conditional on flags.equal]
1204
+ "cmpeq %H1, %H4\n\t" // if (flags.equal) flags = original.hi==expected.hi
1205
+ "bne 1f\n\t"
1206
+ "strexd %2, %5, %H5, %3\n\t" // *(&storage) = desired, success = store failed
1207
+ "eor %2, %2, #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded)
1208
+ "1:\n\t"
1176
1209
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1177
1210
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1178
1211
  "=&r" (original), // %1
1179
- "+r" (old_val) // %2
1180
- : "r" (&storage), // %3
1181
- "r" (desired) // %4
1182
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1212
+ "+r" (success), // %2
1213
+ "+Q" (storage) // %3
1214
+ : "r" (expected), // %4
1215
+ "r" (desired) // %5
1216
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1183
1217
  );
1184
- const uint32_t success = (uint32_t)old_val;
1185
1218
  if (success)
1186
1219
  fence_after(success_order);
1187
1220
  else
1188
1221
  fence_after(failure_order);
1189
1222
  expected = original;
1190
- return !!success;
1223
+ return success;
1191
1224
  }
1192
1225
 
1193
1226
  static BOOST_FORCEINLINE bool compare_exchange_strong(
1194
1227
  storage_type volatile& storage, storage_type& expected, storage_type desired, memory_order success_order, memory_order failure_order) BOOST_NOEXCEPT
1195
1228
  {
1196
1229
  fence_before(success_order);
1230
+ storage_type original;
1231
+ bool success = false;
1197
1232
  uint32_t tmp;
1198
- storage_type original, old_val = expected;
1199
1233
  __asm__ __volatile__
1200
1234
  (
1201
1235
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1202
- "1:\n"
1203
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1204
- "cmp %1, %2\n" // flags = original.lo==old_val.lo
1205
- "it eq\n" // [hint that the following instruction is conditional on flags.equal]
1206
- "cmpeq %H1, %H2\n" // if (flags.equal) flags = original.hi==old_val.hi
1207
- "bne 2f\n" // if (!flags.equal) goto end
1208
- "strexd %0, %4, %H4, [%3]\n" // *(&storage) = desired, tmp = store failed
1209
- "teq %0, #0\n" // flags.equal = tmp == 0
1210
- "bne 1b\n" // if (flags.equal) goto retry
1211
- "2:\n"
1212
- "ite eq\n" // [hint that the following 2 instructions are conditional on flags.equal]
1213
- "moveq %2, #1\n" // if (flags.equal) old_val.lo = 1
1214
- "movne %2, #0\n" // if (!flags.equal) old_val.lo = 0
1236
+ "1:\n\t"
1237
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1238
+ "cmp %1, %4\n\t" // flags = original.lo==expected.lo
1239
+ "it eq\n\t" // [hint that the following 1 instruction is conditional on flags.equal]
1240
+ "cmpeq %H1, %H4\n\t" // if (flags.equal) flags = original.hi==expected.hi
1241
+ "bne 2f\n\t"
1242
+ "strexd %2, %5, %H5, %3\n\t" // *(&storage) = desired, success = store failed
1243
+ "eors %2, %2, #1\n\t" // success ^= 1 (i.e. make it 1 if store succeeded), flags.equal = success == 0
1244
+ "beq 1b\n\t" // if (flags.equal) goto retry
1245
+ "2:\n\t"
1215
1246
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1216
1247
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1217
1248
  "=&r" (original), // %1
1218
- "+r" (old_val) // %2
1219
- : "r" (&storage), // %3
1220
- "r" (desired) // %4
1221
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1249
+ "+r" (success), // %2
1250
+ "+Q" (storage) // %3
1251
+ : "r" (expected), // %4
1252
+ "r" (desired) // %5
1253
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1222
1254
  );
1223
- const uint32_t success = (uint32_t)old_val;
1224
1255
  if (success)
1225
1256
  fence_after(success_order);
1226
1257
  else
1227
1258
  fence_after(failure_order);
1228
1259
  expected = original;
1229
- return !!success;
1260
+ return success;
1230
1261
  }
1231
1262
 
1232
1263
  static BOOST_FORCEINLINE storage_type fetch_add(storage_type volatile& storage, storage_type v, memory_order order) BOOST_NOEXCEPT
@@ -1237,20 +1268,20 @@ struct operations< 8u, Signed > :
1237
1268
  __asm__ __volatile__
1238
1269
  (
1239
1270
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1240
- "1:\n"
1241
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1242
- "adds %2, %1, %4\n" // result = original + value
1243
- "adc %H2, %H1, %H4\n"
1244
- "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed
1245
- "teq %0, #0\n" // flags = tmp==0
1246
- "bne 1b\n" // if (!flags.equal) goto retry
1271
+ "1:\n\t"
1272
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1273
+ "adds " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(4) "\n\t" // result = original + value
1274
+ "adc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(4) "\n\t"
1275
+ "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed
1276
+ "teq %0, #0\n\t" // flags = tmp==0
1277
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1247
1278
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1248
1279
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1249
1280
  "=&r" (original), // %1
1250
- "=&r" (result) // %2
1251
- : "r" (&storage), // %3
1252
- "r" (v) // %4
1253
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1281
+ "=&r" (result), // %2
1282
+ "+Q" (storage) // %3
1283
+ : "r" (v) // %4
1284
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1254
1285
  );
1255
1286
  fence_after(order);
1256
1287
  return original;
@@ -1264,20 +1295,20 @@ struct operations< 8u, Signed > :
1264
1295
  __asm__ __volatile__
1265
1296
  (
1266
1297
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1267
- "1:\n"
1268
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1269
- "subs %2, %1, %4\n" // result = original - value
1270
- "sbc %H2, %H1, %H4\n"
1271
- "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed
1272
- "teq %0, #0\n" // flags = tmp==0
1273
- "bne 1b\n" // if (!flags.equal) goto retry
1298
+ "1:\n\t"
1299
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1300
+ "subs " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_LO(4) "\n\t" // result = original - value
1301
+ "sbc " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(2) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(1) ", " BOOST_ATOMIC_DETAIL_ARM_ASM_ARG_HI(4) "\n\t"
1302
+ "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed
1303
+ "teq %0, #0\n\t" // flags = tmp==0
1304
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1274
1305
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1275
1306
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1276
1307
  "=&r" (original), // %1
1277
- "=&r" (result) // %2
1278
- : "r" (&storage), // %3
1279
- "r" (v) // %4
1280
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1308
+ "=&r" (result), // %2
1309
+ "+Q" (storage) // %3
1310
+ : "r" (v) // %4
1311
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1281
1312
  );
1282
1313
  fence_after(order);
1283
1314
  return original;
@@ -1291,20 +1322,20 @@ struct operations< 8u, Signed > :
1291
1322
  __asm__ __volatile__
1292
1323
  (
1293
1324
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1294
- "1:\n"
1295
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1296
- "and %2, %1, %4\n" // result = original & value
1297
- "and %H2, %H1, %H4\n"
1298
- "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed
1299
- "teq %0, #0\n" // flags = tmp==0
1300
- "bne 1b\n" // if (!flags.equal) goto retry
1325
+ "1:\n\t"
1326
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1327
+ "and %2, %1, %4\n\t" // result = original & value
1328
+ "and %H2, %H1, %H4\n\t"
1329
+ "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed
1330
+ "teq %0, #0\n\t" // flags = tmp==0
1331
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1301
1332
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1302
1333
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1303
1334
  "=&r" (original), // %1
1304
- "=&r" (result) // %2
1305
- : "r" (&storage), // %3
1306
- "r" (v) // %4
1307
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1335
+ "=&r" (result), // %2
1336
+ "+Q" (storage) // %3
1337
+ : "r" (v) // %4
1338
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1308
1339
  );
1309
1340
  fence_after(order);
1310
1341
  return original;
@@ -1318,20 +1349,20 @@ struct operations< 8u, Signed > :
1318
1349
  __asm__ __volatile__
1319
1350
  (
1320
1351
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1321
- "1:\n"
1322
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1323
- "orr %2, %1, %4\n" // result = original | value
1324
- "orr %H2, %H1, %H4\n"
1325
- "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed
1326
- "teq %0, #0\n" // flags = tmp==0
1327
- "bne 1b\n" // if (!flags.equal) goto retry
1352
+ "1:\n\t"
1353
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1354
+ "orr %2, %1, %4\n\t" // result = original | value
1355
+ "orr %H2, %H1, %H4\n\t"
1356
+ "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed
1357
+ "teq %0, #0\n\t" // flags = tmp==0
1358
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1328
1359
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1329
1360
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1330
1361
  "=&r" (original), // %1
1331
- "=&r" (result) // %2
1332
- : "r" (&storage), // %3
1333
- "r" (v) // %4
1334
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1362
+ "=&r" (result), // %2
1363
+ "+Q" (storage) // %3
1364
+ : "r" (v) // %4
1365
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1335
1366
  );
1336
1367
  fence_after(order);
1337
1368
  return original;
@@ -1345,20 +1376,20 @@ struct operations< 8u, Signed > :
1345
1376
  __asm__ __volatile__
1346
1377
  (
1347
1378
  BOOST_ATOMIC_DETAIL_ARM_ASM_START(%0)
1348
- "1:\n"
1349
- "ldrexd %1, %H1, [%3]\n" // original = *(&storage)
1350
- "eor %2, %1, %4\n" // result = original ^ value
1351
- "eor %H2, %H1, %H4\n"
1352
- "strexd %0, %2, %H2, [%3]\n" // *(&storage) = result, tmp = store failed
1353
- "teq %0, #0\n" // flags = tmp==0
1354
- "bne 1b\n" // if (!flags.equal) goto retry
1379
+ "1:\n\t"
1380
+ "ldrexd %1, %H1, %3\n\t" // original = *(&storage)
1381
+ "eor %2, %1, %4\n\t" // result = original ^ value
1382
+ "eor %H2, %H1, %H4\n\t"
1383
+ "strexd %0, %2, %H2, %3\n\t" // *(&storage) = result, tmp = store failed
1384
+ "teq %0, #0\n\t" // flags = tmp==0
1385
+ "bne 1b\n\t" // if (!flags.equal) goto retry
1355
1386
  BOOST_ATOMIC_DETAIL_ARM_ASM_END(%0)
1356
1387
  : BOOST_ATOMIC_DETAIL_ARM_ASM_TMPREG_CONSTRAINT(tmp), // %0
1357
1388
  "=&r" (original), // %1
1358
- "=&r" (result) // %2
1359
- : "r" (&storage), // %3
1360
- "r" (v) // %4
1361
- : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC_COMMA "memory"
1389
+ "=&r" (result), // %2
1390
+ "+Q" (storage) // %3
1391
+ : "r" (v) // %4
1392
+ : BOOST_ATOMIC_DETAIL_ASM_CLOBBER_CC
1362
1393
  );
1363
1394
  fence_after(order);
1364
1395
  return original;
@@ -1371,27 +1402,16 @@ struct operations< 8u, Signed > :
1371
1402
 
1372
1403
  static BOOST_FORCEINLINE void clear(storage_type volatile& storage, memory_order order) BOOST_NOEXCEPT
1373
1404
  {
1374
- store(storage, 0, order);
1405
+ store(storage, (storage_type)0, order);
1375
1406
  }
1376
1407
  };
1377
1408
 
1378
1409
  #endif // defined(BOOST_ATOMIC_DETAIL_ARM_HAS_LDREXD_STREXD)
1379
1410
 
1380
-
1381
- BOOST_FORCEINLINE void thread_fence(memory_order order) BOOST_NOEXCEPT
1382
- {
1383
- if (order != memory_order_relaxed)
1384
- gcc_arm_operations_base::hardware_full_fence();
1385
- }
1386
-
1387
- BOOST_FORCEINLINE void signal_fence(memory_order order) BOOST_NOEXCEPT
1388
- {
1389
- if (order != memory_order_relaxed)
1390
- __asm__ __volatile__ ("" ::: "memory");
1391
- }
1392
-
1393
1411
  } // namespace detail
1394
1412
  } // namespace atomics
1395
1413
  } // namespace boost
1396
1414
 
1397
- #endif // BOOST_ATOMIC_DETAIL_OPS_GCC_ARM_HPP_INCLUDED_
1415
+ #include <boost/atomic/detail/footer.hpp>
1416
+
1417
+ #endif // BOOST_ATOMIC_DETAIL_CORE_ARCH_OPS_GCC_ARM_HPP_INCLUDED_