mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 10:30:34 +08:00
boost_shared_ptr.h (_Sp_counted_base::release): Optimize by manually inlining weak_release.
2005-11-10 Paolo Carlini <pcarlini@suse.de> Peter Dimov <pdimov@mmltd.net> * include/tr1/boost_shared_ptr.h (_Sp_counted_base::release): Optimize by manually inlining weak_release. * include/tr1/boost_shared_ptr.h (_Sp_counted_base::release, weak_release): Use explicit memory barriers. Co-Authored-By: Peter Dimov <pdimov@mmltd.net> From-SVN: r106729
This commit is contained in:
parent
720e2f72c3
commit
7fd6021841
libstdc++-v3
@ -1,3 +1,12 @@
|
||||
2005-11-10 Paolo Carlini <pcarlini@suse.de>
|
||||
Peter Dimov <pdimov@mmltd.net>
|
||||
|
||||
* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release):
|
||||
Optimize by manually inlining weak_release.
|
||||
|
||||
* include/tr1/boost_shared_ptr.h (_Sp_counted_base::release,
|
||||
weak_release): Use explicit memory barriers.
|
||||
|
||||
2005-11-09 Benjamin Kosnik <bkoz@redhat.com>
|
||||
Paolo Carlini <pcarlini@suse.de>
|
||||
Gabriel Dos Reis <gdr@integrable-solutions.net>
|
||||
|
@ -151,9 +151,12 @@ public:
|
||||
if (__gnu_cxx::__exchange_and_add(&_M_use_count, -1) == 1)
|
||||
{
|
||||
dispose();
|
||||
__glibcxx_mutex_lock(_M_mutex);
|
||||
__glibcxx_mutex_unlock(_M_mutex);
|
||||
weak_release();
|
||||
|
||||
_GLIBCXX_READ_MEM_BARRIER;
|
||||
_GLIBCXX_WRITE_MEM_BARRIER;
|
||||
|
||||
if (__gnu_cxx::__exchange_and_add(&_M_weak_count, -1) == 1)
|
||||
destroy();
|
||||
}
|
||||
}
|
||||
|
||||
@ -168,8 +171,8 @@ public:
|
||||
{
|
||||
if (__gnu_cxx::__exchange_and_add(&_M_weak_count, -1) == 1)
|
||||
{
|
||||
__glibcxx_mutex_lock(_M_mutex);
|
||||
__glibcxx_mutex_unlock(_M_mutex);
|
||||
_GLIBCXX_READ_MEM_BARRIER;
|
||||
_GLIBCXX_WRITE_MEM_BARRIER;
|
||||
destroy();
|
||||
}
|
||||
}
|
||||
@ -328,7 +331,7 @@ class weak_count
|
||||
{
|
||||
private:
|
||||
|
||||
_Sp_counted_base * _M_pi;
|
||||
_Sp_counted_base* _M_pi;
|
||||
|
||||
friend class shared_count;
|
||||
|
||||
@ -677,8 +680,8 @@ template<typename _Tp>
|
||||
_M_less(const shared_ptr<_Tp1>& __rhs) const
|
||||
{ return _M_refcount < __rhs._M_refcount; }
|
||||
|
||||
template <typename _Tp1> friend class shared_ptr;
|
||||
template <typename _Tp1> friend class weak_ptr;
|
||||
template<typename _Tp1> friend class shared_ptr;
|
||||
template<typename _Tp1> friend class weak_ptr;
|
||||
|
||||
// friends injected into enclosing namespace and found by ADL:
|
||||
template<typename _Tp1>
|
||||
|
Loading…
x
Reference in New Issue
Block a user