This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Avoid memory allocations when making futures ready
- From: Jonathan Wakely <jwakely at redhat dot com>
- To: Dominique Dhumieres <dominiq at lps dot ens dot fr>
- Cc: gcc-patches at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Thu, 7 Aug 2014 23:55:01 +0100
- Subject: Re: [patch] Avoid memory allocations when making futures ready
- Authentication-results: sourceware.org; auth=none
- References: <20140807220718 dot C3361105 at mailhost dot lps dot ens dot fr>
On 08/08/14 00:07 +0200, Dominique Dhumieres wrote:
This patch replaces some reference members with pointers, ...
...
Tested x86_64-linux, committed to trunk.
This breaks bootstrap (see https://gcc.gnu.org/ml/gcc-regression/2014-08/):
Fixed by this patch, sorry about that. I was caught out (again) by the
files in libstdc++-v3/src/*/ not being recompiled when headers change.
Tested x86_64-linux with full bootstrap, committed to trunk.
commit b5af1e35e9c52ea8738997431ab958dc4caf85c6
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Aug 7 23:20:09 2014 +0100
* include/std/future (__location_invariant): Move specializations
after preprocessor condition.
diff --git a/libstdc++-v3/include/std/future b/libstdc++-v3/include/std/future
index c3aaaec..8989474 100644
--- a/libstdc++-v3/include/std/future
+++ b/libstdc++-v3/include/std/future
@@ -551,6 +551,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
void _M_destroy() { delete this; }
};
+#ifndef _GLIBCXX_ASYNC_ABI_COMPAT
+
// Allow _Setter objects to be stored locally in std::function
template<typename _Res, typename _Arg>
struct __is_location_invariant
@@ -563,8 +565,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
<__future_base::_Task_setter<_Res_ptr, _Fn, _Res>>
: true_type { };
-#ifndef _GLIBCXX_ASYNC_ABI_COMPAT
-
/// Common implementation for future and shared_future.
template<typename _Res>
class __basic_future : public __future_base