Add support for const thread locals.
authorOwen Anderson <resistor@mac.com>
Thu, 25 Jun 2009 23:31:18 +0000 (23:31 +0000)
committerOwen Anderson <resistor@mac.com>
Thu, 25 Jun 2009 23:31:18 +0000 (23:31 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74226 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/System/ThreadLocal.h
lib/System/ThreadLocal.cpp
lib/System/Win32/ThreadLocal.inc

index 7627be26d2e7313aa3458f7e9a5cb105dce75571..39b1e64be0cdb2c5fa0085d9010f4d1b8502b8e6 100644 (file)
@@ -24,8 +24,8 @@ namespace llvm {
     public:
       ThreadLocalImpl();
       virtual ~ThreadLocalImpl();
-      void setInstance(void* d);
-      void* getInstance();
+      void setInstance(const void* d);
+      const void* getInstance();
     };
     
     template<class T>
index 74afa3e9538999710b3b2eff44c75593b978fa3a..f8b00d152a0c2d484bc5842101664b4c0138173b 100644 (file)
@@ -25,8 +25,8 @@ namespace llvm {
 using namespace sys;
 ThreadLocalImpl::ThreadLocalImpl() { }
 ThreadLocalImpl::~ThreadLocalImpl() { }
-void ThreadLocalImpl::setInstance(void* d) { data = d; }
-void* ThreadLocalImpl::getInstance() { return data; }
+void ThreadLocalImpl::setInstance(const void* d) { data = const_cast<void*>(d);}
+const void* ThreadLocalImpl::getInstance() { return data; }
 }
 #else
 
@@ -53,13 +53,13 @@ ThreadLocalImpl::~ThreadLocalImpl() {
   delete key;
 }
 
-void ThreadLocalImpl::setInstance(void* d) {
+void ThreadLocalImpl::setInstance(const void* d) {
   pthread_key_t* key = static_cast<pthread_key_t*>(data);
   int errorcode = pthread_setspecific(*key, d);
   assert(errorcode == 0);
 }
 
-void* ThreadLocalImpl::getInstance() {
+const void* ThreadLocalImpl::getInstance() {
   pthread_key_t* key = static_cast<pthread_key_t*>(data);
   return pthread_getspecific(*key);
 }
index 5bba8b58f90196fa9d60ecf91ac3b1f2e2387a5e..0ba3be451e63d7d819bb2ed82bf91ece36367614 100644 (file)
@@ -35,12 +35,12 @@ ThreadLocalImpl::~ThreadLocalImpl() {
   delete tls;
 }
 
-void* ThreadLocalImpl::getInstance() {
+const void* ThreadLocalImpl::getInstance() {
   DWORD* tls = static_cast<DWORD*>(data);
   return TlsGetValue(*tls);
 }
 
-void ThreadLocalImpl::setInstance(void* d){
+void ThreadLocalImpl::setInstance(const void* d){
   DWORD* tls = static_cast<DWORD*>(data);
   int errorcode = TlsSetValue(*tls, d);
   assert(errorcode == 0);