diff options
author | Pixel <pixel@nobis-crew.org> | 2012-04-08 16:33:53 -0700 |
---|---|---|
committer | Pixel <pixel@nobis-crew.org> | 2012-04-08 16:33:53 -0700 |
commit | 1548da7eb85e8199e49c0a4e7e3c53fb2184177e (patch) | |
tree | 03ab0059404f3fd0b985853a166be1293b071ce9 /src/Task.cc | |
parent | 0fb5f42ca43f11bd37ddc89aa7c7b098d764b28c (diff) |
Few more quirks into the stackless mode; we don't want to allocate stacks nor create any co-routine (or fiber) if we're stackless.
Diffstat (limited to 'src/Task.cc')
-rw-r--r-- | src/Task.cc | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/Task.cc b/src/Task.cc index 5026d28..52e9fa2 100644 --- a/src/Task.cc +++ b/src/Task.cc @@ -19,16 +19,21 @@ bool Balau::Task::needsStacks() { } void Balau::Task::setup(TaskMan * taskMan, void * stack) { - size_t size = stackSize(); + if (m_stackless) { + IAssert(!stack, "Since we're stackless, no stack should've been allocated."); + m_stack = NULL; + } else { + size_t size = stackSize(); #ifndef _WIN32 - IAssert(stack, "Can't setup a coroutine without a stack"); - m_stack = stack; - coro_create(&m_ctx, coroutineTrampoline, this, m_stack, size); + IAssert(stack, "Can't setup a coroutine without a stack"); + m_stack = stack; + coro_create(&m_ctx, coroutineTrampoline, this, m_stack, size); #else - Assert(!stack, "We shouldn't allocate stacks with Fibers"); - m_stack = NULL; - m_fiber = CreateFiber(size, coroutineTrampoline, this); + Assert(!stack, "We shouldn't allocate stacks with Fibers"); + m_stack = NULL; + m_fiber = CreateFiber(size, coroutineTrampoline, this); #endif + } m_taskMan = taskMan; |