From 743ca289b6cec6dafb1d1952646b7ec73c63cf07 Mon Sep 17 00:00:00 2001 From: Michael Bebenita Date: Wed, 8 Sep 2010 19:26:46 -0700 Subject: Cache task handles. --- src/rt/rust_task.cpp | 8 ++++++-- src/rt/rust_task.h | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) (limited to 'src/rt') diff --git a/src/rt/rust_task.cpp b/src/rt/rust_task.cpp index 408996f6..97502588 100644 --- a/src/rt/rust_task.cpp +++ b/src/rt/rust_task.cpp @@ -69,7 +69,8 @@ rust_task::rust_task(rust_dom *dom, rust_task *spawner, const char *name) : supervisor(spawner), idx(0), rendezvous_ptr(0), - alarm(this) + alarm(this), + handle(NULL) { dom->logptr("new task", (uintptr_t)this); @@ -633,7 +634,10 @@ rust_task::log(uint32_t type_bits, char const *fmt, ...) { rust_handle * rust_task::get_handle() { - return dom->kernel->get_task_handle(this); + if (handle == NULL) { + handle = dom->kernel->get_task_handle(this); + } + return handle; } // diff --git a/src/rt/rust_task.h b/src/rt/rust_task.h index 383707f0..7b0cfef7 100644 --- a/src/rt/rust_task.h +++ b/src/rt/rust_task.h @@ -46,6 +46,8 @@ rust_task : public maybe_proxy, rust_alarm alarm; + rust_handle *handle; + // Only a pointer to 'name' is kept, so it must live as long as this task. rust_task(rust_dom *dom, rust_task *spawner, -- cgit v1.2.3