From 1548da7eb85e8199e49c0a4e7e3c53fb2184177e Mon Sep 17 00:00:00 2001 From: Pixel Date: Sun, 8 Apr 2012 16:33:53 -0700 Subject: 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. --- src/TaskMan.cc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/TaskMan.cc') diff --git a/src/TaskMan.cc b/src/TaskMan.cc index 048b27a..33d07d0 100644 --- a/src/TaskMan.cc +++ b/src/TaskMan.cc @@ -192,10 +192,11 @@ Balau::TaskMan::~TaskMan() { } void * Balau::TaskMan::getStack() { + if (!Task::needsStacks()) + return NULL; void * r = NULL; if (m_nStacks == 0) { - if (Task::needsStacks()) - r = malloc(Task::stackSize()); + r = malloc(Task::stackSize()); } else { r = m_stacks.front(); m_stacks.pop(); @@ -298,7 +299,7 @@ int Balau::TaskMan::mainLoop() { Printer::elog(E_TASK, "TaskMan at %p popped task %p...", this, t); IAssert(m_tasks.find(t) == m_tasks.end(), "TaskMan got task %p twice... ?", t); ev_now_update(m_loop); - t->setup(this, getStack()); + t->setup(this, t->isStackless() ? NULL : getStack()); m_tasks.insert(t); starting.insert(t); } -- cgit v1.2.3