summaryrefslogtreecommitdiff
path: root/src/vm/threads.cpp
diff options
context:
space:
mode:
authorAndrew Au <andrewau@microsoft.com>2018-05-22 15:08:25 -0700
committerAndrew Au <cshung@gmail.com>2018-11-06 18:34:47 -0800
commitc5a69820e866fff47c9f415d872112c58f17a717 (patch)
tree992cf293773ffb1557f077f72fad6c38b9584fa8 /src/vm/threads.cpp
parent5fd5ef364611d5b608913d26f6ea003a59239594 (diff)
downloadcoreclr-c5a69820e866fff47c9f415d872112c58f17a717.tar.gz
coreclr-c5a69820e866fff47c9f415d872112c58f17a717.tar.bz2
coreclr-c5a69820e866fff47c9f415d872112c58f17a717.zip
Firing the GC events within the thread suspension
Diffstat (limited to 'src/vm/threads.cpp')
-rw-r--r--src/vm/threads.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/vm/threads.cpp b/src/vm/threads.cpp
index 7a638a9c66..15e36ca46b 100644
--- a/src/vm/threads.cpp
+++ b/src/vm/threads.cpp
@@ -5349,7 +5349,7 @@ Thread::ApartmentState Thread::SetApartment(ApartmentState state, BOOL fFireMDAO
//----------------------------------------------------------------------------
ThreadStore::ThreadStore()
- : m_Crst(CrstThreadStore, (CrstFlags) (CRST_UNSAFE_ANYMODE | CRST_DEBUGGER_THREAD)),
+ : m_Crst(CrstThreadStore, (CrstFlags) (CRST_UNSAFE_ANYMODE | CRST_REENTRANCY | CRST_DEBUGGER_THREAD)),
m_ThreadCount(0),
m_MaxThreadCount(0),
m_UnstartedThreadCount(0),
@@ -5434,6 +5434,18 @@ DEBUG_NOINLINE void ThreadStore::Leave()
m_Crst.Leave();
}
+void ThreadStore::EnterThreadStoreLockOnly()
+{
+ WRAPPER_NO_CONTRACT;
+ s_pThreadStore->Enter();
+}
+
+void ThreadStore::LeaveThreadStoreLockOnly()
+{
+ WRAPPER_NO_CONTRACT;
+ s_pThreadStore->Leave();
+}
+
void ThreadStore::LockThreadStore()
{
WRAPPER_NO_CONTRACT;