mirror of
https://github.com/boostorg/coroutine2.git
synced 2025-05-11 13:34:08 +00:00
Merge branch 'develop'
This commit is contained in:
commit
7268c35246
@ -23,7 +23,6 @@ namespace detail {
|
|||||||
template< typename T >
|
template< typename T >
|
||||||
struct pull_coroutine< T >::control_block {
|
struct pull_coroutine< T >::control_block {
|
||||||
typename push_coroutine< T >::control_block * other;
|
typename push_coroutine< T >::control_block * other;
|
||||||
boost::context::execution_context caller;
|
|
||||||
boost::context::execution_context callee;
|
boost::context::execution_context callee;
|
||||||
bool preserve_fpu;
|
bool preserve_fpu;
|
||||||
int state;
|
int state;
|
||||||
@ -32,7 +31,7 @@ struct pull_coroutine< T >::control_block {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
||||||
|
|
||||||
explicit control_block( typename push_coroutine< T >::control_block *);
|
explicit control_block( typename push_coroutine< T >::control_block *, boost::context::execution_context const&);
|
||||||
|
|
||||||
~control_block();
|
~control_block();
|
||||||
|
|
||||||
@ -47,7 +46,6 @@ struct pull_coroutine< T >::control_block {
|
|||||||
template< typename T >
|
template< typename T >
|
||||||
struct pull_coroutine< T & >::control_block {
|
struct pull_coroutine< T & >::control_block {
|
||||||
typename push_coroutine< T & >::control_block * other;
|
typename push_coroutine< T & >::control_block * other;
|
||||||
boost::context::execution_context caller;
|
|
||||||
boost::context::execution_context callee;
|
boost::context::execution_context callee;
|
||||||
bool preserve_fpu;
|
bool preserve_fpu;
|
||||||
int state;
|
int state;
|
||||||
@ -56,7 +54,7 @@ struct pull_coroutine< T & >::control_block {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
||||||
|
|
||||||
explicit control_block( typename push_coroutine< T & >::control_block *);
|
explicit control_block( typename push_coroutine< T & >::control_block *, boost::context::execution_context const&);
|
||||||
|
|
||||||
~control_block();
|
~control_block();
|
||||||
|
|
||||||
@ -70,7 +68,6 @@ struct pull_coroutine< T & >::control_block {
|
|||||||
|
|
||||||
struct pull_coroutine< void >::control_block {
|
struct pull_coroutine< void >::control_block {
|
||||||
push_coroutine< void >::control_block * other;
|
push_coroutine< void >::control_block * other;
|
||||||
boost::context::execution_context caller;
|
|
||||||
boost::context::execution_context callee;
|
boost::context::execution_context callee;
|
||||||
bool preserve_fpu;
|
bool preserve_fpu;
|
||||||
int state;
|
int state;
|
||||||
@ -79,7 +76,7 @@ struct pull_coroutine< void >::control_block {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
||||||
|
|
||||||
explicit control_block( push_coroutine< void >::control_block *);
|
explicit control_block( push_coroutine< void >::control_block *, boost::context::execution_context const&);
|
||||||
|
|
||||||
~control_block();
|
~control_block();
|
||||||
|
|
||||||
|
@ -33,11 +33,10 @@ template< typename StackAllocator, typename Fn >
|
|||||||
pull_coroutine< T >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
pull_coroutine< T >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
||||||
Fn && fn_, bool preserve_fpu_) :
|
Fn && fn_, bool preserve_fpu_) :
|
||||||
other( nullptr),
|
other( nullptr),
|
||||||
caller( boost::context::execution_context::current() ),
|
|
||||||
callee( palloc, salloc,
|
callee( palloc, salloc,
|
||||||
[=,fn=std::forward< Fn >( fn_)] () mutable -> void {
|
[=,fn=std::forward< Fn >( fn_),caller=boost::context::execution_context::current()] () mutable -> void {
|
||||||
// create synthesized push_coroutine< T >
|
// create synthesized push_coroutine< T >
|
||||||
typename push_coroutine< T >::control_block synthesized_cb( this);
|
typename push_coroutine< T >::control_block synthesized_cb( this, caller);
|
||||||
push_coroutine< T > synthesized( & synthesized_cb);
|
push_coroutine< T > synthesized( & synthesized_cb);
|
||||||
other = & synthesized_cb;
|
other = & synthesized_cb;
|
||||||
try {
|
try {
|
||||||
@ -63,10 +62,10 @@ pull_coroutine< T >::control_block::control_block( context::preallocated palloc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
pull_coroutine< T >::control_block::control_block( typename push_coroutine< T >::control_block * cb) :
|
pull_coroutine< T >::control_block::control_block( typename push_coroutine< T >::control_block * cb,
|
||||||
|
boost::context::execution_context const& caller) :
|
||||||
other( cb),
|
other( cb),
|
||||||
caller( other->callee),
|
callee( caller),
|
||||||
callee( other->caller),
|
|
||||||
preserve_fpu( other->preserve_fpu),
|
preserve_fpu( other->preserve_fpu),
|
||||||
state( 0),
|
state( 0),
|
||||||
except() {
|
except() {
|
||||||
@ -110,11 +109,10 @@ template< typename StackAllocator, typename Fn >
|
|||||||
pull_coroutine< T & >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
pull_coroutine< T & >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
||||||
Fn && fn_, bool preserve_fpu_) :
|
Fn && fn_, bool preserve_fpu_) :
|
||||||
other( nullptr),
|
other( nullptr),
|
||||||
caller( boost::context::execution_context::current() ),
|
|
||||||
callee( palloc, salloc,
|
callee( palloc, salloc,
|
||||||
[=,fn=std::forward< Fn >( fn_)] () mutable -> void {
|
[=,fn=std::forward< Fn >( fn_),caller=boost::context::execution_context::current()] () mutable -> void {
|
||||||
// create synthesized push_coroutine< T >
|
// create synthesized push_coroutine< T >
|
||||||
typename push_coroutine< T & >::control_block synthesized_cb( this);
|
typename push_coroutine< T & >::control_block synthesized_cb( this, caller);
|
||||||
push_coroutine< T & > synthesized( & synthesized_cb);
|
push_coroutine< T & > synthesized( & synthesized_cb);
|
||||||
other = & synthesized_cb;
|
other = & synthesized_cb;
|
||||||
try {
|
try {
|
||||||
@ -140,10 +138,10 @@ pull_coroutine< T & >::control_block::control_block( context::preallocated pallo
|
|||||||
}
|
}
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
pull_coroutine< T & >::control_block::control_block( typename push_coroutine< T & >::control_block * cb) :
|
pull_coroutine< T & >::control_block::control_block( typename push_coroutine< T & >::control_block * cb,
|
||||||
|
boost::context::execution_context const& caller) :
|
||||||
other( cb),
|
other( cb),
|
||||||
caller( other->callee),
|
callee( caller),
|
||||||
callee( other->caller),
|
|
||||||
preserve_fpu( other->preserve_fpu),
|
preserve_fpu( other->preserve_fpu),
|
||||||
state( 0),
|
state( 0),
|
||||||
except() {
|
except() {
|
||||||
@ -186,11 +184,10 @@ template< typename StackAllocator, typename Fn >
|
|||||||
pull_coroutine< void >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
pull_coroutine< void >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
||||||
Fn && fn_, bool preserve_fpu_) :
|
Fn && fn_, bool preserve_fpu_) :
|
||||||
other( nullptr),
|
other( nullptr),
|
||||||
caller( boost::context::execution_context::current() ),
|
|
||||||
callee( palloc, salloc,
|
callee( palloc, salloc,
|
||||||
[=,fn=std::forward< Fn >( fn_)] () mutable -> void {
|
[=,fn=std::forward< Fn >( fn_),caller=boost::context::execution_context::current()] () mutable -> void {
|
||||||
// create synthesized push_coroutine< T >
|
// create synthesized push_coroutine< T >
|
||||||
typename push_coroutine< void >::control_block synthesized_cb( this);
|
typename push_coroutine< void >::control_block synthesized_cb( this, caller);
|
||||||
push_coroutine< void > synthesized( & synthesized_cb);
|
push_coroutine< void > synthesized( & synthesized_cb);
|
||||||
other = & synthesized_cb;
|
other = & synthesized_cb;
|
||||||
try {
|
try {
|
||||||
@ -216,10 +213,10 @@ pull_coroutine< void >::control_block::control_block( context::preallocated pall
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
pull_coroutine< void >::control_block::control_block( push_coroutine< void >::control_block * cb) :
|
pull_coroutine< void >::control_block::control_block( push_coroutine< void >::control_block * cb,
|
||||||
|
boost::context::execution_context const& caller) :
|
||||||
other( cb),
|
other( cb),
|
||||||
caller( other->callee),
|
callee( caller),
|
||||||
callee( other->caller),
|
|
||||||
preserve_fpu( other->preserve_fpu),
|
preserve_fpu( other->preserve_fpu),
|
||||||
state( 0),
|
state( 0),
|
||||||
except() {
|
except() {
|
||||||
|
@ -23,7 +23,6 @@ namespace detail {
|
|||||||
template< typename T >
|
template< typename T >
|
||||||
struct push_coroutine< T >::control_block {
|
struct push_coroutine< T >::control_block {
|
||||||
typename pull_coroutine< T >::control_block * other;
|
typename pull_coroutine< T >::control_block * other;
|
||||||
boost::context::execution_context caller;
|
|
||||||
boost::context::execution_context callee;
|
boost::context::execution_context callee;
|
||||||
bool preserve_fpu;
|
bool preserve_fpu;
|
||||||
int state;
|
int state;
|
||||||
@ -33,7 +32,7 @@ struct push_coroutine< T >::control_block {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
||||||
|
|
||||||
explicit control_block( typename pull_coroutine< T >::control_block *);
|
explicit control_block( typename pull_coroutine< T >::control_block *, boost::context::execution_context const&);
|
||||||
|
|
||||||
~control_block();
|
~control_block();
|
||||||
|
|
||||||
@ -50,7 +49,6 @@ struct push_coroutine< T >::control_block {
|
|||||||
template< typename T >
|
template< typename T >
|
||||||
struct push_coroutine< T & >::control_block {
|
struct push_coroutine< T & >::control_block {
|
||||||
typename pull_coroutine< T & >::control_block * other;
|
typename pull_coroutine< T & >::control_block * other;
|
||||||
boost::context::execution_context caller;
|
|
||||||
boost::context::execution_context callee;
|
boost::context::execution_context callee;
|
||||||
bool preserve_fpu;
|
bool preserve_fpu;
|
||||||
int state;
|
int state;
|
||||||
@ -60,7 +58,7 @@ struct push_coroutine< T & >::control_block {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
||||||
|
|
||||||
explicit control_block( typename pull_coroutine< T & >::control_block *);
|
explicit control_block( typename pull_coroutine< T & >::control_block *, boost::context::execution_context const&);
|
||||||
|
|
||||||
~control_block();
|
~control_block();
|
||||||
|
|
||||||
@ -74,7 +72,6 @@ struct push_coroutine< T & >::control_block {
|
|||||||
|
|
||||||
struct push_coroutine< void >::control_block {
|
struct push_coroutine< void >::control_block {
|
||||||
pull_coroutine< void >::control_block * other;
|
pull_coroutine< void >::control_block * other;
|
||||||
boost::context::execution_context caller;
|
|
||||||
boost::context::execution_context callee;
|
boost::context::execution_context callee;
|
||||||
bool preserve_fpu;
|
bool preserve_fpu;
|
||||||
int state;
|
int state;
|
||||||
@ -83,7 +80,7 @@ struct push_coroutine< void >::control_block {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
control_block( context::preallocated, StackAllocator, Fn &&, bool);
|
||||||
|
|
||||||
explicit control_block( pull_coroutine< void >::control_block *);
|
explicit control_block( pull_coroutine< void >::control_block *, boost::context::execution_context const&);
|
||||||
|
|
||||||
~control_block();
|
~control_block();
|
||||||
|
|
||||||
|
@ -34,11 +34,10 @@ template< typename StackAllocator, typename Fn >
|
|||||||
push_coroutine< T >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
push_coroutine< T >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
||||||
Fn && fn_, bool preserve_fpu_) :
|
Fn && fn_, bool preserve_fpu_) :
|
||||||
other( nullptr),
|
other( nullptr),
|
||||||
caller( boost::context::execution_context::current() ),
|
|
||||||
callee( palloc, salloc,
|
callee( palloc, salloc,
|
||||||
[=,fn=std::forward< Fn >( fn_)] () mutable -> void {
|
[=,fn=std::forward< Fn >( fn_),caller=boost::context::execution_context::current()] () mutable -> void {
|
||||||
// create synthesized pull_coroutine< T >
|
// create synthesized pull_coroutine< T >
|
||||||
typename pull_coroutine< T >::control_block synthesized_cb( this);
|
typename pull_coroutine< T >::control_block synthesized_cb( this, caller);
|
||||||
pull_coroutine< T > synthesized( & synthesized_cb);
|
pull_coroutine< T > synthesized( & synthesized_cb);
|
||||||
other = & synthesized_cb;
|
other = & synthesized_cb;
|
||||||
// jump back to ctor
|
// jump back to ctor
|
||||||
@ -67,10 +66,10 @@ push_coroutine< T >::control_block::control_block( context::preallocated palloc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
push_coroutine< T >::control_block::control_block( typename pull_coroutine< T >::control_block * cb) :
|
push_coroutine< T >::control_block::control_block( typename pull_coroutine< T >::control_block * cb,
|
||||||
|
boost::context::execution_context const& caller) :
|
||||||
other( cb),
|
other( cb),
|
||||||
caller( other->callee),
|
callee( caller),
|
||||||
callee( other->caller),
|
|
||||||
preserve_fpu( other->preserve_fpu),
|
preserve_fpu( other->preserve_fpu),
|
||||||
state( 0),
|
state( 0),
|
||||||
except(),
|
except(),
|
||||||
@ -139,11 +138,10 @@ template< typename StackAllocator, typename Fn >
|
|||||||
push_coroutine< T & >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
push_coroutine< T & >::control_block::control_block( context::preallocated palloc, StackAllocator salloc,
|
||||||
Fn && fn_, bool preserve_fpu_) :
|
Fn && fn_, bool preserve_fpu_) :
|
||||||
other( nullptr),
|
other( nullptr),
|
||||||
caller( boost::context::execution_context::current() ),
|
|
||||||
callee( palloc, salloc,
|
callee( palloc, salloc,
|
||||||
[=,fn=std::forward< Fn >( fn_)] () mutable -> void {
|
[=,fn=std::forward< Fn >( fn_),caller=boost::context::execution_context::current()] () mutable -> void {
|
||||||
// create synthesized pull_coroutine< T >
|
// create synthesized pull_coroutine< T >
|
||||||
typename pull_coroutine< T & >::control_block synthesized_cb( this);
|
typename pull_coroutine< T & >::control_block synthesized_cb( this, caller);
|
||||||
pull_coroutine< T & > synthesized( & synthesized_cb);
|
pull_coroutine< T & > synthesized( & synthesized_cb);
|
||||||
other = & synthesized_cb;
|
other = & synthesized_cb;
|
||||||
// jump back to ctor
|
// jump back to ctor
|
||||||
@ -172,10 +170,10 @@ push_coroutine< T & >::control_block::control_block( context::preallocated pallo
|
|||||||
}
|
}
|
||||||
|
|
||||||
template< typename T >
|
template< typename T >
|
||||||
push_coroutine< T & >::control_block::control_block( typename pull_coroutine< T & >::control_block * cb) :
|
push_coroutine< T & >::control_block::control_block( typename pull_coroutine< T & >::control_block * cb,
|
||||||
|
boost::context::execution_context const& caller) :
|
||||||
other( cb),
|
other( cb),
|
||||||
caller( other->callee),
|
callee( caller),
|
||||||
callee( other->caller),
|
|
||||||
preserve_fpu( other->preserve_fpu),
|
preserve_fpu( other->preserve_fpu),
|
||||||
state( 0),
|
state( 0),
|
||||||
except(),
|
except(),
|
||||||
@ -220,11 +218,10 @@ push_coroutine< T & >::control_block::valid() const noexcept {
|
|||||||
template< typename StackAllocator, typename Fn >
|
template< typename StackAllocator, typename Fn >
|
||||||
push_coroutine< void >::control_block::control_block( context::preallocated palloc, StackAllocator salloc, Fn && fn_, bool preserve_fpu_) :
|
push_coroutine< void >::control_block::control_block( context::preallocated palloc, StackAllocator salloc, Fn && fn_, bool preserve_fpu_) :
|
||||||
other( nullptr),
|
other( nullptr),
|
||||||
caller( boost::context::execution_context::current() ),
|
|
||||||
callee( palloc, salloc,
|
callee( palloc, salloc,
|
||||||
[=,fn=std::forward< Fn >( fn_)] () mutable -> void {
|
[=,fn=std::forward< Fn >( fn_),caller=boost::context::execution_context::current()] () mutable -> void {
|
||||||
// create synthesized pull_coroutine< T >
|
// create synthesized pull_coroutine< T >
|
||||||
typename pull_coroutine< void >::control_block synthesized_cb( this);
|
typename pull_coroutine< void >::control_block synthesized_cb( this, caller);
|
||||||
pull_coroutine< void > synthesized( & synthesized_cb);
|
pull_coroutine< void > synthesized( & synthesized_cb);
|
||||||
other = & synthesized_cb;
|
other = & synthesized_cb;
|
||||||
// jump back to ctor
|
// jump back to ctor
|
||||||
@ -252,10 +249,10 @@ push_coroutine< void >::control_block::control_block( context::preallocated pall
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline
|
inline
|
||||||
push_coroutine< void >::control_block::control_block( pull_coroutine< void >::control_block * cb) :
|
push_coroutine< void >::control_block::control_block( pull_coroutine< void >::control_block * cb,
|
||||||
|
boost::context::execution_context const& caller) :
|
||||||
other( cb),
|
other( cb),
|
||||||
caller( other->callee),
|
callee( caller),
|
||||||
callee( other->caller),
|
|
||||||
preserve_fpu( other->preserve_fpu),
|
preserve_fpu( other->preserve_fpu),
|
||||||
state( 0),
|
state( 0),
|
||||||
except() {
|
except() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user