include/boost/corosio/detail/object_pool.hpp
94.8% Lines (73 / 77)
18.1% Branches (166 / 916)
99.0% Functions (204 / 206, 1 excl)
Functions (207)
Function
Calls
Lines
Branches
Blocks
<unknown function 58>
:58
–
–
–
–
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::is_pooled(boost::corosio::detail::(anonymous namespace)::pool_impl const*)
:78
24x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::is_pooled(boost::corosio::detail::(anonymous namespace)::self_ref_derived const*)
:78
1x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::is_pooled(boost::corosio::detail::(anonymous namespace)::self_ref_impl const*)
:78
1x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::is_pooled(boost::corosio::detail::kqueue_descriptor const*)
:78
174x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::is_pooled(boost::corosio::detail::kqueue_local_datagram_socket const*)
:78
284x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::is_pooled(boost::corosio::detail::kqueue_local_stream_acceptor const*)
:78
153x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::is_pooled(boost::corosio::detail::kqueue_local_stream_socket const*)
:78
378x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::is_pooled(boost::corosio::detail::kqueue_tcp_acceptor const*)
:78
3848x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::is_pooled(boost::corosio::detail::kqueue_tcp_socket const*)
:78
33151x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::is_pooled(boost::corosio::detail::kqueue_udp_socket const*)
:78
369x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::is_pooled(boost::corosio::detail::posix_random_access_file const*)
:78
484x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::is_pooled(boost::corosio::detail::posix_resolver const*)
:78
214x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::is_pooled(boost::corosio::detail::posix_signal const*)
:78
6902x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::is_pooled(boost::corosio::detail::posix_stream_file const*)
:78
1354x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::is_pooled(boost::corosio::detail::select_descriptor const*)
:78
171x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::is_pooled(boost::corosio::detail::select_local_datagram_socket const*)
:78
276x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::is_pooled(boost::corosio::detail::select_local_stream_acceptor const*)
:78
149x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::is_pooled(boost::corosio::detail::select_local_stream_socket const*)
:78
366x
0.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::is_pooled(boost::corosio::detail::select_tcp_acceptor const*)
:78
1874x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::is_pooled(boost::corosio::detail::select_tcp_socket const*)
:78
13314x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::is_pooled(boost::corosio::detail::select_udp_socket const*)
:78
360x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::is_pooled(boost::corosio::detail::timer::implementation const*)
:78
30636x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::adopt(boost::corosio::detail::(anonymous namespace)::pool_impl*)
:102
10x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::adopt(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)
:102
1x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::adopt(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)
:102
1x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::adopt(boost::corosio::detail::kqueue_descriptor*)
:102
71x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::adopt(boost::corosio::detail::kqueue_local_datagram_socket*)
:102
125x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::adopt(boost::corosio::detail::kqueue_local_stream_acceptor*)
:102
59x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::adopt(boost::corosio::detail::kqueue_local_stream_socket*)
:102
169x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::adopt(boost::corosio::detail::kqueue_tcp_acceptor*)
:102
1244x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::adopt(boost::corosio::detail::kqueue_tcp_socket*)
:102
4521x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::adopt(boost::corosio::detail::kqueue_udp_socket*)
:102
167x
100.0%
–
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::adopt(boost::corosio::detail::posix_random_access_file*)
:102
242x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::adopt(boost::corosio::detail::posix_resolver*)
:102
75x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::adopt(boost::corosio::detail::posix_signal*)
:102
3415x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::adopt(boost::corosio::detail::posix_stream_file*)
:102
645x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::adopt(boost::corosio::detail::select_descriptor*)
:102
69x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::adopt(boost::corosio::detail::select_local_datagram_socket*)
:102
121x
85.7%
7.8%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::adopt(boost::corosio::detail::select_local_stream_acceptor*)
:102
57x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::adopt(boost::corosio::detail::select_local_stream_socket*)
:102
163x
0.0%
0.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::adopt(boost::corosio::detail::select_tcp_acceptor*)
:102
774x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::adopt(boost::corosio::detail::select_tcp_socket*)
:102
1987x
85.7%
12.5%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::adopt(boost::corosio::detail::select_udp_socket*)
:102
163x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::adopt(boost::corosio::detail::timer::implementation*)
:102
15327x
85.7%
25.0%
36.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::remove(boost::corosio::detail::(anonymous namespace)::pool_impl*)
:129
3x
83.3%
33.3%
50.0%
boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::remove(boost::corosio::detail::timer::implementation*)
:129
14207x
83.3%
33.3%
50.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::~object_pool()
:151
14x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::~object_pool()
:151
2x
100.0%
61.1%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::~object_pool()
:151
2x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::~object_pool()
:151
118x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::~object_pool()
:151
150x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::~object_pool()
:151
106x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::~object_pool()
:151
224x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::~object_pool()
:151
1744x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::~object_pool()
:151
2176x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::~object_pool()
:151
226x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::~object_pool()
:151
374x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::~object_pool()
:151
148x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::~object_pool()
:151
1180x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::~object_pool()
:151
1178x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::~object_pool()
:151
116x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::~object_pool()
:151
146x
100.0%
18.2%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::~object_pool()
:151
102x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::~object_pool()
:151
216x
0.0%
0.0%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::~object_pool()
:151
806x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::~object_pool()
:151
932x
100.0%
29.2%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::~object_pool()
:151
222x
100.0%
58.3%
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::~object_pool()
:151
879x
100.0%
66.7%
77.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::object_pool()
:164
14x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::object_pool()
:164
2x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::object_pool()
:164
2x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::object_pool()
:164
118x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::object_pool()
:164
150x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::object_pool()
:164
106x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::object_pool()
:164
224x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::object_pool()
:164
1744x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::object_pool()
:164
2174x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::object_pool()
:164
226x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::object_pool()
:164
374x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::object_pool()
:164
148x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::object_pool()
:164
1180x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::object_pool()
:164
1178x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::object_pool()
:164
116x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::object_pool()
:164
146x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::object_pool()
:164
102x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::object_pool()
:164
216x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::object_pool()
:164
806x
0.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::object_pool()
:164
932x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::object_pool()
:164
222x
100.0%
–
100.0%
boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::object_pool()
:164
879x
100.0%
–
100.0%
boost::corosio::detail::(anonymous namespace)::pool_impl* boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::acquire<>()
:190
13x
100.0%
–
60.0%
boost::corosio::detail::(anonymous namespace)::self_ref_derived* boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::acquire<>()
:190
1x
100.0%
46.7%
46.0%
boost::corosio::detail::(anonymous namespace)::self_ref_impl* boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::acquire<>()
:190
1x
100.0%
–
46.0%
boost::corosio::detail::kqueue_descriptor* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::acquire<boost::corosio::detail::kqueue_descriptor_service&>(boost::corosio::detail::kqueue_descriptor_service&)
:190
103x
100.0%
–
61.0%
boost::corosio::detail::kqueue_local_datagram_socket* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::acquire<boost::corosio::detail::kqueue_local_datagram_service&>(boost::corosio::detail::kqueue_local_datagram_service&)
:190
159x
100.0%
–
61.0%
boost::corosio::detail::kqueue_local_stream_acceptor* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::acquire<boost::corosio::detail::kqueue_local_stream_acceptor_service&>(boost::corosio::detail::kqueue_local_stream_acceptor_service&)
:190
94x
100.0%
–
61.0%
boost::corosio::detail::kqueue_local_stream_socket* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::acquire<boost::corosio::detail::kqueue_local_stream_service&>(boost::corosio::detail::kqueue_local_stream_service&)
:190
209x
100.0%
–
61.0%
boost::corosio::detail::kqueue_tcp_acceptor* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::acquire<boost::corosio::detail::kqueue_tcp_acceptor_service&>(boost::corosio::detail::kqueue_tcp_acceptor_service&)
:190
2604x
100.0%
62.5%
61.0%
boost::corosio::detail::kqueue_tcp_socket* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::acquire<boost::corosio::detail::kqueue_tcp_service&>(boost::corosio::detail::kqueue_tcp_service&)
:190
28622x
100.0%
–
61.0%
boost::corosio::detail::kqueue_udp_socket* boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::acquire<boost::corosio::detail::kqueue_udp_service&>(boost::corosio::detail::kqueue_udp_service&)
:190
202x
100.0%
–
61.0%
boost::corosio::detail::posix_random_access_file* boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::acquire<boost::corosio::detail::posix_random_access_file_service&>(boost::corosio::detail::posix_random_access_file_service&)
:190
242x
68.8%
37.5%
46.0%
boost::corosio::detail::posix_resolver* boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::acquire<boost::corosio::detail::posix_resolver_service&>(boost::corosio::detail::posix_resolver_service&)
:190
139x
100.0%
62.5%
61.0%
boost::corosio::detail::posix_signal* boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::acquire<boost::corosio::detail::posix_signal_service&>(boost::corosio::detail::posix_signal_service&)
:190
3487x
100.0%
62.5%
61.0%
boost::corosio::detail::posix_stream_file* boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::acquire<boost::corosio::detail::posix_stream_file_service&>(boost::corosio::detail::posix_stream_file_service&)
:190
709x
68.8%
37.5%
61.0%
boost::corosio::detail::select_descriptor* boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::acquire<boost::corosio::detail::select_descriptor_service&>(boost::corosio::detail::select_descriptor_service&)
:190
102x
100.0%
62.5%
61.0%
boost::corosio::detail::select_local_datagram_socket* boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::acquire<boost::corosio::detail::select_local_datagram_service&>(boost::corosio::detail::select_local_datagram_service&)
:190
155x
100.0%
19.5%
61.0%
boost::corosio::detail::select_local_stream_acceptor* boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::acquire<boost::corosio::detail::select_local_stream_acceptor_service&>(boost::corosio::detail::select_local_stream_acceptor_service&)
:190
92x
100.0%
62.5%
61.0%
boost::corosio::detail::select_local_stream_socket* boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::acquire<boost::corosio::detail::select_local_stream_service&>(boost::corosio::detail::select_local_stream_service&)
:190
203x
0.0%
0.0%
61.0%
boost::corosio::detail::select_tcp_acceptor* boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::acquire<boost::corosio::detail::select_tcp_acceptor_service&>(boost::corosio::detail::select_tcp_acceptor_service&)
:190
1100x
100.0%
62.5%
61.0%
boost::corosio::detail::select_tcp_socket* boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::acquire<boost::corosio::detail::select_tcp_service&>(boost::corosio::detail::select_tcp_service&)
:190
11327x
68.8%
18.8%
61.0%
boost::corosio::detail::select_udp_socket* boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::acquire<boost::corosio::detail::select_udp_service&>(boost::corosio::detail::select_udp_service&)
:190
197x
100.0%
62.5%
61.0%
boost::corosio::detail::timer::implementation* boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::acquire<boost::corosio::detail::timer_service&>(boost::corosio::detail::timer_service&)
:190
4807x
100.0%
62.5%
61.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::recycle(boost::corosio::detail::(anonymous namespace)::pool_impl*)
:245
11x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::recycle(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)
:245
0
88.9%
16.7%
0.0%
boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::recycle(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)
:245
0
100.0%
–
0.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::recycle(boost::corosio::detail::kqueue_descriptor*)
:245
103x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::recycle(boost::corosio::detail::kqueue_local_datagram_socket*)
:245
159x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::recycle(boost::corosio::detail::kqueue_local_stream_acceptor*)
:245
94x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::recycle(boost::corosio::detail::kqueue_local_stream_socket*)
:245
209x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::recycle(boost::corosio::detail::kqueue_tcp_acceptor*)
:245
2604x
88.9%
39.3%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::recycle(boost::corosio::detail::kqueue_tcp_socket*)
:245
28630x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::recycle(boost::corosio::detail::kqueue_udp_socket*)
:245
202x
100.0%
–
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::recycle(boost::corosio::detail::posix_random_access_file*)
:245
242x
88.9%
50.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::recycle(boost::corosio::detail::posix_resolver*)
:245
139x
88.9%
50.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::recycle(boost::corosio::detail::posix_signal*)
:245
3487x
88.9%
50.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::recycle(boost::corosio::detail::posix_stream_file*)
:245
709x
72.2%
28.6%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::recycle(boost::corosio::detail::select_descriptor*)
:245
102x
88.9%
50.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::recycle(boost::corosio::detail::select_local_datagram_socket*)
:245
155x
88.9%
15.6%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::recycle(boost::corosio::detail::select_local_stream_acceptor*)
:245
92x
88.9%
50.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::recycle(boost::corosio::detail::select_local_stream_socket*)
:245
203x
0.0%
0.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::recycle(boost::corosio::detail::select_tcp_acceptor*)
:245
1100x
88.9%
50.0%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::recycle(boost::corosio::detail::select_tcp_socket*)
:245
11327x
72.2%
14.3%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::recycle(boost::corosio::detail::select_udp_socket*)
:245
197x
72.2%
28.6%
64.0%
boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::recycle(boost::corosio::detail::timer::implementation*)
:245
1102x
72.2%
28.6%
41.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)
:292
1x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)
:292
1x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda1'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda1'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)
:292
1x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)&&)
:292
1x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)&&)
:292
1x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::shutdown<boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::kqueue_descriptor_service, boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor>::shutdown()::'lambda'(boost::corosio::detail::kqueue_descriptor*)>(boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::kqueue_descriptor_service, boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor>::shutdown()::'lambda'(boost::corosio::detail::kqueue_descriptor*)&&)
:292
59x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)&&)
:292
75x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::detail::kqueue_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::detail::kqueue_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)&&)
:292
53x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)&&)
:292
112x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::detail::kqueue_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::detail::kqueue_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)&&)
:292
872x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)&&)
:292
1088x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_udp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_udp_socket*)&&)
:292
113x
100.0%
–
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::shutdown<boost::corosio::detail::posix_random_access_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_random_access_file*)>(boost::corosio::detail::posix_random_access_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_random_access_file*)&&)
:292
187x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::shutdown<boost::corosio::detail::posix_resolver_service::shutdown()::'lambda'(boost::corosio::detail::posix_resolver*)>(boost::corosio::detail::posix_resolver_service::shutdown()::'lambda'(boost::corosio::detail::posix_resolver*)&&)
:292
74x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::shutdown<boost::corosio::detail::posix_signal_service::shutdown()::'lambda'(boost::corosio::detail::posix_signal*)>(boost::corosio::detail::posix_signal_service::shutdown()::'lambda'(boost::corosio::detail::posix_signal*)&&)
:292
590x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::shutdown<boost::corosio::detail::posix_stream_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_stream_file*)>(boost::corosio::detail::posix_stream_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_stream_file*)&&)
:292
589x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::shutdown<boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::select_descriptor_service, boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor>::shutdown()::'lambda'(boost::corosio::detail::select_descriptor*)>(boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::select_descriptor_service, boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor>::shutdown()::'lambda'(boost::corosio::detail::select_descriptor*)&&)
:292
58x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_datagram_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_datagram_socket*)&&)
:292
73x
100.0%
15.6%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)&&)
:292
51x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_socket*)&&)
:292
108x
0.0%
0.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_acceptor*)&&)
:292
403x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_socket*)&&)
:292
466x
100.0%
25.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_udp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_udp_socket*)&&)
:292
111x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::shutdown<boost::corosio::detail::timer_service::shutdown()::'lambda'(boost::corosio::detail::timer::implementation*)>(boost::corosio::detail::timer_service::shutdown()::'lambda'(boost::corosio::detail::timer::implementation*)&&)
:292
874x
100.0%
50.0%
69.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::pool_impl*) const
:300
1x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::pool_impl*) const
:300
2x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda1'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda1'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::pool_impl*) const
:300
1x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)&&)::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)::operator()(boost::corosio::detail::(anonymous namespace)::self_ref_derived*) const
:300
1x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)&&)::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::self_ref_impl*) const
:300
1x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::shutdown<boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::kqueue_descriptor_service, boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor>::shutdown()::'lambda'(boost::corosio::detail::kqueue_descriptor*)>(boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::kqueue_descriptor_service, boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor>::shutdown()::'lambda'(boost::corosio::detail::kqueue_descriptor*)&&)::'lambda'(boost::corosio::detail::kqueue_descriptor*)::operator()(boost::corosio::detail::kqueue_descriptor*) const
:300
13x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)&&)::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)::operator()(boost::corosio::detail::kqueue_local_datagram_socket*) const
:300
9x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::detail::kqueue_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::detail::kqueue_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)&&)::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)::operator()(boost::corosio::detail::kqueue_local_stream_acceptor*) const
:300
2x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)&&)::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)::operator()(boost::corosio::detail::kqueue_local_stream_socket*) const
:300
11x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::detail::kqueue_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::detail::kqueue_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)&&)::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)::operator()(boost::corosio::detail::kqueue_tcp_acceptor*) const
:300
416x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)&&)::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)::operator()(boost::corosio::detail::kqueue_tcp_socket*) const
:300
944x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_udp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_udp_socket*)&&)::'lambda'(boost::corosio::detail::kqueue_udp_socket*)::operator()(boost::corosio::detail::kqueue_udp_socket*) const
:300
6x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::shutdown<boost::corosio::detail::posix_random_access_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_random_access_file*)>(boost::corosio::detail::posix_random_access_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_random_access_file*)&&)::'lambda'(boost::corosio::detail::posix_random_access_file*)::operator()(boost::corosio::detail::posix_random_access_file*) const
:300
8x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::shutdown<boost::corosio::detail::posix_resolver_service::shutdown()::'lambda'(boost::corosio::detail::posix_resolver*)>(boost::corosio::detail::posix_resolver_service::shutdown()::'lambda'(boost::corosio::detail::posix_resolver*)&&)::'lambda'(boost::corosio::detail::posix_resolver*)::operator()(boost::corosio::detail::posix_resolver*) const
:300
3x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::shutdown<boost::corosio::detail::posix_signal_service::shutdown()::'lambda'(boost::corosio::detail::posix_signal*)>(boost::corosio::detail::posix_signal_service::shutdown()::'lambda'(boost::corosio::detail::posix_signal*)&&)::'lambda'(boost::corosio::detail::posix_signal*)::operator()(boost::corosio::detail::posix_signal*) const
:300
3212x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::shutdown<boost::corosio::detail::posix_stream_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_stream_file*)>(boost::corosio::detail::posix_stream_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_stream_file*)&&)::'lambda'(boost::corosio::detail::posix_stream_file*)::operator()(boost::corosio::detail::posix_stream_file*) const
:300
4x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::shutdown<boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::select_descriptor_service, boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor>::shutdown()::'lambda'(boost::corosio::detail::select_descriptor*)>(boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::select_descriptor_service, boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor>::shutdown()::'lambda'(boost::corosio::detail::select_descriptor*)&&)::'lambda'(boost::corosio::detail::select_descriptor*)::operator()(boost::corosio::detail::select_descriptor*) const
:300
7x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_datagram_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_datagram_socket*)&&)::'lambda'(boost::corosio::detail::select_local_datagram_socket*)::operator()(boost::corosio::detail::select_local_datagram_socket*) const
:300
2x
100.0%
15.6%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)&&)::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)::operator()(boost::corosio::detail::select_local_stream_acceptor*) const
:300
1x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_socket*)&&)::'lambda'(boost::corosio::detail::select_local_stream_socket*)::operator()(boost::corosio::detail::select_local_stream_socket*) const
:300
6x
0.0%
0.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_acceptor*)&&)::'lambda'(boost::corosio::detail::select_tcp_acceptor*)::operator()(boost::corosio::detail::select_tcp_acceptor*) const
:300
411x
100.0%
59.4%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_socket*)&&)::'lambda'(boost::corosio::detail::select_tcp_socket*)::operator()(boost::corosio::detail::select_tcp_socket*) const
:300
823x
100.0%
25.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_udp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_udp_socket*)&&)::'lambda'(boost::corosio::detail::select_udp_socket*)::operator()(boost::corosio::detail::select_udp_socket*) const
:300
4x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::shutdown<boost::corosio::detail::timer_service::shutdown()::'lambda'(boost::corosio::detail::timer::implementation*)>(boost::corosio::detail::timer_service::shutdown()::'lambda'(boost::corosio::detail::timer::implementation*)&&)::'lambda'(boost::corosio::detail::timer::implementation*)::operator()(boost::corosio::detail::timer::implementation*) const
:300
3250x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::pool_impl*) const
:303
1x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::pool_impl*) const
:303
2x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::pool_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda1'(boost::corosio::detail::(anonymous namespace)::pool_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda1'(boost::corosio::detail::(anonymous namespace)::pool_impl*)&&)::'lambda0'(boost::corosio::detail::(anonymous namespace)::pool_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::pool_impl*) const
:303
1x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_derived>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)&&)::'lambda0'(boost::corosio::detail::(anonymous namespace)::self_ref_derived*)::operator()(boost::corosio::detail::(anonymous namespace)::self_ref_derived*) const
:303
1x
100.0%
80.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::(anonymous namespace)::self_ref_impl>::shutdown<boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)>(boost::corosio::detail::object_pool_test::run()::'lambda'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)&&)::'lambda0'(boost::corosio::detail::(anonymous namespace)::self_ref_impl*)::operator()(boost::corosio::detail::(anonymous namespace)::self_ref_impl*) const
:303
1x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_descriptor>::shutdown<boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::kqueue_descriptor_service, boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor>::shutdown()::'lambda'(boost::corosio::detail::kqueue_descriptor*)>(boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::kqueue_descriptor_service, boost::corosio::detail::kqueue_traits, boost::corosio::detail::kqueue_descriptor>::shutdown()::'lambda'(boost::corosio::detail::kqueue_descriptor*)&&)::'lambda0'(boost::corosio::detail::kqueue_descriptor*)::operator()(boost::corosio::detail::kqueue_descriptor*) const
:303
13x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_datagram_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_datagram_socket*)&&)::'lambda0'(boost::corosio::detail::kqueue_local_datagram_socket*)::operator()(boost::corosio::detail::kqueue_local_datagram_socket*) const
:303
9x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::detail::kqueue_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_acceptor, boost::corosio::detail::kqueue_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_acceptor*)&&)::'lambda0'(boost::corosio::detail::kqueue_local_stream_acceptor*)::operator()(boost::corosio::detail::kqueue_local_stream_acceptor*) const
:303
2x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_local_stream_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_local_stream_socket*)&&)::'lambda0'(boost::corosio::detail::kqueue_local_stream_socket*)::operator()(boost::corosio::detail::kqueue_local_stream_socket*) const
:303
11x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::detail::kqueue_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::kqueue_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_acceptor, boost::corosio::detail::kqueue_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_acceptor*)&&)::'lambda0'(boost::corosio::detail::kqueue_tcp_acceptor*)::operator()(boost::corosio::detail::kqueue_tcp_acceptor*) const
:303
416x
100.0%
50.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_tcp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_tcp_socket*)&&)::'lambda0'(boost::corosio::detail::kqueue_tcp_socket*)::operator()(boost::corosio::detail::kqueue_tcp_socket*) const
:303
944x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::kqueue_udp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_udp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::kqueue_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::kqueue_scheduler, boost::corosio::detail::kqueue_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::kqueue_udp_socket*)&&)::'lambda0'(boost::corosio::detail::kqueue_udp_socket*)::operator()(boost::corosio::detail::kqueue_udp_socket*) const
:303
6x
100.0%
–
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_random_access_file>::shutdown<boost::corosio::detail::posix_random_access_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_random_access_file*)>(boost::corosio::detail::posix_random_access_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_random_access_file*)&&)::'lambda0'(boost::corosio::detail::posix_random_access_file*)::operator()(boost::corosio::detail::posix_random_access_file*) const
:303
8x
100.0%
75.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_resolver>::shutdown<boost::corosio::detail::posix_resolver_service::shutdown()::'lambda'(boost::corosio::detail::posix_resolver*)>(boost::corosio::detail::posix_resolver_service::shutdown()::'lambda'(boost::corosio::detail::posix_resolver*)&&)::'lambda0'(boost::corosio::detail::posix_resolver*)::operator()(boost::corosio::detail::posix_resolver*) const
:303
3x
100.0%
75.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_signal>::shutdown<boost::corosio::detail::posix_signal_service::shutdown()::'lambda'(boost::corosio::detail::posix_signal*)>(boost::corosio::detail::posix_signal_service::shutdown()::'lambda'(boost::corosio::detail::posix_signal*)&&)::'lambda0'(boost::corosio::detail::posix_signal*)::operator()(boost::corosio::detail::posix_signal*) const
:303
3212x
100.0%
75.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::posix_stream_file>::shutdown<boost::corosio::detail::posix_stream_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_stream_file*)>(boost::corosio::detail::posix_stream_file_service::shutdown()::'lambda'(boost::corosio::detail::posix_stream_file*)&&)::'lambda0'(boost::corosio::detail::posix_stream_file*)::operator()(boost::corosio::detail::posix_stream_file*) const
:303
4x
40.0%
25.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_descriptor>::shutdown<boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::select_descriptor_service, boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor>::shutdown()::'lambda'(boost::corosio::detail::select_descriptor*)>(boost::corosio::detail::reactor_descriptor_service<boost::corosio::detail::select_descriptor_service, boost::corosio::detail::select_traits, boost::corosio::detail::select_descriptor>::shutdown()::'lambda'(boost::corosio::detail::select_descriptor*)&&)::'lambda0'(boost::corosio::detail::select_descriptor*)::operator()(boost::corosio::detail::select_descriptor*) const
:303
7x
100.0%
75.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_datagram_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_datagram_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_datagram_service, boost::corosio::detail::local_datagram_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_datagram_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_datagram_socket*)&&)::'lambda0'(boost::corosio::detail::select_local_datagram_socket*)::operator()(boost::corosio::detail::select_local_datagram_socket*) const
:303
2x
100.0%
23.4%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_local_stream_acceptor_service, boost::corosio::detail::local_stream_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_acceptor, boost::corosio::detail::select_local_stream_service>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_acceptor*)&&)::'lambda0'(boost::corosio::detail::select_local_stream_acceptor*)::operator()(boost::corosio::detail::select_local_stream_acceptor*) const
:303
1x
100.0%
75.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_local_stream_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_local_stream_service, boost::corosio::detail::local_stream_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_local_stream_socket>::shutdown()::'lambda'(boost::corosio::detail::select_local_stream_socket*)&&)::'lambda0'(boost::corosio::detail::select_local_stream_socket*)::operator()(boost::corosio::detail::select_local_stream_socket*) const
:303
6x
0.0%
0.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_acceptor>::shutdown<boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_acceptor*)>(boost::corosio::detail::reactor_acceptor_service<boost::corosio::detail::select_tcp_acceptor_service, boost::corosio::detail::tcp_acceptor_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_acceptor, boost::corosio::detail::select_tcp_service>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_acceptor*)&&)::'lambda0'(boost::corosio::detail::select_tcp_acceptor*)::operator()(boost::corosio::detail::select_tcp_acceptor*) const
:303
411x
100.0%
75.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_tcp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_tcp_service, boost::corosio::detail::tcp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_tcp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_tcp_socket*)&&)::'lambda0'(boost::corosio::detail::select_tcp_socket*)::operator()(boost::corosio::detail::select_tcp_socket*) const
:303
823x
40.0%
12.5%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::select_udp_socket>::shutdown<boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_udp_socket*)>(boost::corosio::detail::reactor_socket_service<boost::corosio::detail::select_udp_service, boost::corosio::detail::udp_service, boost::corosio::detail::select_scheduler, boost::corosio::detail::select_udp_socket>::shutdown()::'lambda'(boost::corosio::detail::select_udp_socket*)&&)::'lambda0'(boost::corosio::detail::select_udp_socket*)::operator()(boost::corosio::detail::select_udp_socket*) const
:303
4x
40.0%
25.0%
100.0%
void boost::corosio::detail::object_pool<boost::corosio::detail::timer::implementation>::shutdown<boost::corosio::detail::timer_service::shutdown()::'lambda'(boost::corosio::detail::timer::implementation*)>(boost::corosio::detail::timer_service::shutdown()::'lambda'(boost::corosio::detail::timer::implementation*)&&)::'lambda0'(boost::corosio::detail::timer::implementation*)::operator()(boost::corosio::detail::timer::implementation*) const
:303
3250x
100.0%
75.0%
100.0%
| Line | Branch | TLA | Hits | Source Code |
|---|---|---|---|---|
| 1 | // | |||
| 2 | // Copyright (c) 2025 Steve Gerbino ([email protected]) | |||
| 3 | // | |||
| 4 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |||
| 5 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |||
| 6 | // | |||
| 7 | // Official repository: https://github.com/cppalliance/corosio | |||
| 8 | // | |||
| 9 | ||||
| 10 | #ifndef BOOST_COROSIO_DETAIL_OBJECT_POOL_HPP | |||
| 11 | #define BOOST_COROSIO_DETAIL_OBJECT_POOL_HPP | |||
| 12 | ||||
| 13 | #include <boost/corosio/detail/config.hpp> | |||
| 14 | #include <boost/corosio/detail/intrusive.hpp> | |||
| 15 | #include <boost/corosio/detail/object_ref.hpp> | |||
| 16 | #include <atomic> | |||
| 17 | #include <cstddef> | |||
| 18 | #include <initializer_list> | |||
| 19 | #include <limits> | |||
| 20 | #include <mutex> | |||
| 21 | #include <utility> | |||
| 22 | #include <vector> | |||
| 23 | ||||
| 24 | namespace boost::corosio::detail { | |||
| 25 | ||||
| 26 | /** Per-service recycling pool for I/O implementations. | |||
| 27 | ||||
| 28 | Replaces per-impl `shared_ptr` ownership: a service news an impl | |||
| 29 | once, then `recycle()` (the impl's `retire()` action) parks | |||
| 30 | it on the free list and `acquire()` hands it back out, so steady-state | |||
| 31 | construct/destroy allocates nothing. Unbounded; memory is released | |||
| 32 | only on pool destruction. Debug poisoning, where an impl does it, | |||
| 33 | happens in that impl's `retire()`, not here (the pool cannot know | |||
| 34 | which bytes are resettable). | |||
| 35 | ||||
| 36 | A service tears down its impls by calling `shutdown()`, which | |||
| 37 | enters shutting-down mode and visits every live impl in one | |||
| 38 | critical section; subsequent zero-ref crossings delete instead of | |||
| 39 | recycling. | |||
| 40 | ||||
| 41 | `adopt()` and `remove()` are protected ownership-transfer | |||
| 42 | primitives for sanctioned extensions — a derived pool exposing | |||
| 43 | them to a caller that tracks some of its live impls through its | |||
| 44 | own structure instead of this pool's `live_` list (the timer | |||
| 45 | service, via its expiry heap) — rather than part of the public | |||
| 46 | surface every ordinary service uses. | |||
| 47 | ||||
| 48 | @par Thread Safety | |||
| 49 | Distinct objects: Safe. Shared objects: Safe; all operations lock | |||
| 50 | an internal mutex. | |||
| 51 | */ | |||
| 52 | template<class Impl> | |||
| 53 | class object_pool | |||
| 54 | { | |||
| 55 | std::mutex mutex_; | |||
| 56 | intrusive_list<Impl> live_; | |||
| 57 | intrusive_list<Impl> free_; | |||
| 58 | 5970x | bool shutting_down_ = false; | ||
| 59 | ||||
| 60 | /** Marks `refs_` on an impl currently parked in `free_`. | |||
| 61 | ||||
| 62 | `intrusive_list::remove()` cannot distinguish "linked in | |||
| 63 | `free_`" from "linked in `live_`" by inspecting the node | |||
| 64 | alone — both lists share one `next_`/`prev_` pair per impl — | |||
| 65 | so `recycle()` cannot safely call `live_.remove()` on an impl | |||
| 66 | it does not already know is live. Stamping this sentinel into | |||
| 67 | `refs_` the moment an impl joins `free_`, and checking it | |||
| 68 | before touching either list, is what lets `recycle()` and | |||
| 69 | `remove()` tell the two cases apart in every build mode, not | |||
| 70 | just under asserts. `acquire()` always overwrites it with 1 | |||
| 71 | before the impl is usable again. | |||
| 72 | */ | |||
| 73 | static constexpr std::size_t pooled_sentinel = pooled_refs; | |||
| 74 | ||||
| 75 | /// Check whether @p impl is parked in `free_` (`refs_` reads the | |||
| 76 | /// sentinel). Callers must check this before any list operation — | |||
| 77 | /// see the class-level comment on `pooled_sentinel`. | |||
| 78 | 94483x | static bool is_pooled(Impl const* impl) noexcept | ||
| 79 | { | |||
| 80 | 94483x | return impl->refs_.load(std::memory_order_relaxed) == | ||
| 81 | pooled_sentinel; | |||
| 82 | } | |||
| 83 | ||||
| 84 | protected: | |||
| 85 | /** Track a fresh or reset impl as live. | |||
| 86 | ||||
| 87 | @pre @p impl is not parked in `free_` (`refs_` must not read | |||
| 88 | `pooled_sentinel`). The same list-corruption hazard | |||
| 89 | `recycle()`'s class-level comment documents applies here: a | |||
| 90 | free-listed impl pushed onto `live_` directly, bypassing | |||
| 91 | `acquire()`, would end up linked in both lists through one shared | |||
| 92 | `next_`/`prev_` pair. | |||
| 93 | ||||
| 94 | @pre The caller is not racing `shutdown()`. Every caller adopts | |||
| 95 | while constructing an object (`acquire()`, or a derived pool's | |||
| 96 | cache handing a parked impl back out), and construction is | |||
| 97 | expected to stop before the service's own `shutdown()` runs; | |||
| 98 | this is checked only in debug builds because the failure mode | |||
| 99 | is a silently orphaned impl (no close callback), not memory | |||
| 100 | corruption. | |||
| 101 | */ | |||
| 102 | 29406x | void adopt(Impl* impl) | ||
| 103 | { | |||
| 104 | 29406x | std::lock_guard lock(mutex_); | ||
| 105 |
5/32✗ Branch 0 not taken.
✓ Branch 1 taken 23999 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1503 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 2305 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1445 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 154 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
29406x | if (is_pooled(impl)) | |
| 106 | { | |||
| 107 |
0/32✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
✗ | BOOST_COROSIO_ASSERT(false); | |
| 108 | return; | |||
| 109 | } | |||
| 110 |
5/64✗ Branch 0 not taken.
✓ Branch 1 taken 23999 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1503 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2305 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1445 times.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✓ Branch 45 taken 154 times.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
|
29406x | BOOST_COROSIO_ASSERT(!shutting_down_); | |
| 111 | 29406x | live_.push_back(impl); | ||
| 112 | 29406x | } | ||
| 113 | ||||
| 114 | /** Unlink a live impl without recycling (ownership transfer). | |||
| 115 | ||||
| 116 | Used by a caller that is taking an impl out of this pool's | |||
| 117 | bookkeeping entirely (a thread-local cache slot, a direct | |||
| 118 | delete during shutdown) rather than parking it on `free_`. | |||
| 119 | ||||
| 120 | @pre @p impl is not parked in `free_` (`refs_` must not read | |||
| 121 | `pooled_sentinel`). The same list-corruption hazard | |||
| 122 | `recycle()`'s class-level comment documents applies here: a | |||
| 123 | free-listed impl would be spliced out using `live_`'s | |||
| 124 | boundary pointers instead of `free_`'s. | |||
| 125 | ||||
| 126 | @return True if @p impl was linked in `live_` and has now | |||
| 127 | been removed; false if it was already detached. | |||
| 128 | */ | |||
| 129 | 14210x | bool remove(Impl* impl) noexcept | ||
| 130 | { | |||
| 131 |
1/2✓ Branch 0 taken 14210 times.
✗ Branch 1 not taken.
|
14210x | std::lock_guard lock(mutex_); | |
| 132 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 14210 times.
|
14210x | if (is_pooled(impl)) | |
| 133 | { | |||
| 134 |
0/2✗ Branch 0 not taken.
✗ Branch 1 not taken.
|
✗ | BOOST_COROSIO_ASSERT(false); | |
| 135 | return false; | |||
| 136 | } | |||
| 137 | 14210x | return live_.remove(impl); | ||
| 138 | 14210x | } | ||
| 139 | ||||
| 140 | public: | |||
| 141 | /** Destroy the pool, freeing every impl still parked or live. | |||
| 142 | ||||
| 143 | A live impl is deleted whatever its count. Keepalives it holds | |||
| 144 | on itself (an embedded op's `object_ref`) are released by its | |||
| 145 | own destructor; the count is pinned first so none of those | |||
| 146 | releases reaches zero and calls `retire()` on an object that | |||
| 147 | is already being destroyed. | |||
| 148 | ||||
| 149 | @pre `shutdown()` has already run, or no impls are live. | |||
| 150 | */ | |||
| 151 | 11061x | ~object_pool() | ||
| 152 | 5090x | { | ||
| 153 |
11/96✓ Branch 0 taken 3102 times.
✓ Branch 1 taken 10 times.
✓ Branch 2 taken 3112 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1064 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1064 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 679 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 679 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 1012 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 1012 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✓ Branch 66 taken 104 times.
✗ Branch 67 not taken.
✓ Branch 68 taken 104 times.
✗ Branch 69 not taken.
✗ Branch 70 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 73 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✗ Branch 76 not taken.
✗ Branch 77 not taken.
✗ Branch 78 not taken.
✗ Branch 79 not taken.
✗ Branch 80 not taken.
✗ Branch 81 not taken.
✗ Branch 82 not taken.
✗ Branch 83 not taken.
✗ Branch 84 not taken.
✗ Branch 85 not taken.
✗ Branch 86 not taken.
✗ Branch 87 not taken.
✗ Branch 88 not taken.
✗ Branch 89 not taken.
✗ Branch 90 not taken.
✗ Branch 91 not taken.
✗ Branch 92 not taken.
✗ Branch 93 not taken.
✗ Branch 94 not taken.
✗ Branch 95 not taken.
|
5971x | BOOST_COROSIO_ASSERT(shutting_down_ || live_.empty()); | |
| 154 |
10/32✓ Branch 0 taken 6224 times.
✓ Branch 1 taken 3112 times.
✓ Branch 2 taken 2128 times.
✓ Branch 3 taken 1064 times.
✓ Branch 4 taken 1358 times.
✓ Branch 5 taken 679 times.
✓ Branch 6 taken 2024 times.
✓ Branch 7 taken 1012 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 208 times.
✓ Branch 23 taken 104 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
17913x | for (auto* list : {&free_, &live_}) | |
| 155 | { | |||
| 156 |
10/32✓ Branch 0 taken 5586 times.
✓ Branch 1 taken 6224 times.
✓ Branch 2 taken 1076 times.
✓ Branch 3 taken 2128 times.
✓ Branch 4 taken 1470 times.
✓ Branch 5 taken 1358 times.
✓ Branch 6 taken 1029 times.
✓ Branch 7 taken 2024 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 150 times.
✓ Branch 23 taken 208 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
21253x | while (auto* impl = list->pop_front()) | |
| 157 | { | |||
| 158 | 9311x | impl->refs_.store(pooled_sentinel, std::memory_order_relaxed); | ||
| 159 |
5/32✗ Branch 0 not taken.
✓ Branch 1 taken 5586 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1076 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1470 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1029 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 150 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
9311x | delete impl; | |
| 160 | } | |||
| 161 | } | |||
| 162 | 11061x | } | ||
| 163 | ||||
| 164 | 17029x | object_pool() = default; | ||
| 165 | object_pool(object_pool const&) = delete; | |||
| 166 | object_pool& operator=(object_pool const&) = delete; | |||
| 167 | ||||
| 168 | /** Pop-or-create an impl with the acquisition protocol applied. | |||
| 169 | ||||
| 170 | Recycled impls are `reuse()`-reset and their reference count | |||
| 171 | restored from the pooled sentinel; fresh impls are constructed | |||
| 172 | in place from `args` on the cold path. Either way the impl is | |||
| 173 | adopted as live. This is the sequence every service's | |||
| 174 | `construct()` used to hand-roll. Making the pool itself the | |||
| 175 | only place that calls `new Impl` gives the whole library one | |||
| 176 | audit point for allocation policy. | |||
| 177 | ||||
| 178 | @pre Not called concurrently with, or after, `shutdown()` on | |||
| 179 | this pool. Every caller reaches this through a service's | |||
| 180 | `construct()`, and service shutdown order guarantees no | |||
| 181 | `construct()` outlives that service's own `shutdown()`; the | |||
| 182 | window is only asserted in debug builds (see `adopt()`) | |||
| 183 | because the failure mode is an orphaned impl, not corruption. | |||
| 184 | ||||
| 185 | @param args Constructor arguments for `Impl` (cold path only). | |||
| 186 | ||||
| 187 | @return The acquired impl, `refs_ == 1`, tracked live. | |||
| 188 | */ | |||
| 189 | template<class... Args> | |||
| 190 | 54568x | Impl* acquire(Args&&... args) | ||
| 191 | { | |||
| 192 | Impl* impl; | |||
| 193 | { | |||
| 194 | 54568x | std::lock_guard lock(mutex_); | ||
| 195 |
5/64✓ Branch 0 taken 37827 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 2966 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 11718 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 1870 times.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 187 times.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
|
54568x | BOOST_COROSIO_ASSERT(!shutting_down_); | |
| 196 | 54568x | impl = free_.pop_front(); | ||
| 197 |
10/32✓ Branch 0 taken 13471 times.
✓ Branch 1 taken 24356 times.
✓ Branch 2 taken 1503 times.
✓ Branch 3 taken 1463 times.
✓ Branch 4 taken 2305 times.
✓ Branch 5 taken 9413 times.
✓ Branch 6 taken 1445 times.
✓ Branch 7 taken 425 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 154 times.
✓ Branch 23 taken 33 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
54568x | if (impl) | |
| 198 | { | |||
| 199 | 35690x | impl->refs_.store(1, std::memory_order_relaxed); | ||
| 200 | 35690x | live_.push_back(impl); | ||
| 201 | 35690x | } | ||
| 202 | 54568x | } | ||
| 203 | // reuse() runs unlocked: acquire()'s precondition excludes a | |||
| 204 | // concurrent shutdown() visiting the impl mid-reset. | |||
| 205 |
10/32✓ Branch 0 taken 24349 times.
✓ Branch 1 taken 13478 times.
✓ Branch 2 taken 1463 times.
✓ Branch 3 taken 1503 times.
✓ Branch 4 taken 9413 times.
✓ Branch 5 taken 2305 times.
✓ Branch 6 taken 425 times.
✓ Branch 7 taken 1445 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 33 times.
✓ Branch 23 taken 154 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
54568x | if (impl) | |
| 206 | { | |||
| 207 | 35683x | impl->reuse(); | ||
| 208 | 35683x | return impl; | ||
| 209 | } | |||
| 210 |
3/6✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
|
18885x | impl = new Impl(std::forward<Args>(args)...); | |
| 211 | 18885x | adopt(impl); | ||
| 212 | 18885x | return impl; | ||
| 213 | 54568x | } | ||
| 214 | ||||
| 215 | /** Move a zero-ref impl from live to the free list. | |||
| 216 | ||||
| 217 | Called from `retire()`, possibly on a scheduler thread. | |||
| 218 | Deletes instead when shutting down. The impl must not be | |||
| 219 | touched after this returns. | |||
| 220 | ||||
| 221 | Two accounting bugs are possible here, neither from this | |||
| 222 | pool's own bookkeeping but from a caller's refcounting (e.g. | |||
| 223 | a duplicate `retire()` for one zero-crossing). Both are | |||
| 224 | made safe in every build mode, not just under asserts, because | |||
| 225 | neither can be told apart from the correct case by a | |||
| 226 | `BOOST_COROSIO_ASSERT` alone that still runs the list | |||
| 227 | operations around it: | |||
| 228 | ||||
| 229 | - `impl` is already parked in `free_` — the list-corruption | |||
| 230 | hazard the class-level `pooled_sentinel` comment documents. | |||
| 231 | The `is_pooled()` check runs first and returns before either | |||
| 232 | list is touched. | |||
| 233 | - `impl` is fully detached from `live_` and is not the | |||
| 234 | sentinel (not shutting down): `live_.remove()` correctly | |||
| 235 | returns false, but then the impl is reachable through | |||
| 236 | neither `acquire()` nor `shutdown()`'s visit while still | |||
| 237 | allocated — stranded. Deleted instead of left to leak. | |||
| 238 | ||||
| 239 | While shutting down, an impl that is no longer in `live_` is | |||
| 240 | left alone rather than deleted: something else already took | |||
| 241 | it out of the pool's bookkeeping (a derived pool's owner, or a | |||
| 242 | duplicate retirement of an impl already deleted), and deleting | |||
| 243 | it again here could be a double free. | |||
| 244 | */ | |||
| 245 | 50867x | void recycle(Impl* impl) | ||
| 246 | { | |||
| 247 | 50867x | bool do_delete = false; | ||
| 248 | { | |||
| 249 | 50867x | std::lock_guard lock(mutex_); | ||
| 250 |
5/32✗ Branch 0 not taken.
✓ Branch 1 taken 34128 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2965 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 11717 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1870 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 187 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
50867x | if (is_pooled(impl)) | |
| 251 | { | |||
| 252 |
0/32✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
✗ | BOOST_COROSIO_ASSERT(false); | |
| 253 | return; | |||
| 254 | } | |||
| 255 | ||||
| 256 | 50867x | bool const was_live = live_.remove(impl); | ||
| 257 |
10/32✓ Branch 0 taken 4204 times.
✓ Branch 1 taken 29924 times.
✓ Branch 2 taken 427 times.
✓ Branch 3 taken 2538 times.
✓ Branch 4 taken 835 times.
✓ Branch 5 taken 10882 times.
✓ Branch 6 taken 416 times.
✓ Branch 7 taken 1454 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
✓ Branch 23 taken 183 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
50867x | if (shutting_down_) | |
| 258 | { | |||
| 259 | 5886x | do_delete = was_live; | ||
| 260 | 5886x | } | ||
| 261 |
5/32✗ Branch 0 not taken.
✓ Branch 1 taken 29924 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2538 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 10882 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1454 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 183 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
44981x | else if (was_live) | |
| 262 | { | |||
| 263 | 44981x | impl->refs_.store( | ||
| 264 | pooled_sentinel, std::memory_order_relaxed); | |||
| 265 | // LIFO: the most recently retired impl is the | |||
| 266 | // cache-warmest candidate for the next acquire(). | |||
| 267 | 44981x | free_.push_front(impl); | ||
| 268 | 44981x | } | ||
| 269 | else | |||
| 270 | { | |||
| 271 |
0/32✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
✗ | BOOST_COROSIO_ASSERT(false); | |
| 272 | do_delete = true; | |||
| 273 | } | |||
| 274 | 50867x | } | ||
| 275 |
10/32✓ Branch 0 taken 29924 times.
✓ Branch 1 taken 4204 times.
✓ Branch 2 taken 2538 times.
✓ Branch 3 taken 427 times.
✓ Branch 4 taken 10882 times.
✓ Branch 5 taken 835 times.
✓ Branch 6 taken 1454 times.
✓ Branch 7 taken 416 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 183 times.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
50867x | if (do_delete) | |
| 276 |
5/32✗ Branch 0 not taken.
✓ Branch 1 taken 4204 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 427 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 835 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 416 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
5886x | delete impl; | |
| 277 | 50867x | } | ||
| 278 | ||||
| 279 | /** Enter shutdown mode and visit every live impl. | |||
| 280 | ||||
| 281 | Sets shutting-down (subsequent zero-crossings delete instead | |||
| 282 | of recycling) and runs `f` on each live impl, all under one | |||
| 283 | critical section. Each visited impl is pinned with a reference | |||
| 284 | for the call and released after the critical section ends, so | |||
| 285 | `f` may hold on to it; an impl whose count already reached zero | |||
| 286 | is retiring and is skipped rather than revived. | |||
| 287 | ||||
| 288 | @note The callback runs under the pool's non-recursive mutex; | |||
| 289 | it must not call recycle(), adopt(), or remove() on this pool. | |||
| 290 | */ | |||
| 291 | template<class F> | |||
| 292 | 5961x | void shutdown(F&& f) | ||
| 293 | { | |||
| 294 | 5961x | std::vector<Impl*> pinned; | ||
| 295 | { | |||
| 296 |
6/32✓ Branch 0 taken 3100 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1064 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 679 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1013 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 104 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
5961x | std::lock_guard lock(mutex_); | |
| 297 | 5961x | shutting_down_ = true; | ||
| 298 | // Sized before any pin, so a failure here leaves none held. | |||
| 299 | 5961x | std::size_t n = 0; | ||
| 300 |
10/40✓ Branch 0 taken 3099 times.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
✓ Branch 2 taken 1063 times.
✗ Branch 3 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
✓ Branch 4 taken 678 times.
✗ Branch 5 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 time.
✓ Branch 6 taken 1012 times.
✗ Branch 7 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 104 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
15099x | live_.for_each([&](Impl*) { ++n; }); | |
| 301 |
6/32✓ Branch 0 taken 3099 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1064 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 679 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1013 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 104 times.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
5960x | pinned.reserve(n); | |
| 302 |
14/64✓ Branch 0 taken 3100 times.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 3100 times.
✓ Branch 3 taken 1 time.
✓ Branch 4 taken 1064 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1064 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 679 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 679 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 1013 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 1013 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 18 taken 1 time.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 33 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 36 not taken.
✗ Branch 37 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 43 not taken.
✓ Branch 44 taken 104 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 104 times.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 56 not taken.
✗ Branch 57 not taken.
✗ Branch 58 not taken.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
|
11920x | live_.for_each( | |
| 303 | 15098x | [&](Impl* impl) | ||
| 304 | { | |||
| 305 |
7/32✗ Branch 0 not taken.
✓ Branch 1 taken 7451 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 428 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 836 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 417 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
9138x | if (try_acquire(impl)) | |
| 306 | { | |||
| 307 | 9137x | pinned.push_back(impl); | ||
| 308 | 9137x | f(impl); | ||
| 309 | 9137x | } | ||
| 310 | 9138x | }); | ||
| 311 | 5963x | } | ||
| 312 |
12/32✓ Branch 0 taken 7451 times.
✓ Branch 1 taken 3100 times.
✓ Branch 2 taken 428 times.
✓ Branch 3 taken 1064 times.
✓ Branch 4 taken 836 times.
✓ Branch 5 taken 679 times.
✓ Branch 6 taken 417 times.
✓ Branch 7 taken 1013 times.
✓ Branch 8 taken 1 time.
✓ Branch 9 taken 1 time.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
✓ Branch 23 taken 104 times.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
15098x | for (auto* impl : pinned) | |
| 313 | 9137x | release(impl); | ||
| 314 | 5963x | } | ||
| 315 | }; | |||
| 316 | ||||
| 317 | } // namespace boost::corosio::detail | |||
| 318 | ||||
| 319 | #endif | |||
| 320 |