summaryrefslogtreecommitdiff
path: root/src/vm/comthreadpool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/vm/comthreadpool.cpp')
-rw-r--r--src/vm/comthreadpool.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/vm/comthreadpool.cpp b/src/vm/comthreadpool.cpp
index 7f629b508b..a4c7e75064 100644
--- a/src/vm/comthreadpool.cpp
+++ b/src/vm/comthreadpool.cpp
@@ -632,6 +632,7 @@ void SetAsyncResultProperties(
STATIC_CONTRACT_MODE_ANY;
STATIC_CONTRACT_SO_TOLERANT;
+#ifndef FEATURE_CORECLR
ASYNCRESULTREF asyncResult = overlapped->m_asyncResult;
// only filestream is expected to have a null delegate in which
// case we do the necessary book-keeping here. However, for robustness
@@ -655,6 +656,7 @@ void SetAsyncResultProperties(
if ((h != NULL) && (h != (HANDLE) -1))
UnsafeSetEvent(h);
}
+#endif // !FEATURE_CORECLR
}
VOID BindIoCompletionCallBack_Worker(LPVOID args)
@@ -663,11 +665,11 @@ VOID BindIoCompletionCallBack_Worker(LPVOID args)
STATIC_CONTRACT_GC_TRIGGERS;
STATIC_CONTRACT_MODE_ANY;
STATIC_CONTRACT_SO_INTOLERANT;
-
+
DWORD ErrorCode = ((BindIoCompletion_Args *)args)->ErrorCode;
DWORD numBytesTransferred = ((BindIoCompletion_Args *)args)->numBytesTransferred;
LPOVERLAPPED lpOverlapped = ((BindIoCompletion_Args *)args)->lpOverlapped;
-
+
OVERLAPPEDDATAREF overlapped = ObjectToOVERLAPPEDDATAREF(OverlappedDataObject::GetOverlapped(lpOverlapped));
GCPROTECT_BEGIN(overlapped);
@@ -682,7 +684,7 @@ VOID BindIoCompletionCallBack_Worker(LPVOID args)
if (overlapped->m_iocb != NULL)
{
// Caution: the args are not protected, we have to garantee there's no GC from here till
- PREPARE_NONVIRTUAL_CALLSITE(METHOD__IOCB_HELPER__PERFORM_IOCOMPLETION_CALLBACK);
+ PREPARE_NONVIRTUAL_CALLSITE(METHOD__IOCB_HELPER__PERFORM_IOCOMPLETION_CALLBACK);
DECLARE_ARGHOLDER_ARRAY(arg, 3);
arg[ARGNUM_0] = DWORD_TO_ARGHOLDER(ErrorCode);
arg[ARGNUM_1] = DWORD_TO_ARGHOLDER(numBytesTransferred);
@@ -692,21 +694,23 @@ VOID BindIoCompletionCallBack_Worker(LPVOID args)
CALL_MANAGED_METHOD_NORET(arg);
}
else
- { // no user delegate to callback
+ {
+ // no user delegate to callback
_ASSERTE((overlapped->m_iocbHelper == NULL) || !"This is benign, but should be optimized");
+#ifndef FEATURE_CORECLR
// we cannot do this at threadpool initialization time since mscorlib may not have been loaded
if (!g_pAsyncFileStream_AsyncResultClass)
{
g_pAsyncFileStream_AsyncResultClass = MscorlibBinder::GetClass(CLASS__FILESTREAM_ASYNCRESULT);
}
+#endif // !FEATURE_CORECLR
SetAsyncResultProperties(overlapped, ErrorCode, numBytesTransferred);
}
GCPROTECT_END();
}
-
void __stdcall BindIoCompletionCallbackStubEx(DWORD ErrorCode,
DWORD numBytesTransferred,
LPOVERLAPPED lpOverlapped,
@@ -769,9 +773,6 @@ void __stdcall BindIoCompletionCallbackStubEx(DWORD ErrorCode,
ManagedThreadBase::ThreadPool(ADID(overlapped->GetAppDomainId()), BindIoCompletionCallBack_Worker, &args);
}
-
-
-
LOG((LF_INTEROP, LL_INFO10000, "Leaving IO_CallBackStub thread 0x%x retCode 0x%x, overlap 0x%x\n", pThread, ErrorCode, lpOverlapped));
// We should have released all locks.
_ASSERTE(g_fEEShutDown || pThread->m_dwLockCount == 0 || pThread->m_fRudeAborted);