diff options
Diffstat (limited to 'src/vm/comthreadpool.cpp')
-rw-r--r-- | src/vm/comthreadpool.cpp | 17 |
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); |