diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2015-09-04 17:09:05 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2015-09-04 17:09:05 +0100 |
commit | c79c59f024db9ffc5309bc9e67d41d7cae502e8d (patch) | |
tree | 9d4916572cfb97a8c260f8d1873b388338b1e98e | |
parent | 075e268e81bc06cc89109484c501474a440203b2 (diff) | |
download | gcc-c79c59f024db9ffc5309bc9e67d41d7cae502e8d.zip gcc-c79c59f024db9ffc5309bc9e67d41d7cae502e8d.tar.gz gcc-c79c59f024db9ffc5309bc9e67d41d7cae502e8d.tar.bz2 |
fix darwin bootstrap errors due to <mutex>.
PR libstdc++/65704
* include/std/mutex (recursive_timed_mutex): Fix uses of _Can_lock.
From-SVN: r227495
-rw-r--r-- | libstdc++-v3/ChangeLog | 5 | ||||
-rw-r--r-- | libstdc++-v3/include/std/mutex | 19 |
2 files changed, 14 insertions, 10 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 030becb..ac2dde4 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,4 +1,7 @@ -2015-09-03 Jonathan Wakely <jwakely@redhat.com> +2015-09-04 Jonathan Wakely <jwakely@redhat.com> + + PR libstdc++/65704 + * include/std/mutex (recursive_timed_mutex): Fix uses of _Can_lock. PR libstdc++/65704 * include/Makefile.am: Add <bits/mutex.h>. diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 47141d9..38950b6 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -368,9 +368,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Predicate type that tests whether the current thread can lock a mutex. struct _Can_lock { - _Can_lock(const recursive_timed_mutex* __mx) - : _M_mx(__mx), _M_caller(this_thread::get_id()) { } - // Returns true if the mutex is unlocked or is locked by _M_caller. bool operator()() const noexcept @@ -391,7 +388,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION void lock() { - _Can_lock __can_lock{this}; + auto __id = this_thread::get_id(); + _Can_lock __can_lock{this, __id}; unique_lock<mutex> __lk(_M_mut); _M_cv.wait(__lk, __can_lock); if (_M_count == -1u) @@ -403,7 +401,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool try_lock() { - _Can_lock __can_lock{this}; + auto __id = this_thread::get_id(); + _Can_lock __can_lock{this, __id}; lock_guard<mutex> __lk(_M_mut); if (!__can_lock()) return false; @@ -418,9 +417,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool try_lock_for(const chrono::duration<_Rep, _Period>& __rtime) { - _Can_lock __can_lock{this}; + auto __id = this_thread::get_id(); + _Can_lock __can_lock{this, __id}; unique_lock<mutex> __lk(_M_mut); - if (!_M_cv.wait_for(__lk, __rtime, __can_lock); + if (!_M_cv.wait_for(__lk, __rtime, __can_lock)) return false; if (_M_count == -1u) return false; @@ -433,9 +433,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION bool try_lock_until(const chrono::time_point<_Clock, _Duration>& __atime) { - _Can_lock __can_lock{this}; + auto __id = this_thread::get_id(); + _Can_lock __can_lock{this, __id}; unique_lock<mutex> __lk(_M_mut); - if (!_M_cv.wait_until(__lk, __atime, __can_lock); + if (!_M_cv.wait_until(__lk, __atime, __can_lock)) return false; if (_M_count == -1u) return false; |