diff options
author | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2012-07-16 06:48:11 +0000 |
---|---|---|
committer | jsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68> | 2012-07-16 06:48:11 +0000 |
commit | 574ccee478b9da9457cdf0e476b8df6eb584b580 (patch) | |
tree | 5a8166f47057ed322294db7816e2732d1d18f7bc /sca-cpp/trunk/kernel/parallel.hpp | |
parent | 419f903ff44a22debba43976baae1e86c1e5d871 (diff) |
Minor memory management, performance, and tracing improvements.
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@1361917 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'sca-cpp/trunk/kernel/parallel.hpp')
-rw-r--r-- | sca-cpp/trunk/kernel/parallel.hpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/sca-cpp/trunk/kernel/parallel.hpp b/sca-cpp/trunk/kernel/parallel.hpp index 57754a33e6..3be4d3bc8e 100644 --- a/sca-cpp/trunk/kernel/parallel.hpp +++ b/sca-cpp/trunk/kernel/parallel.hpp @@ -429,24 +429,24 @@ private: } #else - int createkey() { - return 0; + gc_ptr<gc_ptr<T> > createkey() { + return new (gc_new<gc_ptr<T> >()) gc_ptr<T>(); } - bool deletekey(unused int k) { + bool deletekey(unused gc_ptr<gc_ptr<T> > k) { return true; } bool set(const gc_ptr<T>& v) { - val = v; + *key = v; return true; } gc_ptr<T> get() const { - if (val != NULL || !managed) - return val; - val = cl(); - return val; + if (*key != NULL || !managed) + return *key; + *key = cl(); + return *key; } #endif @@ -454,8 +454,7 @@ private: #ifdef WANT_THREADS pthread_key_t key; #else - int key; - gc_ptr<T> val; + gc_ptr<gc_ptr<T> >key; #endif bool owner; |