[Boost-bugs] [Boost C++ Libraries] #8624: Large objects passed by value

Subject: [Boost-bugs] [Boost C++ Libraries] #8624: Large objects passed by value
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2013-05-28 14:15:57


#8624: Large objects passed by value
---------------------------------------------+------------------------------
 Reporter: Richard <legalize@…> | Owner: chris_kohlhoff
     Type: Bugs | Status: new
Milestone: To Be Determined | Component: asio
  Version: Boost 1.52.0 | Severity: Optimization
 Keywords: |
---------------------------------------------+------------------------------
 In asio/detail/reactive_socket_service_base.hpp:

 {{{
 198 template <typename ConstBufferSequence, typename Handler>
 199 void async_send(base_implementation_type& impl,
 200 const ConstBufferSequence& buffers,

 CID 10918 (#1-5 of 5): Big parameter passed by value (PASS_BY_VALUE)
 pass_by_value: Passing parameter handler of type
     boost::asio::detail::write_op<
         boost::asio::basic_stream_socket<
             boost::asio::ip::tcp,
             boost::asio::stream_socket_service<boost::asio::ip::tcp>
>,
         boost::asio::mutable_buffers_1,
         boost::asio::detail::transfer_all_t,
         boost::asio::ssl::detail::io_op<
             boost::asio::basic_stream_socket<
                 boost::asio::ip::tcp,
                 boost::asio::stream_socket_service<boost::asio::ip::tcp>
>,
             boost::asio::ssl::detail::write_op<
                 boost::asio::detail::consuming_buffers<
                     boost::asio::const_buffer,
                     std::vector<boost::asio::const_buffer>
>
>,
         boost::asio::detail::write_op<
             boost::asio::ssl::stream<
                 boost::asio::basic_stream_socket<
                     boost::asio::ip::tcp,
 boost::asio::stream_socket_service<boost::asio::ip::tcp>
>
>,
             std::vector<boost::asio::const_buffer>,
             boost::asio::detail::transfer_all_t,
             boost::function2<void, boost::system::error_code const &,
 unsigned long>
>
>
> (size 256 bytes) by value.
 201 socket_base::message_flags flags, Handler handler)
 202 {
 }}}

 Same for async_receive.

 In asio/handler_invoke_hook.hpp:

 {{{
 61 template <typename Function>

 CID 10407 (#1-12 of 12): Big parameter passed by value (PASS_BY_VALUE)
 pass_by_value: Passing parameter function of type
     boost::asio::detail::binder2<
         boost::asio::detail::write_op<
             boost::asio::basic_stream_socket<
                 boost::asio::ip::tcp,
                 boost::asio::stream_socket_service<boost::asio::ip::tcp>
>,
             std::vector<boost::asio::const_buffer>,
             boost::asio::detail::transfer_all_t,
             boost::function2<void, boost::system::error_code const &,
 unsigned long>
>,
         boost::system::error_code, unsigned long
> (size 136 bytes) by value.

 62 inline void asio_handler_invoke(Function function, ...)
 }}}


 In asio/impl/write.hpp:

 {{{
 548 template <typename AsyncWriteStream, typename ConstBufferSequence,
 549 typename CompletionCondition, typename WriteHandler>
 550 inline write_op<AsyncWriteStream, ConstBufferSequence,
 551 CompletionCondition, WriteHandler>
 552 make_write_op(AsyncWriteStream& s, const ConstBufferSequence&
 buffers,

 CID 10920 (#1-3 of 3): Big parameter passed by value (PASS_BY_VALUE)
 pass_by_value: Passing parameter handler of type
     boost::asio::ssl::detail::io_op<
         boost::asio::basic_stream_socket<
             boost::asio::ip::tcp,
             boost::asio::stream_socket_service<boost::asio::ip::tcp>
>,
         boost::asio::ssl::detail::write_op<
             boost::asio::detail::consuming_buffers<
                 boost::asio::const_buffer,
                 std::vector<boost::asio::const_buffer>
>
>,
         boost::asio::detail::write_op<
             boost::asio::ssl::stream<
                 boost::asio::basic_stream_socket<
                     boost::asio::ip::tcp,
 boost::asio::stream_socket_service<boost::asio::ip::tcp>
>
>,
             std::vector<boost::asio::const_buffer>,
             boost::asio::detail::transfer_all_t,
             boost::function2<void, boost::system::error_code const &,
 unsigned long>
>
> (size 224 bytes) by value.

 553 CompletionCondition completion_condition, WriteHandler handler)
 554 {
 555 return write_op<AsyncWriteStream, ConstBufferSequence,
 CompletionCondition,
 556 WriteHandler>(s, buffers, completion_condition, handler);
 557 }
 }}}

-- 
Ticket URL: <https://svn.boost.org/trac/boost/ticket/8624>
Boost C++ Libraries <http://www.boost.org/>
Boost provides free peer-reviewed portable C++ source libraries.

This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:13 UTC