diff options
author | Jan Kotas <jkotas@microsoft.com> | 2016-05-17 01:02:38 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2016-05-17 01:02:38 +0300 |
commit | 10d475ef6233e5baf6db91eb9edb5f426685298e (patch) | |
tree | 64ffe65ca9d0f751991056baf2cdb58a05123808 /src/Native/Runtime/threadstore.cpp | |
parent | a7e7db720420872e9814966a86144d41871364fc (diff) |
Reduce assembly code in PInvoke helpers
- Reduce amount of assembly code in PInvoke helpers by moving all slow paths to C++
- Share code between the slow paths of assembly and portable helpers
- Improve performance of the portable helpers by making the access to current thread and the trap thread statics inlineable (e.g. the portable RhpReversePInvoke2 helper has only two extra instructions compared to what the hand-optimized assembly helper would have)
[tfs-changeset: 1605153]
Diffstat (limited to 'src/Native/Runtime/threadstore.cpp')
-rw-r--r-- | src/Native/Runtime/threadstore.cpp | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/src/Native/Runtime/threadstore.cpp b/src/Native/Runtime/threadstore.cpp index 26403e0f5..c02865d5c 100644 --- a/src/Native/Runtime/threadstore.cpp +++ b/src/Native/Runtime/threadstore.cpp @@ -19,6 +19,7 @@ #include "event.h" #include "RWLock.h" #include "threadstore.h" +#include "threadstore.inl" #include "RuntimeInstance.h" #include "ObjectLayout.h" #include "TargetPtrs.h" @@ -294,12 +295,6 @@ void ThreadStore::ResumeAllThreads(CLREventStatic* pCompletionEvent) UnlockThreadStore(); } // ResumeAllThreads -// static -bool ThreadStore::IsTrapThreadsRequested() -{ - return (RhpTrapThreads != 0); -} - void ThreadStore::WaitForSuspendComplete() { UInt32 waitResult = m_SuspendCompleteEvent.Wait(INFINITE, false); @@ -345,33 +340,6 @@ void * ThreadStore::CreateCurrentThreadBuffer() return pvBuffer; } - -// static -Thread * ThreadStore::RawGetCurrentThread() -{ - return (Thread *) &tls_CurrentThread; -} - -// static -Thread * ThreadStore::GetCurrentThread() -{ - Thread * pCurThread = RawGetCurrentThread(); - - // If this assert fires, and you only need the Thread pointer if the thread has ever previously - // entered the runtime, then you should be using GetCurrentThreadIfAvailable instead. - ASSERT(pCurThread->IsInitialized()); - return pCurThread; -}; - -// static -Thread * ThreadStore::GetCurrentThreadIfAvailable() -{ - Thread * pCurThread = RawGetCurrentThread(); - if (pCurThread->IsInitialized()) - return pCurThread; - - return NULL; -} #endif // !DACCESS_COMPILE |