summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/kernel/parallel.hpp
diff options
context:
space:
mode:
authorjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2012-07-16 06:48:11 +0000
committerjsdelfino <jsdelfino@13f79535-47bb-0310-9956-ffa450edef68>2012-07-16 06:48:11 +0000
commit574ccee478b9da9457cdf0e476b8df6eb584b580 (patch)
tree5a8166f47057ed322294db7816e2732d1d18f7bc /sca-cpp/trunk/kernel/parallel.hpp
parent419f903ff44a22debba43976baae1e86c1e5d871 (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.hpp19
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;