From e435e4bb3c0744acf5b36c6e441d309d10af1257 Mon Sep 17 00:00:00 2001 From: Pixel Date: Thu, 17 Nov 2011 08:54:14 -0800 Subject: Introducing the fact we need a more efficient stack allocator, and that it's to be performed from the task manager. --- src/Task.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/Task.cc') diff --git a/src/Task.cc b/src/Task.cc index b512e23..d72decc 100644 --- a/src/Task.cc +++ b/src/Task.cc @@ -13,10 +13,18 @@ Balau::Task::Task() { Printer::elog(E_TASK, "Created a Task at %p"); } +bool Balau::Task::needsStacks() { +#ifndef _WIN32 + return true; +#else + return false; +#endif +} + void Balau::Task::setup(TaskMan * taskMan) { size_t size = stackSize(); #ifndef _WIN32 - m_stack = malloc(size); + m_stack = taskMan->getStack(); coro_create(&m_ctx, coroutineTrampoline, this, m_stack, size); #else m_stack = NULL; @@ -34,7 +42,7 @@ void Balau::Task::setup(TaskMan * taskMan) { Balau::Task::~Task() { if (m_stack) - free(m_stack); + m_taskMan->freeStack(m_stack); free(m_tls); } -- cgit v1.2.3