Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:Alexander_Naumov:SLE-12:Update
boost.3276
boost-ppc64-abiv2-coroutine.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File boost-ppc64-abiv2-coroutine.patch of Package boost.3276
diff --git a/boost/coroutine/detail/coroutine_context.hpp b/boost/coroutine/detail/coroutine_context.hpp --- a/boost/coroutine/detail/coroutine_context.hpp +++ b/boost/coroutine/detail/coroutine_context.hpp @@ -34,27 +34,33 @@ namespace boost { namespace coroutines { namespace detail { - -class BOOST_COROUTINES_DECL coroutine_context : private context::fcontext_t, - private stack_context +// class hold stack-context and coroutines execution-context +class BOOST_COROUTINES_DECL coroutine_context { private: - stack_context * stack_ctx_; - context::fcontext_t * ctx_; + stack_context stack_ctx_; + context::fcontext_t *ctx_; public: typedef void( * ctx_fn)( intptr_t); + // default ctor represents the current execution-context coroutine_context(); - explicit coroutine_context( ctx_fn, stack_context *); + // ctor creates a new execution-context running coroutine-fn `fn` + // `ctx_` will be allocated on top of the stack managed by parameter + // `stack_ctx` + coroutine_context( ctx_fn fn, stack_context const& stack_ctx); coroutine_context( coroutine_context const&); coroutine_context& operator=( coroutine_context const&); intptr_t jump( coroutine_context &, intptr_t = 0, bool = true); + + stack_context & stack_ctx() + { return stack_ctx_; } }; }}} diff --git a/libs/coroutine/src/detail/coroutine_context.cpp b/libs/coroutine/src/detail/coroutine_context.cpp --- a/libs/coroutine/src/detail/coroutine_context.cpp +++ b/libs/coroutine/src/detail/coroutine_context.cpp @@ -34,20 +34,20 @@ namespace coroutines { namespace detail { coroutine_context::coroutine_context() : - fcontext_t(), stack_ctx_( this), ctx_( this) + stack_ctx_(), + ctx_( 0) { #if defined(BOOST_USE_SEGMENTED_STACKS) __splitstack_getcontext( stack_ctx_->segments_ctx); #endif } -coroutine_context::coroutine_context( ctx_fn fn, stack_context * stack_ctx) : - fcontext_t(), stack_ctx_( stack_ctx), - ctx_( context::make_fcontext( stack_ctx_->sp, stack_ctx_->size, fn) ) +coroutine_context::coroutine_context( ctx_fn fn, stack_context const& stack_ctx) : + stack_ctx_( stack_ctx), + ctx_( context::make_fcontext( stack_ctx_.sp, stack_ctx_.size, fn) ) {} coroutine_context::coroutine_context( coroutine_context const& other) : - fcontext_t(), stack_ctx_( other.stack_ctx_), ctx_( other.ctx_) {} @@ -79,7 +79,7 @@ coroutine_context::jump( coroutine_context & other, intptr_t param, bool preserv return ret; #else - return context::jump_fcontext( ctx_, other.ctx_, param, preserve_fpu); + return context::jump_fcontext( & ctx_, other.ctx_, param, preserve_fpu); #endif }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor