Commit c261ba2c by Marc Glisse Committed by Marc Glisse

Tweak vector::_M_realloc_insert for code size

2017-11-17  Marc Glisse  <marc.glisse@inria.fr>

	* include/bits/vector.tcc (vector::_M_realloc_insert): Cache old
	values before the allocation.

From-SVN: r254849
parent b1e35f49
2017-11-17 Marc Glisse <marc.glisse@inria.fr>
* include/bits/vector.tcc (vector::_M_realloc_insert): Cache old
values before the allocation.
2017-11-16 Jonathan Wakely <jwakely@redhat.com> 2017-11-16 Jonathan Wakely <jwakely@redhat.com>
* include/std/future (shared_future): Add noexcept to copy constructor * include/std/future (shared_future): Add noexcept to copy constructor
......
...@@ -421,6 +421,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -421,6 +421,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
{ {
const size_type __len = const size_type __len =
_M_check_len(size_type(1), "vector::_M_realloc_insert"); _M_check_len(size_type(1), "vector::_M_realloc_insert");
pointer __old_start = this->_M_impl._M_start;
pointer __old_finish = this->_M_impl._M_finish;
const size_type __elems_before = __position - begin(); const size_type __elems_before = __position - begin();
pointer __new_start(this->_M_allocate(__len)); pointer __new_start(this->_M_allocate(__len));
pointer __new_finish(__new_start); pointer __new_finish(__new_start);
...@@ -442,14 +444,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -442,14 +444,14 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
__new_finish __new_finish
= std::__uninitialized_move_if_noexcept_a = std::__uninitialized_move_if_noexcept_a
(this->_M_impl._M_start, __position.base(), (__old_start, __position.base(),
__new_start, _M_get_Tp_allocator()); __new_start, _M_get_Tp_allocator());
++__new_finish; ++__new_finish;
__new_finish __new_finish
= std::__uninitialized_move_if_noexcept_a = std::__uninitialized_move_if_noexcept_a
(__position.base(), this->_M_impl._M_finish, (__position.base(), __old_finish,
__new_finish, _M_get_Tp_allocator()); __new_finish, _M_get_Tp_allocator());
} }
__catch(...) __catch(...)
...@@ -463,10 +465,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER ...@@ -463,10 +465,9 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
__throw_exception_again; __throw_exception_again;
} }
_GLIBCXX_ASAN_ANNOTATE_REINIT; _GLIBCXX_ASAN_ANNOTATE_REINIT;
std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish, std::_Destroy(__old_start, __old_finish, _M_get_Tp_allocator());
_M_get_Tp_allocator()); _M_deallocate(__old_start,
_M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage - __old_start);
this->_M_impl._M_end_of_storage - this->_M_impl._M_start);
this->_M_impl._M_start = __new_start; this->_M_impl._M_start = __new_start;
this->_M_impl._M_finish = __new_finish; this->_M_impl._M_finish = __new_finish;
this->_M_impl._M_end_of_storage = __new_start + __len; this->_M_impl._M_end_of_storage = __new_start + __len;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment