passenger 6.0.1 → 6.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (453) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG +145 -18
  3. data/CONTRIBUTORS +6 -0
  4. data/bin/passenger-install-nginx-module +1 -1
  5. data/bin/passenger-status +15 -0
  6. data/build/misc.rb +3 -1
  7. data/build/support/vendor/cxxcodebuilder/lib/cxxcodebuilder/builder.rb +56 -3
  8. data/dev/copy_boost_headers +1 -0
  9. data/package.json +1 -1
  10. data/passenger.gemspec +9 -1
  11. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.css +0 -0
  12. data/resources/templates/error_renderer/with_details/src/bootstrap/bootstrap.js +0 -0
  13. data/resources/templates/error_renderer/with_details/src/bootstrap/config.json +0 -0
  14. data/resources/templates/standalone/http.erb +2 -0
  15. data/resources/templates/standalone/server.erb +1 -0
  16. data/src/agent/Core/ApplicationPool/Group/ProcessListManagement.cpp +1 -1
  17. data/src/agent/Core/ApplicationPool/Group/StateInspection.cpp +1 -0
  18. data/src/agent/Core/ApplicationPool/Options.h +10 -0
  19. data/src/agent/Core/ApplicationPool/Pool/GarbageCollection.cpp +1 -1
  20. data/src/agent/Core/ApplicationPool/Pool/StateInspection.cpp +1 -1
  21. data/src/agent/Core/Config.h +14 -1
  22. data/src/agent/Core/Controller.h +1 -0
  23. data/src/agent/Core/Controller/Config.h +5 -1
  24. data/src/agent/Core/Controller/ForwardResponse.cpp +13 -0
  25. data/src/agent/Core/Controller/InitRequest.cpp +3 -0
  26. data/src/agent/Core/Controller/InitializationAndShutdown.cpp +1 -0
  27. data/src/agent/Core/CoreMain.cpp +2 -1
  28. data/src/agent/Core/OptionParser.h +3 -0
  29. data/src/agent/Core/SpawningKit/Context.h +1 -0
  30. data/src/agent/Core/SpawningKit/Handshake/Prepare.h +1 -1
  31. data/src/agent/Core/SpawningKit/Handshake/WorkDir.h +5 -2
  32. data/src/agent/TempDirToucher/TempDirToucherMain.cpp +2 -0
  33. data/src/agent/Watchdog/Config.h +15 -1
  34. data/src/agent/Watchdog/WatchdogMain.cpp +7 -0
  35. data/src/apache2_module/ConfigGeneral/AutoGeneratedDefinitions.cpp +10 -0
  36. data/src/apache2_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.cpp +10 -0
  37. data/src/apache2_module/ConfigGeneral/AutoGeneratedSetterFuncs.cpp +30 -0
  38. data/src/apache2_module/Hooks.cpp +6 -0
  39. data/src/apache2_module/ServerConfig/AutoGeneratedManifestGeneration.cpp +20 -0
  40. data/src/apache2_module/ServerConfig/AutoGeneratedStruct.h +24 -0
  41. data/src/cxx_supportlib/Constants.h +2 -1
  42. data/src/cxx_supportlib/LoggingKit/Config.h +2 -0
  43. data/src/cxx_supportlib/LoggingKit/Implementation.cpp +15 -9
  44. data/src/cxx_supportlib/ServerKit/HttpChunkedBodyParser.h +1 -1
  45. data/src/cxx_supportlib/SystemTools/ContainerHelpers.h +20 -19
  46. data/src/cxx_supportlib/WebSocketCommandReverseServer.h +11 -7
  47. data/src/cxx_supportlib/oxt/system_calls.cpp +10 -10
  48. data/src/cxx_supportlib/vendor-modified/boost/algorithm/string/finder.hpp +0 -4
  49. data/src/cxx_supportlib/vendor-modified/boost/asio/buffer.hpp +46 -37
  50. data/src/cxx_supportlib/vendor-modified/boost/asio/connect.hpp +16 -15
  51. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/config.hpp +45 -26
  52. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/future.hpp +33 -0
  53. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/impl/socket_ops.ipp +1 -1
  54. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/is_buffer_sequence.hpp +38 -14
  55. data/src/cxx_supportlib/vendor-modified/boost/asio/detail/timer_queue.hpp +2 -0
  56. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/io_context.hpp +1 -1
  57. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/read_until.hpp +3 -1
  58. data/src/cxx_supportlib/vendor-modified/boost/asio/impl/use_future.hpp +0 -1
  59. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/bad_address_cast.hpp +6 -1
  60. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver.hpp +6 -4
  61. data/src/cxx_supportlib/vendor-modified/boost/asio/ip/basic_resolver_results.hpp +4 -4
  62. data/src/cxx_supportlib/vendor-modified/boost/asio/packaged_task.hpp +3 -3
  63. data/src/cxx_supportlib/vendor-modified/boost/asio/read.hpp +4 -4
  64. data/src/cxx_supportlib/vendor-modified/boost/asio/read_at.hpp +4 -4
  65. data/src/cxx_supportlib/vendor-modified/boost/asio/read_until.hpp +8 -6
  66. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/context_base.hpp +17 -0
  67. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/impl/context.ipp +50 -5
  68. data/src/cxx_supportlib/vendor-modified/boost/asio/ssl/stream.hpp +2 -1
  69. data/src/cxx_supportlib/vendor-modified/boost/asio/thread_pool.hpp +1 -1
  70. data/src/cxx_supportlib/vendor-modified/boost/asio/use_future.hpp +3 -2
  71. data/src/cxx_supportlib/vendor-modified/boost/asio/version.hpp +1 -1
  72. data/src/cxx_supportlib/vendor-modified/boost/asio/write.hpp +4 -3
  73. data/src/cxx_supportlib/vendor-modified/boost/asio/write_at.hpp +5 -3
  74. data/src/cxx_supportlib/vendor-modified/boost/atomic/detail/ops_gcc_x86_dcas.hpp +13 -12
  75. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/chrono.hpp +10 -10
  76. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/process_cpu_clocks.hpp +34 -34
  77. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/mac/thread_clock.hpp +4 -4
  78. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/chrono.hpp +8 -8
  79. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/process_cpu_clocks.hpp +27 -27
  80. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/inlined/posix/thread_clock.hpp +4 -4
  81. data/src/cxx_supportlib/vendor-modified/boost/chrono/detail/system.hpp +5 -4
  82. data/src/cxx_supportlib/vendor-modified/boost/chrono/io/time_point_io.hpp +1 -1
  83. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer.hpp +3 -3
  84. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/allocators.hpp +89 -0
  85. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/base.hpp +83 -74
  86. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/details.hpp +21 -33
  87. data/src/cxx_supportlib/vendor-modified/boost/circular_buffer/space_optimized.hpp +5 -5
  88. data/src/cxx_supportlib/vendor-modified/boost/concept/assert.hpp +1 -1
  89. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/general.hpp +3 -3
  90. data/src/cxx_supportlib/vendor-modified/boost/concept/detail/has_constraints.hpp +3 -3
  91. data/src/cxx_supportlib/vendor-modified/boost/concept/usage.hpp +1 -1
  92. data/src/cxx_supportlib/vendor-modified/boost/concept_check.hpp +19 -19
  93. data/src/cxx_supportlib/vendor-modified/boost/config/auto_link.hpp +8 -0
  94. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/borland.hpp +5 -2
  95. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/clang.hpp +5 -1
  96. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/codegear.hpp +6 -2
  97. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/comeau.hpp +1 -1
  98. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/common_edg.hpp +4 -0
  99. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/cray.hpp +368 -52
  100. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/digitalmars.hpp +4 -1
  101. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc.hpp +6 -3
  102. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/gcc_xml.hpp +3 -0
  103. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/greenhills.hpp +1 -1
  104. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/hp_acc.hpp +1 -1
  105. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/intel.hpp +6 -1
  106. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/kai.hpp +1 -1
  107. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/metrowerks.hpp +4 -1
  108. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/mpw.hpp +4 -1
  109. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/nvcc.hpp +3 -3
  110. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/pathscale.hpp +3 -0
  111. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/sunpro_cc.hpp +3 -0
  112. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/vacpp.hpp +4 -1
  113. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/visualc.hpp +9 -4
  114. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp.hpp +4 -0
  115. data/src/cxx_supportlib/vendor-modified/boost/config/compiler/xlcpp_zos.hpp +1 -0
  116. data/src/cxx_supportlib/vendor-modified/boost/config/detail/select_compiler_config.hpp +1 -2
  117. data/src/cxx_supportlib/vendor-modified/boost/config/detail/suffix.hpp +13 -0
  118. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/dinkumware.hpp +2 -2
  119. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libcpp.hpp +14 -4
  120. data/src/cxx_supportlib/vendor-modified/boost/config/stdlib/libstdcpp3.hpp +4 -4
  121. data/src/cxx_supportlib/vendor-modified/boost/container/adaptive_pool.hpp +262 -2
  122. data/src/cxx_supportlib/vendor-modified/boost/container/allocator.hpp +4 -3
  123. data/src/cxx_supportlib/vendor-modified/boost/container/allocator_traits.hpp +1 -1
  124. data/src/cxx_supportlib/vendor-modified/boost/container/deque.hpp +7 -0
  125. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool.hpp +22 -19
  126. data/src/cxx_supportlib/vendor-modified/boost/container/detail/adaptive_node_pool_impl.hpp +833 -459
  127. data/src/cxx_supportlib/vendor-modified/boost/container/detail/advanced_insert_int.hpp +24 -6
  128. data/src/cxx_supportlib/vendor-modified/boost/container/detail/allocator_version_traits.hpp +2 -1
  129. data/src/cxx_supportlib/vendor-modified/boost/container/detail/compare_functors.hpp +61 -5
  130. data/src/cxx_supportlib/vendor-modified/boost/container/detail/copy_move_algo.hpp +33 -8
  131. data/src/cxx_supportlib/vendor-modified/boost/container/detail/flat_tree.hpp +132 -41
  132. data/src/cxx_supportlib/vendor-modified/boost/container/detail/iterator.hpp +16 -0
  133. data/src/cxx_supportlib/vendor-modified/boost/container/detail/math_functions.hpp +54 -0
  134. data/src/cxx_supportlib/vendor-modified/boost/container/detail/mpl.hpp +58 -0
  135. data/src/cxx_supportlib/vendor-modified/boost/container/detail/multiallocation_chain.hpp +28 -23
  136. data/src/cxx_supportlib/vendor-modified/boost/container/detail/node_alloc_holder.hpp +167 -115
  137. data/src/cxx_supportlib/vendor-modified/boost/container/detail/pair.hpp +55 -0
  138. data/src/cxx_supportlib/vendor-modified/boost/container/detail/std_fwd.hpp +3 -0
  139. data/src/cxx_supportlib/vendor-modified/boost/container/detail/thread_mutex.hpp +181 -0
  140. data/src/cxx_supportlib/vendor-modified/boost/container/detail/tree.hpp +167 -29
  141. data/src/cxx_supportlib/vendor-modified/boost/container/detail/type_traits.hpp +2 -0
  142. data/src/cxx_supportlib/vendor-modified/boost/container/detail/variadic_templates_tools.hpp +1 -1
  143. data/src/cxx_supportlib/vendor-modified/boost/container/detail/workaround.hpp +18 -0
  144. data/src/cxx_supportlib/vendor-modified/boost/container/flat_map.hpp +389 -3
  145. data/src/cxx_supportlib/vendor-modified/boost/container/flat_set.hpp +262 -0
  146. data/src/cxx_supportlib/vendor-modified/boost/container/list.hpp +52 -8
  147. data/src/cxx_supportlib/vendor-modified/boost/container/map.hpp +364 -0
  148. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/monotonic_buffer_resource.hpp +4 -2
  149. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/resource_adaptor.hpp +1 -1
  150. data/src/cxx_supportlib/vendor-modified/boost/container/pmr/synchronized_pool_resource.hpp +3 -2
  151. data/src/cxx_supportlib/vendor-modified/boost/container/set.hpp +286 -6
  152. data/src/cxx_supportlib/vendor-modified/boost/container/slist.hpp +56 -8
  153. data/src/cxx_supportlib/vendor-modified/boost/container/small_vector.hpp +43 -6
  154. data/src/cxx_supportlib/vendor-modified/boost/container/stable_vector.hpp +100 -31
  155. data/src/cxx_supportlib/vendor-modified/boost/container/static_vector.hpp +2 -1
  156. data/src/cxx_supportlib/vendor-modified/boost/container/string.hpp +126 -69
  157. data/src/cxx_supportlib/vendor-modified/boost/container/vector.hpp +75 -51
  158. data/src/cxx_supportlib/vendor-modified/boost/core/empty_value.hpp +136 -0
  159. data/src/cxx_supportlib/vendor-modified/boost/core/exchange.hpp +49 -0
  160. data/src/cxx_supportlib/vendor-modified/boost/core/explicit_operator_bool.hpp +9 -0
  161. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test.hpp +101 -130
  162. data/src/cxx_supportlib/vendor-modified/boost/core/lightweight_test_trait.hpp +2 -2
  163. data/src/cxx_supportlib/vendor-modified/boost/core/noncopyable.hpp +16 -1
  164. data/src/cxx_supportlib/vendor-modified/boost/core/quick_exit.hpp +59 -0
  165. data/src/cxx_supportlib/vendor-modified/boost/core/ref.hpp +2 -1
  166. data/src/cxx_supportlib/vendor-modified/boost/core/swap.hpp +9 -2
  167. data/src/cxx_supportlib/vendor-modified/boost/core/typeinfo.hpp +26 -10
  168. data/src/cxx_supportlib/vendor-modified/boost/date_time/compiler_config.hpp +5 -0
  169. data/src/cxx_supportlib/vendor-modified/boost/date_time/posix_time/posix_time_duration.hpp +3 -3
  170. data/src/cxx_supportlib/vendor-modified/boost/date_time/time_duration.hpp +1 -1
  171. data/src/cxx_supportlib/vendor-modified/boost/detail/basic_pointerbuf.hpp +1 -1
  172. data/src/cxx_supportlib/vendor-modified/boost/detail/indirect_traits.hpp +38 -47
  173. data/src/cxx_supportlib/vendor-modified/boost/detail/lcast_precision.hpp +5 -5
  174. data/src/cxx_supportlib/vendor-modified/boost/detail/reference_content.hpp +7 -7
  175. data/src/cxx_supportlib/vendor-modified/boost/exception/exception.hpp +62 -58
  176. data/src/cxx_supportlib/vendor-modified/boost/function.hpp +1 -1
  177. data/src/cxx_supportlib/vendor-modified/boost/function/function_base.hpp +29 -29
  178. data/src/cxx_supportlib/vendor-modified/boost/function/function_template.hpp +38 -40
  179. data/src/cxx_supportlib/vendor-modified/boost/integer/common_factor_rt.hpp +4 -4
  180. data/src/cxx_supportlib/vendor-modified/boost/intrusive/avltree_algorithms.hpp +44 -44
  181. data/src/cxx_supportlib/vendor-modified/boost/intrusive/bstree_algorithms.hpp +39 -39
  182. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_list_algorithms.hpp +15 -15
  183. data/src/cxx_supportlib/vendor-modified/boost/intrusive/circular_slist_algorithms.hpp +7 -7
  184. data/src/cxx_supportlib/vendor-modified/boost/intrusive/derivation_value_traits.hpp +1 -1
  185. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/any_node_and_algorithms.hpp +14 -14
  186. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/avltree_node.hpp +9 -9
  187. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/common_slist_algorithms.hpp +7 -7
  188. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_iterator.hpp +1 -1
  189. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/list_node.hpp +2 -2
  190. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/node_cloner_disposer.hpp +2 -2
  191. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/rbtree_node.hpp +6 -6
  192. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/simple_disposers.hpp +1 -1
  193. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_iterator.hpp +1 -1
  194. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/slist_node.hpp +1 -1
  195. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_iterator.hpp +1 -1
  196. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_node.hpp +3 -3
  197. data/src/cxx_supportlib/vendor-modified/boost/intrusive/detail/tree_value_compare.hpp +33 -14
  198. data/src/cxx_supportlib/vendor-modified/boost/intrusive/hashtable.hpp +12 -12
  199. data/src/cxx_supportlib/vendor-modified/boost/intrusive/linear_slist_algorithms.hpp +4 -4
  200. data/src/cxx_supportlib/vendor-modified/boost/intrusive/pointer_plus_bits.hpp +3 -0
  201. data/src/cxx_supportlib/vendor-modified/boost/intrusive/rbtree_algorithms.hpp +39 -39
  202. data/src/cxx_supportlib/vendor-modified/boost/intrusive/sgtree_algorithms.hpp +61 -61
  203. data/src/cxx_supportlib/vendor-modified/boost/intrusive/slist.hpp +4 -4
  204. data/src/cxx_supportlib/vendor-modified/boost/intrusive/splaytree_algorithms.hpp +66 -66
  205. data/src/cxx_supportlib/vendor-modified/boost/intrusive/treap_algorithms.hpp +54 -54
  206. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set.hpp +6 -2
  207. data/src/cxx_supportlib/vendor-modified/boost/intrusive/unordered_set_hook.hpp +3 -3
  208. data/src/cxx_supportlib/vendor-modified/boost/iterator/advance.hpp +1 -1
  209. data/src/cxx_supportlib/vendor-modified/boost/iterator/distance.hpp +65 -0
  210. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast.hpp +1 -1
  211. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/bad_lexical_cast.hpp +1 -1
  212. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical.hpp +23 -23
  213. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_lexical_streams.hpp +4 -4
  214. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/converter_numeric.hpp +13 -13
  215. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/inf_nan.hpp +1 -1
  216. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/is_character.hpp +5 -4
  217. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_char_constants.hpp +1 -1
  218. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/lcast_unsigned_converters.hpp +5 -5
  219. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/detail/widest_char.hpp +5 -2
  220. data/src/cxx_supportlib/vendor-modified/boost/lexical_cast/try_lexical_convert.hpp +18 -13
  221. data/src/cxx_supportlib/vendor-modified/boost/libs/regex/src/cregex.cpp +4 -4
  222. data/src/cxx_supportlib/vendor-modified/boost/libs/system/src/error_code.cpp +16 -5
  223. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/future.cpp +1 -1
  224. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/pthread/thread.cpp +14 -8
  225. data/src/cxx_supportlib/vendor-modified/boost/libs/thread/src/tss_null.cpp +2 -2
  226. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/detail/fp_traits.hpp +13 -13
  227. data/src/cxx_supportlib/vendor-modified/boost/math/special_functions/math_fwd.hpp +27 -0
  228. data/src/cxx_supportlib/vendor-modified/boost/math/tools/config.hpp +1 -1
  229. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_merge.hpp +29 -6
  230. data/src/cxx_supportlib/vendor-modified/boost/move/algo/adaptive_sort.hpp +12 -3
  231. data/src/cxx_supportlib/vendor-modified/boost/move/algo/detail/adaptive_sort_merge.hpp +1 -1
  232. data/src/cxx_supportlib/vendor-modified/boost/move/algo/move.hpp +1 -1
  233. data/src/cxx_supportlib/vendor-modified/boost/move/algorithm.hpp +1 -1
  234. data/src/cxx_supportlib/vendor-modified/boost/move/core.hpp +8 -8
  235. data/src/cxx_supportlib/vendor-modified/boost/move/detail/meta_utils.hpp +2 -0
  236. data/src/cxx_supportlib/vendor-modified/boost/move/detail/type_traits.hpp +3 -3
  237. data/src/cxx_supportlib/vendor-modified/boost/mpl/assert.hpp +23 -3
  238. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/experimental_traits.hpp +9 -3
  239. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/old_optional_implementation.hpp +10 -11
  240. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_reference_spec.hpp +20 -1
  241. data/src/cxx_supportlib/vendor-modified/boost/optional/detail/optional_trivially_copyable_base.hpp +3 -3
  242. data/src/cxx_supportlib/vendor-modified/boost/optional/optional.hpp +211 -101
  243. data/src/cxx_supportlib/vendor-modified/boost/parameter/python.hpp +5 -6
  244. data/src/cxx_supportlib/vendor-modified/boost/pool/detail/mutex.hpp +119 -25
  245. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture.h +1 -0
  246. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/arm.h +5 -0
  247. data/src/cxx_supportlib/vendor-modified/boost/predef/architecture/ptx.h +44 -0
  248. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler.h +1 -0
  249. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/compaq.h +1 -1
  250. data/src/cxx_supportlib/vendor-modified/boost/predef/compiler/nvcc.h +73 -0
  251. data/src/cxx_supportlib/vendor-modified/boost/predef/detail/endian_compat.h +3 -1
  252. data/src/cxx_supportlib/vendor-modified/boost/predef/language.h +1 -0
  253. data/src/cxx_supportlib/vendor-modified/boost/predef/language/cuda.h +52 -0
  254. data/src/cxx_supportlib/vendor-modified/boost/predef/make.h +4 -0
  255. data/src/cxx_supportlib/vendor-modified/boost/predef/os/cygwin.h +6 -1
  256. data/src/cxx_supportlib/vendor-modified/boost/predef/other/endian.h +1 -2
  257. data/src/cxx_supportlib/vendor-modified/boost/predef/version.h +1 -1
  258. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/config/config.hpp +17 -8
  259. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/stringize.hpp +4 -0
  260. data/src/cxx_supportlib/vendor-modified/boost/preprocessor/wstringize.hpp +4 -0
  261. data/src/cxx_supportlib/vendor-modified/boost/random/detail/gray_coded_qrng.hpp +166 -0
  262. data/src/cxx_supportlib/vendor-modified/boost/random/detail/niederreiter_base2_table.hpp +513 -0
  263. data/src/cxx_supportlib/vendor-modified/boost/random/detail/qrng_base.hpp +291 -0
  264. data/src/cxx_supportlib/vendor-modified/boost/random/detail/sobol_table.hpp +4106 -0
  265. data/src/cxx_supportlib/vendor-modified/boost/random/faure.hpp +367 -0
  266. data/src/cxx_supportlib/vendor-modified/boost/random/niederreiter_base2.hpp +360 -0
  267. data/src/cxx_supportlib/vendor-modified/boost/random/sobol.hpp +237 -0
  268. data/src/cxx_supportlib/vendor-modified/boost/range/as_literal.hpp +43 -0
  269. data/src/cxx_supportlib/vendor-modified/boost/range/begin.hpp +13 -5
  270. data/src/cxx_supportlib/vendor-modified/boost/range/concepts.hpp +1 -1
  271. data/src/cxx_supportlib/vendor-modified/boost/range/detail/common.hpp +1 -3
  272. data/src/cxx_supportlib/vendor-modified/boost/range/detail/implementation_help.hpp +2 -2
  273. data/src/cxx_supportlib/vendor-modified/boost/range/distance.hpp +11 -5
  274. data/src/cxx_supportlib/vendor-modified/boost/range/end.hpp +14 -6
  275. data/src/cxx_supportlib/vendor-modified/boost/range/has_range_iterator.hpp +3 -3
  276. data/src/cxx_supportlib/vendor-modified/boost/ratio/config.hpp +6 -2
  277. data/src/cxx_supportlib/vendor-modified/boost/rational.hpp +55 -37
  278. data/src/cxx_supportlib/vendor-modified/boost/regex/concepts.hpp +3 -2
  279. data/src/cxx_supportlib/vendor-modified/boost/regex/config.hpp +11 -1
  280. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex.hpp +7 -1
  281. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_creator.hpp +3 -1
  282. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/basic_regex_parser.hpp +5 -2
  283. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/fileiter.hpp +0 -3
  284. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/instances.hpp +15 -4
  285. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_flags.hpp +1 -2
  286. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/match_results.hpp +12 -3
  287. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher.hpp +7 -2
  288. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_common.hpp +7 -3
  289. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/perl_matcher_non_recursive.hpp +6 -2
  290. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_format.hpp +0 -5
  291. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_iterator.hpp +0 -8
  292. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_raw_buffer.hpp +3 -3
  293. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_split.hpp +3 -1
  294. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_token_iterator.hpp +0 -8
  295. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_traits_defaults.hpp +12 -11
  296. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/regex_workaround.hpp +7 -4
  297. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_iterator.hpp +1 -9
  298. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/u32regex_token_iterator.hpp +2 -10
  299. data/src/cxx_supportlib/vendor-modified/boost/regex/v4/w32_regex_traits.hpp +2 -0
  300. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/allocate_shared_array.hpp +60 -115
  301. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/local_counted_base.hpp +3 -3
  302. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp +2 -1
  303. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_aix.hpp +2 -1
  304. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_clang.hpp +2 -1
  305. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp +2 -1
  306. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp +2 -1
  307. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp +2 -1
  308. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp +2 -1
  309. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp +2 -1
  310. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp +2 -1
  311. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp +2 -1
  312. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_nt.hpp +2 -1
  313. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_pt.hpp +2 -1
  314. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp +2 -1
  315. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_solaris.hpp +2 -1
  316. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_spin.hpp +2 -1
  317. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp +2 -1
  318. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_sync.hpp +2 -1
  319. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp +2 -1
  320. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/sp_counted_impl.hpp +3 -3
  321. data/src/cxx_supportlib/vendor-modified/boost/smart_ptr/detail/yield_k.hpp +14 -8
  322. data/src/cxx_supportlib/vendor-modified/boost/system/config.hpp +4 -24
  323. data/src/cxx_supportlib/vendor-modified/boost/system/detail/config.hpp +57 -0
  324. data/src/cxx_supportlib/vendor-modified/boost/system/detail/generic_category.hpp +101 -0
  325. data/src/cxx_supportlib/vendor-modified/boost/system/detail/std_interoperability.hpp +141 -0
  326. data/src/cxx_supportlib/vendor-modified/boost/system/detail/system_category_posix.hpp +132 -0
  327. data/src/cxx_supportlib/vendor-modified/boost/system/error_code.hpp +775 -588
  328. data/src/cxx_supportlib/vendor-modified/boost/system/system_error.hpp +4 -4
  329. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/config.hpp +6 -0
  330. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/move.hpp +13 -6
  331. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/nullary_function.hpp +8 -3
  332. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread.hpp +3 -1
  333. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/thread_safety.hpp +160 -0
  334. data/src/cxx_supportlib/vendor-modified/boost/thread/detail/tss_hooks.hpp +2 -2
  335. data/src/cxx_supportlib/vendor-modified/boost/thread/exceptions.hpp +3 -3
  336. data/src/cxx_supportlib/vendor-modified/boost/thread/executors/basic_thread_pool.hpp +24 -1
  337. data/src/cxx_supportlib/vendor-modified/boost/thread/future.hpp +10 -1
  338. data/src/cxx_supportlib/vendor-modified/boost/thread/lock_guard.hpp +4 -4
  339. data/src/cxx_supportlib/vendor-modified/boost/thread/lockable_traits.hpp +31 -0
  340. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable.hpp +2 -2
  341. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/condition_variable_fwd.hpp +2 -2
  342. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/mutex.hpp +8 -53
  343. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/pthread_mutex_scoped_lock.hpp +73 -4
  344. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/recursive_mutex.hpp +6 -6
  345. data/src/cxx_supportlib/vendor-modified/boost/thread/pthread/thread_data.hpp +14 -9
  346. data/src/cxx_supportlib/vendor-modified/boost/thread/xtime.hpp +6 -6
  347. data/src/cxx_supportlib/vendor-modified/boost/throw_exception.hpp +9 -8
  348. data/src/cxx_supportlib/vendor-modified/boost/token_functions.hpp +1 -0
  349. data/src/cxx_supportlib/vendor-modified/boost/type_index/stl_type_index.hpp +21 -19
  350. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/common_arithmetic_type.hpp +3 -1
  351. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/config.hpp +9 -0
  352. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/detector.hpp +1 -1
  353. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_postfix_operator.hpp +55 -0
  354. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/has_prefix_operator.hpp +72 -0
  355. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_03.hpp +108 -0
  356. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_cxx_11.hpp +501 -0
  357. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_function_msvc10_fix.hpp +30 -0
  358. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_likely_lambda.hpp +2 -2
  359. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp +117 -0
  360. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp +557 -0
  361. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp +43 -0
  362. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected.hpp +1 -1
  363. data/src/cxx_supportlib/vendor-modified/boost/type_traits/detected_or.hpp +1 -1
  364. data/src/cxx_supportlib/vendor-modified/boost/type_traits/enable_if.hpp +37 -0
  365. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_dereference.hpp +344 -0
  366. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus.hpp +5 -0
  367. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_minus_assign.hpp +5 -0
  368. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_plus_assign.hpp +5 -0
  369. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_decrement.hpp +21 -0
  370. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_post_increment.hpp +21 -0
  371. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_decrement.hpp +21 -0
  372. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_pre_increment.hpp +22 -0
  373. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_assign.hpp +1 -1
  374. data/src/cxx_supportlib/vendor-modified/boost/type_traits/has_trivial_move_constructor.hpp +2 -1
  375. data/src/cxx_supportlib/vendor-modified/boost/type_traits/integral_constant.hpp +5 -15
  376. data/src/cxx_supportlib/vendor-modified/boost/type_traits/intrinsics.hpp +16 -6
  377. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_complete.hpp +3 -1
  378. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_assignable.hpp +3 -4
  379. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_copy_constructible.hpp +4 -6
  380. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected.hpp +1 -1
  381. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_convertible.hpp +1 -1
  382. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_detected_exact.hpp +1 -1
  383. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_final.hpp +1 -1
  384. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_function.hpp +4 -79
  385. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_member_function_pointer.hpp +3 -97
  386. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_noncopyable.hpp +39 -0
  387. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_assignable.hpp +2 -2
  388. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_nothrow_move_constructible.hpp +2 -2
  389. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_rvalue_reference.hpp +4 -0
  390. data/src/cxx_supportlib/vendor-modified/boost/type_traits/is_virtual_base_of.hpp +104 -63
  391. data/src/cxx_supportlib/vendor-modified/boost/type_traits/make_void.hpp +1 -1
  392. data/src/cxx_supportlib/vendor-modified/boost/type_traits/nonesuch.hpp +1 -1
  393. data/src/cxx_supportlib/vendor-modified/boost/typeof/constant.hpp +26 -0
  394. data/src/cxx_supportlib/vendor-modified/boost/typeof/dmc/typeof_impl.hpp +4 -4
  395. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode.hpp +0 -3
  396. data/src/cxx_supportlib/vendor-modified/boost/typeof/encode_decode_params.hpp +1 -1
  397. data/src/cxx_supportlib/vendor-modified/boost/typeof/int_encoding.hpp +4 -5
  398. data/src/cxx_supportlib/vendor-modified/boost/typeof/modifiers.hpp +5 -5
  399. data/src/cxx_supportlib/vendor-modified/boost/typeof/msvc/typeof_impl.hpp +9 -9
  400. data/src/cxx_supportlib/vendor-modified/boost/typeof/native.hpp +3 -3
  401. data/src/cxx_supportlib/vendor-modified/boost/typeof/pointers_data_members.hpp +2 -2
  402. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_functions_iterate.hpp +6 -6
  403. data/src/cxx_supportlib/vendor-modified/boost/typeof/register_mem_functions.hpp +1 -1
  404. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_encoding.hpp +4 -4
  405. data/src/cxx_supportlib/vendor-modified/boost/typeof/template_template_param.hpp +2 -2
  406. data/src/cxx_supportlib/vendor-modified/boost/typeof/type_encoding.hpp +2 -2
  407. data/src/cxx_supportlib/vendor-modified/boost/typeof/typeof_impl.hpp +16 -16
  408. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector.hpp +5 -5
  409. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector100.hpp +201 -201
  410. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector150.hpp +301 -301
  411. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector200.hpp +401 -401
  412. data/src/cxx_supportlib/vendor-modified/boost/typeof/vector50.hpp +101 -101
  413. data/src/cxx_supportlib/vendor-modified/boost/utility/detail/minstd_rand.hpp +3 -0
  414. data/src/cxx_supportlib/vendor-modified/boost/utility/string_ref.hpp +2 -0
  415. data/src/cxx_supportlib/vendor-modified/boost/utility/string_view.hpp +26 -6
  416. data/src/cxx_supportlib/vendor-modified/boost/version.hpp +2 -2
  417. data/src/helper-scripts/prespawn +1 -0
  418. data/src/nginx_module/ConfigGeneral/AutoGeneratedDefinitions.c +40 -0
  419. data/src/nginx_module/ConfigGeneral/AutoGeneratedManifestDefaultsInitialization.c +26 -0
  420. data/src/nginx_module/ConfigGeneral/AutoGeneratedSetterFuncs.c +48 -0
  421. data/src/nginx_module/Configuration.c +6 -2
  422. data/src/nginx_module/ContentHandler.c +5 -1
  423. data/src/nginx_module/LocationConfig/AutoGeneratedCreateFunction.c +15 -0
  424. data/src/nginx_module/LocationConfig/AutoGeneratedHeaderSerialization.c +15 -0
  425. data/src/nginx_module/LocationConfig/AutoGeneratedManifestGeneration.c +28 -0
  426. data/src/nginx_module/LocationConfig/AutoGeneratedMergeFunction.c +6 -0
  427. data/src/nginx_module/LocationConfig/AutoGeneratedStruct.h +11 -0
  428. data/src/nginx_module/MainConfig/AutoGeneratedCreateFunction.c +11 -0
  429. data/src/nginx_module/MainConfig/AutoGeneratedManifestGeneration.c +23 -0
  430. data/src/nginx_module/MainConfig/AutoGeneratedStruct.h +8 -0
  431. data/src/nginx_module/ngx_http_passenger_module.c +2 -0
  432. data/src/nodejs_supportlib/vendor-copy/winston/lib/winston/logger.js +0 -0
  433. data/src/ruby_native_extension/extconf.rb +7 -0
  434. data/src/ruby_supportlib/phusion_passenger.rb +7 -7
  435. data/src/ruby_supportlib/phusion_passenger/admin_tools/instance_registry.rb +8 -0
  436. data/src/ruby_supportlib/phusion_passenger/apache2/config_options.rb +23 -0
  437. data/src/ruby_supportlib/phusion_passenger/constants.rb +1 -0
  438. data/src/ruby_supportlib/phusion_passenger/loader_shared_helpers.rb +1 -3
  439. data/src/ruby_supportlib/phusion_passenger/nginx/config_options.rb +37 -0
  440. data/src/ruby_supportlib/phusion_passenger/platform_info/compiler.rb +1 -1
  441. data/src/ruby_supportlib/phusion_passenger/rack/thread_handler_extension.rb +10 -0
  442. data/src/ruby_supportlib/phusion_passenger/request_handler.rb +2 -2
  443. data/src/ruby_supportlib/phusion_passenger/request_handler/thread_handler.rb +5 -0
  444. data/src/ruby_supportlib/phusion_passenger/standalone/config_options_list.rb +11 -0
  445. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/builtin_engine.rb +3 -0
  446. data/src/ruby_supportlib/phusion_passenger/standalone/start_command/nginx_engine.rb +1 -1
  447. data/src/ruby_supportlib/phusion_passenger/utils/tee_input.rb +6 -0
  448. data/src/ruby_supportlib/phusion_passenger/utils/unseekable_socket.rb +15 -11
  449. metadata +42 -8
  450. data/src/cxx_supportlib/vendor-modified/boost/call_traits.hpp +0 -20
  451. data/src/cxx_supportlib/vendor-modified/boost/detail/call_traits.hpp +0 -172
  452. data/src/cxx_supportlib/vendor-modified/boost/detail/no_exceptions_support.hpp +0 -17
  453. data/src/cxx_supportlib/vendor-modified/boost/system/detail/error_code.ipp +0 -496
@@ -124,6 +124,9 @@
124
124
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
125
125
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
126
126
  #endif
127
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
128
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
129
+ #endif
127
130
 
128
131
  #if (__DMC__ <= 0x840)
129
132
  #error "Compiler not supported or configured - please reconfigure"
@@ -132,6 +135,6 @@
132
135
  // last known and checked version is ...:
133
136
  #if (__DMC__ > 0x848)
134
137
  # if defined(BOOST_ASSERT_CONFIG)
135
- # error "Unknown compiler version - please run the configure tests and report the results"
138
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
136
139
  # endif
137
140
  #endif
@@ -299,6 +299,9 @@
299
299
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
300
300
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
301
301
  #endif
302
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
303
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
304
+ #endif
302
305
 
303
306
  #if __GNUC__ >= 7
304
307
  # define BOOST_FALLTHROUGH __attribute__((fallthrough))
@@ -343,14 +346,14 @@
343
346
  # error "Compiler not configured - please reconfigure"
344
347
  #endif
345
348
  //
346
- // last known and checked version is 7.1:
347
- #if (BOOST_GCC_VERSION > 70100)
349
+ // last known and checked version is 8.1:
350
+ #if (BOOST_GCC_VERSION > 80100)
348
351
  # if defined(BOOST_ASSERT_CONFIG)
349
352
  # error "Boost.Config is older than your compiler - please check for an updated Boost release."
350
353
  # else
351
354
  // we don't emit warnings here anymore since there are no defect macros defined for
352
355
  // gcc post 3.4, so any failures are gcc regressions...
353
- //# warning "Unknown compiler version - please run the configure tests and report the results"
356
+ //# warning "boost: Unknown compiler version - please run the configure tests and report the results"
354
357
  # endif
355
358
  #endif
356
359
 
@@ -102,6 +102,9 @@
102
102
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
103
103
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
104
104
  #endif
105
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
106
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
107
+ #endif
105
108
 
106
109
  #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
107
110
 
@@ -21,7 +21,7 @@
21
21
  // last known and checked version is 0:
22
22
  #if (__ghs > 0)
23
23
  # if defined(BOOST_ASSERT_CONFIG)
24
- # error "Unknown compiler version - please run the configure tests and report the results"
24
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
25
25
  # endif
26
26
  #endif
27
27
 
@@ -142,6 +142,6 @@
142
142
  // last known and checked version for PA-RISC is 38000
143
143
  #if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
144
144
  # if defined(BOOST_ASSERT_CONFIG)
145
- # error "Unknown compiler version - please run the configure tests and report the results"
145
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
146
146
  # endif
147
147
  #endif
@@ -46,12 +46,17 @@
46
46
  #undef BOOST_GCC_VERSION
47
47
  #undef BOOST_GCC_CXX11
48
48
  #undef BOOST_GCC
49
+ #undef BOOST_FALLTHROUGH
49
50
 
50
51
  // Broken in all versions up to 17 (newer versions not tested)
51
52
  #if (__INTEL_COMPILER <= 1700) && !defined(BOOST_NO_CXX14_CONSTEXPR)
52
53
  # define BOOST_NO_CXX14_CONSTEXPR
53
54
  #endif
54
55
 
56
+ #if (__INTEL_COMPILER >= 1800) && (__cplusplus >= 201703)
57
+ # define BOOST_FALLTHROUGH [[fallthrough]]
58
+ #endif
59
+
55
60
  #endif // defined(_MSC_VER)
56
61
 
57
62
  #undef BOOST_COMPILER
@@ -558,7 +563,7 @@ template<> struct assert_intrinsic_wchar_t {};
558
563
  // We don't emit this warning any more, since we have so few
559
564
  // defect macros set anyway (just the one).
560
565
  //
561
- //# pragma message("Unknown compiler version - please run the configure tests and report the results")
566
+ //# pragma message("boost: Unknown compiler version - please run the configure tests and report the results")
562
567
  # endif
563
568
  #endif
564
569
 
@@ -25,7 +25,7 @@
25
25
  // last known and checked version is 4001:
26
26
  #if (__KCC_VERSION > 4001)
27
27
  # if defined(BOOST_ASSERT_CONFIG)
28
- # error "Unknown compiler version - please run the configure tests and report the results"
28
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
29
29
  # endif
30
30
  #endif
31
31
 
@@ -167,6 +167,9 @@
167
167
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
168
168
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
169
169
  #endif
170
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
171
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
172
+ #endif
170
173
 
171
174
  #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
172
175
 
@@ -180,7 +183,7 @@
180
183
  // last known and checked version:
181
184
  #if (__MWERKS__ > 0x3205)
182
185
  # if defined(BOOST_ASSERT_CONFIG)
183
- # error "Unknown compiler version - please run the configure tests and report the results"
186
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
184
187
  # endif
185
188
  #endif
186
189
 
@@ -116,6 +116,9 @@
116
116
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
117
117
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
118
118
  #endif
119
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
120
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
121
+ #endif
119
122
 
120
123
  //
121
124
  // versions check:
@@ -127,7 +130,7 @@
127
130
  // last known and checked version is 0x890:
128
131
  #if (MPW_CPLUS > 0x890)
129
132
  # if defined(BOOST_ASSERT_CONFIG)
130
- # error "Unknown compiler version - please run the configure tests and report the results"
133
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
131
134
  # endif
132
135
  #endif
133
136
 
@@ -12,7 +12,7 @@
12
12
  #endif
13
13
 
14
14
  #if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
15
- # define BOOST_CUDA_VERSION __CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__
15
+ # define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__)
16
16
  #else
17
17
  // We don't really know what the CUDA version is, but it's definitely before 7.5:
18
18
  # define BOOST_CUDA_VERSION 7000000
@@ -33,8 +33,8 @@
33
33
  #if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000)
34
34
  # define BOOST_NO_CXX11_VARIADIC_TEMPLATES
35
35
  #endif
36
- // Most recent CUDA (8.0) has no constexpr support in msvc mode:
37
- #if defined(_MSC_VER)
36
+ // CUDA (8.0) has no constexpr support in msvc mode:
37
+ #if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000)
38
38
  # define BOOST_NO_CXX11_CONSTEXPR
39
39
  #endif
40
40
 
@@ -129,4 +129,7 @@
129
129
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
130
130
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
131
131
  #endif
132
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
133
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
134
+ #endif
132
135
  #endif
@@ -182,6 +182,9 @@
182
182
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
183
183
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
184
184
  #endif
185
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
186
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
187
+ #endif
185
188
 
186
189
  // Turn on threading support for Solaris 12.
187
190
  // Ticket #11972
@@ -56,7 +56,7 @@
56
56
  // last known and checked version is 1210:
57
57
  #if (__IBMCPP__ > 1210)
58
58
  # if defined(BOOST_ASSERT_CONFIG)
59
- # error "Unknown compiler version - please run the configure tests and report the results"
59
+ # error "boost: Unknown compiler version - please run the configure tests and report the results"
60
60
  # endif
61
61
  #endif
62
62
 
@@ -178,3 +178,6 @@
178
178
  #if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
179
179
  # define BOOST_NO_CXX17_FOLD_EXPRESSIONS
180
180
  #endif
181
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
182
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
183
+ #endif
@@ -201,6 +201,9 @@
201
201
  //
202
202
  #if (_MSC_VER < 1911) || (_MSVC_LANG < 201703)
203
203
  # define BOOST_NO_CXX17_STRUCTURED_BINDINGS
204
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
205
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
206
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
204
207
  #endif
205
208
 
206
209
  // MSVC including version 14 has not yet completely
@@ -233,9 +236,11 @@
233
236
  // Supported from msvc-15.5 onwards:
234
237
  #define BOOST_NO_CXX11_SFINAE_EXPR
235
238
  #endif
239
+ #if (_MSC_VER < 1915) || (_MSVC_LANG < 201402)
236
240
  // C++ 14:
237
241
  // Still gives internal compiler error for msvc-15.5:
238
242
  # define BOOST_NO_CXX14_CONSTEXPR
243
+ #endif
239
244
  // C++ 17:
240
245
  #if (_MSC_VER < 1912) || (_MSVC_LANG < 201703)
241
246
  #define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -283,9 +288,9 @@
283
288
  # if _MSC_VER < 1400
284
289
  // Note: I'm not aware of any CE compiler with version 13xx
285
290
  # if defined(BOOST_ASSERT_CONFIG)
286
- # error "Unknown EVC++ compiler version - please run the configure tests and report the results"
291
+ # error "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
287
292
  # else
288
- # pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
293
+ # pragma message("boost: Unknown EVC++ compiler version - please run the configure tests and report the results")
289
294
  # endif
290
295
  # elif _MSC_VER < 1500
291
296
  # define BOOST_COMPILER_VERSION evc8
@@ -301,9 +306,9 @@
301
306
  # define BOOST_COMPILER_VERSION evc14
302
307
  # else
303
308
  # if defined(BOOST_ASSERT_CONFIG)
304
- # error "Unknown EVC++ compiler version - please run the configure tests and report the results"
309
+ # error "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
305
310
  # else
306
- # pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
311
+ # pragma message("boost: Unknown EVC++ compiler version - please run the configure tests and report the results")
307
312
  # endif
308
313
  # endif
309
314
  # else
@@ -246,6 +246,10 @@
246
246
  # define BOOST_NO_CXX17_STRUCTURED_BINDINGS
247
247
  #endif
248
248
 
249
+ #if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
250
+ # define BOOST_NO_CXX17_IF_CONSTEXPR
251
+ #endif
252
+
249
253
  // Clang 3.9+ in c++1z
250
254
  #if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L
251
255
  # define BOOST_NO_CXX17_INLINE_VARIABLES
@@ -153,6 +153,7 @@
153
153
  #define BOOST_NO_CXX17_STRUCTURED_BINDINGS
154
154
  #define BOOST_NO_CXX17_INLINE_VARIABLES
155
155
  #define BOOST_NO_CXX17_FOLD_EXPRESSIONS
156
+ #define BOOST_NO_CXX17_IF_CONSTEXPR
156
157
 
157
158
  // -------------------------------------
158
159
 
@@ -39,8 +39,7 @@
39
39
  // Intel
40
40
  # define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
41
41
 
42
- #elif defined __clang__ && !defined(__CUDACC__) && !defined(__ibmxl__)
43
- // when using clang and cuda at same time, you want to appear as gcc
42
+ #elif defined __clang__ && !defined(__ibmxl__)
44
43
  // Clang C++ emulates GCC, so it has to appear early.
45
44
  # define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
46
45
 
@@ -1023,6 +1023,19 @@ namespace std{ using ::type_info; }
1023
1023
  # define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
1024
1024
  #endif
1025
1025
 
1026
+ // This is a catch all case for obsolete compilers / std libs:
1027
+ #if !defined(__has_include)
1028
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
1029
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
1030
+ #else
1031
+ #if !__has_include(<optional>)
1032
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
1033
+ #endif
1034
+ #if !__has_include(<string_view>)
1035
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
1036
+ #endif
1037
+ #endif
1038
+
1026
1039
  //
1027
1040
  // Finish off with checks for macros that are depricated / no longer supported,
1028
1041
  // if any of these are set then it's very likely that much of Boost will no
@@ -96,7 +96,7 @@
96
96
  #include <exception>
97
97
  #endif
98
98
  #include <typeinfo>
99
- #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (!_HAS_NAMESPACE && defined(__ghs__)) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \
99
+ #if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (defined(__ghs__) && !_HAS_NAMESPACE) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \
100
100
  && !defined(__VXWORKS__)
101
101
  # define BOOST_NO_STD_TYPEINFO
102
102
  #endif
@@ -175,7 +175,7 @@
175
175
  # define BOOST_NO_CXX17_STD_APPLY
176
176
  # define BOOST_NO_CXX17_ITERATOR_TRAITS
177
177
  #endif
178
- #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
178
+ #if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709)
179
179
  # define BOOST_NO_CXX17_STD_INVOKE
180
180
  #endif
181
181
 
@@ -87,11 +87,10 @@
87
87
  #endif
88
88
 
89
89
  // C++17 features
90
- #if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
91
- # define BOOST_NO_CXX17_STD_INVOKE
92
- #endif
93
90
  #if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
94
91
  # define BOOST_NO_CXX17_STD_APPLY
92
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
93
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
95
94
  #endif
96
95
  #if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
97
96
  # define BOOST_NO_AUTO_PTR
@@ -104,6 +103,7 @@
104
103
  #endif
105
104
 
106
105
  #define BOOST_NO_CXX17_ITERATOR_TRAITS
106
+ #define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result)
107
107
 
108
108
  #if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
109
109
  // This is a bit of a sledgehammer, because really it's just libc++abi that has no
@@ -113,10 +113,16 @@
113
113
  # define BOOST_NO_CXX11_THREAD_LOCAL
114
114
  #endif
115
115
 
116
- #if defined(__linux__) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
116
+ #if defined(__linux__) && (_LIBCPP_VERSION < 6000) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
117
117
  // After libc++-dev is installed on Trusty, clang++-libc++ almost works,
118
118
  // except uses of `thread_local` fail with undefined reference to
119
119
  // `__cxa_thread_atexit`.
120
+ //
121
+ // clang's libc++abi provides an implementation by deferring to the glibc
122
+ // implementation, which may or may not be available (it is not on Trusty).
123
+ // clang 4's libc++abi will provide an implementation if one is not in glibc
124
+ // though, so thread local support should work with clang 4 and above as long
125
+ // as libc++abi is linked in.
120
126
  # define BOOST_NO_CXX11_THREAD_LOCAL
121
127
  #endif
122
128
 
@@ -130,4 +136,8 @@
130
136
  # define BOOST_NO_CXX14_HDR_SHARED_MUTEX
131
137
  #endif
132
138
 
139
+ #if !defined(BOOST_NO_CXX14_HDR_SHARED_MUTEX) && (_LIBCPP_VERSION < 5000)
140
+ # define BOOST_NO_CXX14_HDR_SHARED_MUTEX
141
+ #endif
142
+
133
143
  // --- end ---
@@ -294,13 +294,13 @@ extern "C" char *gets (char *__s);
294
294
  #endif
295
295
 
296
296
  //
297
- // C++17 features in GCC 6.1 and later
297
+ // C++17 features in GCC 7.1 and later
298
298
  //
299
- #if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L)
300
- # define BOOST_NO_CXX17_STD_INVOKE
301
- #endif
302
299
  #if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
300
+ # define BOOST_NO_CXX17_STD_INVOKE
303
301
  # define BOOST_NO_CXX17_STD_APPLY
302
+ # define BOOST_NO_CXX17_HDR_OPTIONAL
303
+ # define BOOST_NO_CXX17_HDR_STRING_VIEW
304
304
  #endif
305
305
 
306
306
  #if defined(__has_include)
@@ -117,9 +117,9 @@ class adaptive_pool
117
117
  #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
118
118
  private:
119
119
  //!Not assignable from related adaptive_pool
120
- template<class T2, unsigned Version2, std::size_t N2, std::size_t F2>
120
+ template<class T2, std::size_t N2, std::size_t F2, std::size_t O2, unsigned Version2>
121
121
  adaptive_pool& operator=
122
- (const adaptive_pool<T2, Version2, N2, F2>&);
122
+ (const adaptive_pool<T2, N2, F2, O2, Version2>&);
123
123
 
124
124
  #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
125
125
 
@@ -341,6 +341,266 @@ class adaptive_pool
341
341
  }
342
342
  };
343
343
 
344
+
345
+
346
+
347
+
348
+
349
+
350
+
351
+
352
+
353
+
354
+
355
+
356
+
357
+
358
+
359
+
360
+
361
+
362
+
363
+ template < class T
364
+ , std::size_t NodesPerBlock = ADP_nodes_per_block
365
+ , std::size_t MaxFreeBlocks = ADP_max_free_blocks
366
+ , std::size_t OverheadPercent = ADP_overhead_percent
367
+ , unsigned Version = 2
368
+ >
369
+ class private_adaptive_pool
370
+ {
371
+ //!If Version is 1, the allocator is a STL conforming allocator. If Version is 2,
372
+ //!the allocator offers advanced expand in place and burst allocation capabilities.
373
+ public:
374
+ typedef unsigned int allocation_type;
375
+ typedef private_adaptive_pool
376
+ <T, NodesPerBlock, MaxFreeBlocks, OverheadPercent
377
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)
378
+ > self_t;
379
+
380
+ static const std::size_t nodes_per_block = NodesPerBlock;
381
+ static const std::size_t max_free_blocks = MaxFreeBlocks;
382
+ static const std::size_t overhead_percent = OverheadPercent;
383
+ static const std::size_t real_nodes_per_block = NodesPerBlock;
384
+
385
+ BOOST_CONTAINER_DOCIGN(BOOST_STATIC_ASSERT((Version <=2)));
386
+
387
+ typedef dtl::private_adaptive_node_pool
388
+ <sizeof(T), NodesPerBlock, MaxFreeBlocks, OverheadPercent> pool_t;
389
+ pool_t m_pool;
390
+
391
+ public:
392
+ //-------
393
+ typedef T value_type;
394
+ typedef T * pointer;
395
+ typedef const T * const_pointer;
396
+ typedef typename ::boost::container::
397
+ dtl::unvoid_ref<T>::type reference;
398
+ typedef typename ::boost::container::
399
+ dtl::unvoid_ref<const T>::type const_reference;
400
+ typedef std::size_t size_type;
401
+ typedef std::ptrdiff_t difference_type;
402
+
403
+ typedef boost::container::dtl::
404
+ version_type<self_t, Version> version;
405
+
406
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
407
+ typedef boost::container::dtl::
408
+ basic_multiallocation_chain<void*> multiallocation_chain_void;
409
+ typedef boost::container::dtl::
410
+ transform_multiallocation_chain
411
+ <multiallocation_chain_void, T> multiallocation_chain;
412
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
413
+
414
+ //!Obtains private_adaptive_pool from
415
+ //!private_adaptive_pool
416
+ template<class T2>
417
+ struct rebind
418
+ {
419
+ typedef private_adaptive_pool
420
+ < T2
421
+ , NodesPerBlock
422
+ , MaxFreeBlocks
423
+ , OverheadPercent
424
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)
425
+ > other;
426
+ };
427
+
428
+ #ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
429
+ private:
430
+ //!Not assignable from related private_adaptive_pool
431
+ template<class T2, std::size_t N2, std::size_t F2, std::size_t O2, unsigned Version2>
432
+ private_adaptive_pool& operator=
433
+ (const private_adaptive_pool<T2, N2, F2, O2, Version2>&);
434
+ #endif //#ifndef BOOST_CONTAINER_DOXYGEN_INVOKED
435
+
436
+ public:
437
+ //!Default constructor
438
+ private_adaptive_pool() BOOST_NOEXCEPT_OR_NOTHROW
439
+ {}
440
+
441
+ //!Copy constructor from other private_adaptive_pool.
442
+ private_adaptive_pool(const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
443
+ {}
444
+
445
+ //!Copy constructor from related private_adaptive_pool.
446
+ template<class T2>
447
+ private_adaptive_pool
448
+ (const private_adaptive_pool<T2, NodesPerBlock, MaxFreeBlocks, OverheadPercent
449
+ BOOST_CONTAINER_DOCIGN(BOOST_MOVE_I Version)> &) BOOST_NOEXCEPT_OR_NOTHROW
450
+ {}
451
+
452
+ //!Destructor
453
+ ~private_adaptive_pool() BOOST_NOEXCEPT_OR_NOTHROW
454
+ {}
455
+
456
+ //!Returns the number of elements that could be allocated.
457
+ //!Never throws
458
+ size_type max_size() const BOOST_NOEXCEPT_OR_NOTHROW
459
+ { return size_type(-1)/sizeof(T); }
460
+
461
+ //!Allocate memory for an array of count elements.
462
+ //!Throws std::bad_alloc if there is no enough memory
463
+ pointer allocate(size_type count, const void * = 0)
464
+ {
465
+ if(BOOST_UNLIKELY(count > this->max_size()))
466
+ boost::container::throw_bad_alloc();
467
+
468
+ if(Version == 1 && count == 1){
469
+ return pointer(static_cast<T*>(m_pool.allocate_node()));
470
+ }
471
+ else{
472
+ return static_cast<pointer>(dlmalloc_malloc(count*sizeof(T)));
473
+ }
474
+ }
475
+
476
+ //!Deallocate allocated memory.
477
+ //!Never throws
478
+ void deallocate(const pointer &ptr, size_type count) BOOST_NOEXCEPT_OR_NOTHROW
479
+ {
480
+ (void)count;
481
+ if(Version == 1 && count == 1){
482
+ m_pool.deallocate_node(ptr);
483
+ }
484
+ else{
485
+ dlmalloc_free(ptr);
486
+ }
487
+ }
488
+
489
+ pointer allocation_command(allocation_type command,
490
+ size_type limit_size,
491
+ size_type &prefer_in_recvd_out_size,
492
+ pointer &reuse)
493
+ {
494
+ pointer ret = this->priv_allocation_command(command, limit_size, prefer_in_recvd_out_size, reuse);
495
+ if(BOOST_UNLIKELY(!ret && !(command & BOOST_CONTAINER_NOTHROW_ALLOCATION)))
496
+ boost::container::throw_bad_alloc();
497
+ return ret;
498
+ }
499
+
500
+ //!Returns maximum the number of objects the previously allocated memory
501
+ //!pointed by p can hold.
502
+ size_type size(pointer p) const BOOST_NOEXCEPT_OR_NOTHROW
503
+ { return dlmalloc_size(p); }
504
+
505
+ //!Allocates just one object. Memory allocated with this function
506
+ //!must be deallocated only with deallocate_one().
507
+ //!Throws bad_alloc if there is no enough memory
508
+ pointer allocate_one()
509
+ {
510
+ return (pointer)m_pool.allocate_node();
511
+ }
512
+
513
+ //!Allocates many elements of size == 1.
514
+ //!Elements must be individually deallocated with deallocate_one()
515
+ void allocate_individual(std::size_t num_elements, multiallocation_chain &chain)
516
+ {
517
+ m_pool.allocate_nodes(num_elements, static_cast<typename pool_t::multiallocation_chain&>(chain));
518
+ }
519
+
520
+ //!Deallocates memory previously allocated with allocate_one().
521
+ //!You should never use deallocate_one to deallocate memory allocated
522
+ //!with other functions different from allocate_one(). Never throws
523
+ void deallocate_one(pointer p) BOOST_NOEXCEPT_OR_NOTHROW
524
+ {
525
+ m_pool.deallocate_node(p);
526
+ }
527
+
528
+ void deallocate_individual(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
529
+ {
530
+ m_pool.deallocate_nodes(chain);
531
+ }
532
+
533
+ //!Allocates many elements of size elem_size.
534
+ //!Elements must be individually deallocated with deallocate()
535
+ void allocate_many(size_type elem_size, std::size_t n_elements, multiallocation_chain &chain)
536
+ {
537
+ BOOST_STATIC_ASSERT(( Version > 1 ));
538
+ if(BOOST_UNLIKELY(!dlmalloc_multialloc_nodes
539
+ (n_elements, elem_size*sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast<dlmalloc_memchain *>(&chain)))){
540
+ boost::container::throw_bad_alloc();
541
+ }
542
+ }
543
+
544
+ //!Allocates n_elements elements, each one of size elem_sizes[i]
545
+ //!Elements must be individually deallocated with deallocate()
546
+ void allocate_many(const size_type *elem_sizes, size_type n_elements, multiallocation_chain &chain)
547
+ {
548
+ BOOST_STATIC_ASSERT(( Version > 1 ));
549
+ if(BOOST_UNLIKELY(!dlmalloc_multialloc_arrays
550
+ (n_elements, elem_sizes, sizeof(T), DL_MULTIALLOC_DEFAULT_CONTIGUOUS, reinterpret_cast<dlmalloc_memchain *>(&chain)))){
551
+ boost::container::throw_bad_alloc();
552
+ }
553
+ }
554
+
555
+ void deallocate_many(multiallocation_chain &chain) BOOST_NOEXCEPT_OR_NOTHROW
556
+ {
557
+ dlmalloc_multidealloc(reinterpret_cast<dlmalloc_memchain *>(&chain));
558
+ }
559
+
560
+ //!Deallocates all free blocks of the pool
561
+ void deallocate_free_blocks() BOOST_NOEXCEPT_OR_NOTHROW
562
+ {
563
+ m_pool.deallocate_free_blocks();
564
+ }
565
+
566
+ //!Swaps allocators. Does not throw. If each allocator is placed in a
567
+ //!different memory segment, the result is undefined.
568
+ friend void swap(private_adaptive_pool &, private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
569
+ {}
570
+
571
+ //!An allocator always compares to true, as memory allocated with one
572
+ //!instance can be deallocated by another instance
573
+ friend bool operator==(const private_adaptive_pool &, const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
574
+ { return true; }
575
+
576
+ //!An allocator always compares to false, as memory allocated with one
577
+ //!instance can be deallocated by another instance
578
+ friend bool operator!=(const private_adaptive_pool &, const private_adaptive_pool &) BOOST_NOEXCEPT_OR_NOTHROW
579
+ { return false; }
580
+
581
+ private:
582
+ pointer priv_allocation_command
583
+ (allocation_type command, std::size_t limit_size
584
+ ,size_type &prefer_in_recvd_out_size, pointer &reuse_ptr)
585
+ {
586
+ std::size_t const preferred_size = prefer_in_recvd_out_size;
587
+ dlmalloc_command_ret_t ret = {0 , 0};
588
+ if(BOOST_UNLIKELY(limit_size > this->max_size() || preferred_size > this->max_size())){
589
+ return pointer();
590
+ }
591
+ std::size_t l_size = limit_size*sizeof(T);
592
+ std::size_t p_size = preferred_size*sizeof(T);
593
+ std::size_t r_size;
594
+ {
595
+ void* reuse_ptr_void = reuse_ptr;
596
+ ret = dlmalloc_allocation_command(command, sizeof(T), l_size, p_size, &r_size, reuse_ptr_void);
597
+ reuse_ptr = ret.second ? static_cast<T*>(reuse_ptr_void) : 0;
598
+ }
599
+ prefer_in_recvd_out_size = r_size/sizeof(T);
600
+ return (pointer)ret.first;
601
+ }
602
+ };
603
+
344
604
  } //namespace container {
345
605
  } //namespace boost {
346
606