2014-09-19 16:19 GMT+08:00 Oliver Kowalke <oliver.kowalke@gmail.com>:
boost.context is low level and the design decision was that higher level libraries using boost.context have to take care about the stack, e.g.
boost.context is not responsible for allocating/deallocating the stack.

I know boost.context is low level, and I don't expect it to alloc/dealloc the stack, what I proposed is:

```c++
fcontext_t BOOST_CONTEXT_CALLDECL make_fcontext_portable(void* sp, std::size_t size, void (*fn)(intptr_t))
{
#if STACK_GROWS_UPWARD
    return make_fcontext(sp, size, fn);
#else
    return make_fcontext(sp + size, size, fn);
...
char stack[1024];
// works for both downward/upward stacks
auto ctx = make_fcontext_portable(stack, 1024, f);
```

Does that make sense?

Is it possible to embed the logic in asm so you don't have to use preprocessor condition at all?


Thanks.