Fix casting between XThread and Thread causing pointer misalignment

This commit is contained in:
DrChat
2017-02-10 23:35:35 -06:00
parent 1334656c6a
commit 11ae05155d
3 changed files with 20 additions and 13 deletions

View File

@@ -13,14 +13,14 @@
namespace xe {
namespace cpu {
thread_local Thread* Thread::current_thread_tls_ = nullptr;
thread_local Thread* Thread::current_thread_ = nullptr;
Thread::Thread() {}
Thread::~Thread() {}
bool Thread::IsInThread() { return current_thread_tls_ != nullptr; }
bool Thread::IsInThread() { return current_thread_ != nullptr; }
Thread* Thread::GetCurrentThread() { return current_thread_tls_; }
Thread* Thread::GetCurrentThread() { return current_thread_; }
uint32_t Thread::GetCurrentThreadId() {
return Thread::GetCurrentThread()->thread_state()->thread_id();
}

View File

@@ -40,7 +40,7 @@ class Thread {
const std::string& thread_name() const { return thread_name_; }
protected:
static thread_local Thread* current_thread_tls_;
thread_local static Thread* current_thread_;
ThreadState* thread_state_ = nullptr;
std::unique_ptr<xe::threading::Thread> thread_ = nullptr;