Compare commits

...

4 Commits

Author SHA1 Message Date
Beman Dawes
6a51cba06a Release 1.48.0
[SVN r75495]
2011-11-15 15:44:44 +00:00
Peter Dimov
7b097467d6 Merge [75385] to release. Fixes #6099.
[SVN r75386]
2011-11-07 15:05:43 +00:00
Peter Dimov
7cb040edb0 Merge [70452] to release. Fixes #5327.
[SVN r75381]
2011-11-07 14:25:23 +00:00
Peter Dimov
d6ac116b71 Merge [73202] to release.
[SVN r73542]
2011-08-05 08:58:31 +00:00
5 changed files with 60 additions and 3 deletions

View File

@@ -37,9 +37,12 @@ inline void atomic_increment( int * pw )
__asm__ __volatile__
(
"0:\n\t"
".set push\n\t"
".set mips2\n\t"
"ll %0, %1\n\t"
"addiu %0, 1\n\t"
"sc %0, %1\n\t"
".set pop\n\t"
"beqz %0, 0b":
"=&r"( tmp ), "=m"( *pw ):
"m"( *pw )
@@ -55,9 +58,12 @@ inline int atomic_decrement( int * pw )
__asm__ __volatile__
(
"0:\n\t"
".set push\n\t"
".set mips2\n\t"
"ll %1, %2\n\t"
"addiu %0, %1, -1\n\t"
"sc %0, %2\n\t"
".set pop\n\t"
"beqz %0, 0b\n\t"
"addiu %0, %1, -1":
"=&r"( rv ), "=&r"( tmp ), "=m"( *pw ):
@@ -78,10 +84,13 @@ inline int atomic_conditional_increment( int * pw )
__asm__ __volatile__
(
"0:\n\t"
".set push\n\t"
".set mips2\n\t"
"ll %0, %2\n\t"
"beqz %0, 1f\n\t"
"addiu %1, %0, 1\n\t"
"sc %1, %2\n\t"
".set pop\n\t"
"beqz %1, 0b\n\t"
"addiu %0, %0, 1\n\t"
"1:":

View File

@@ -36,6 +36,10 @@
#undef BOOST_SP_HAS_SYNC
#endif
#if defined( __sh__ )
#undef BOOST_SP_HAS_SYNC
#endif
#if defined( __sparc__ )
#undef BOOST_SP_HAS_SYNC
#endif

View File

@@ -69,7 +69,25 @@ public:
{
}
// generated copy constructor, assignment, destructor are fine
// generated copy constructor, destructor are fine...
#if defined( BOOST_HAS_RVALUE_REFS )
// ... except in C++0x, move disables the implicit copy
shared_array( shared_array const & r ): px( r.px ), pn( r.pn ) // never throws
{
}
#endif
// assignment
shared_array & operator=( shared_array const & r ) // never throws
{
this_type( r ).swap( *this );
return *this;
}
void reset(T * p = 0)
{

View File

@@ -203,7 +203,17 @@ public:
boost::detail::sp_enable_shared_from_this( this, p, p );
}
// generated copy constructor, destructor are fine
// generated copy constructor, destructor are fine...
#if defined( BOOST_HAS_RVALUE_REFS )
// ... except in C++0x, move disables the implicit copy
shared_ptr( shared_ptr const & r ): px( r.px ), pn( r.pn ) // never throws
{
}
#endif
template<class Y>
explicit shared_ptr(weak_ptr<Y> const & r): pn(r.pn) // may throw

View File

@@ -40,8 +40,24 @@ public:
{
}
// generated copy constructor, assignment, destructor are fine
// generated copy constructor, assignment, destructor are fine...
#if defined( BOOST_HAS_RVALUE_REFS )
// ... except in C++0x, move disables the implicit copy
weak_ptr( weak_ptr const & r ): px( r.px ), pn( r.pn ) // never throws
{
}
weak_ptr & operator=( weak_ptr const & r ) // never throws
{
px = r.px;
pn = r.pn;
return *this;
}
#endif
//
// The "obvious" converting constructor implementation: