diff options
Diffstat (limited to 'src/vm/i386/excepx86.cpp')
-rw-r--r-- | src/vm/i386/excepx86.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/vm/i386/excepx86.cpp b/src/vm/i386/excepx86.cpp index ca7a18d8c3..6bf26a4790 100644 --- a/src/vm/i386/excepx86.cpp +++ b/src/vm/i386/excepx86.cpp @@ -1945,6 +1945,9 @@ LPVOID STDCALL COMPlusEndCatch(LPVOID ebp, DWORD ebx, DWORD edi, DWORD esi, LPVO STATIC_CONTRACT_MODE_COOPERATIVE; STATIC_CONTRACT_SO_INTOLERANT; + ETW::ExceptionLog::ExceptionCatchEnd(); + ETW::ExceptionLog::ExceptionThrownEnd(); + void* esp = COMPlusEndCatchWorker(GetThread()); // We are going to resume at a handler nesting level whose esp is dEsp. Pop off any SEH records below it. This @@ -3324,6 +3327,8 @@ void ResumeAtJitEH(CrawlFrame* pCf, // that the handle for the current ExInfo has been freed has been delivered pExInfo->m_EHClauseInfo.SetManagedCodeEntered(TRUE); + ETW::ExceptionLog::ExceptionCatchBegin(pCf->GetCodeInfo()->GetMethodDesc(), (PVOID)pCf->GetCodeInfo()->GetStartAddress()); + ResumeAtJitEHHelper(&context); UNREACHABLE_MSG("Should never return from ResumeAtJitEHHelper!"); @@ -3394,8 +3399,13 @@ int CallJitEHFilter(CrawlFrame* pCf, BYTE* startPC, EE_ILEXCEPTION_CLAUSE *EHCla // returning from UnwindFrames. FrameWithCookie<ExceptionFilterFrame> exceptionFilterFrame(pShadowSP); + + ETW::ExceptionLog::ExceptionFilterBegin(pCf->GetCodeInfo()->GetMethodDesc(), (PVOID)pCf->GetCodeInfo()->GetStartAddress()); + retVal = CallJitEHFilterWorker(pShadowSP, &context); + ETW::ExceptionLog::ExceptionFilterEnd(); + exceptionFilterFrame.Pop(); return retVal; @@ -3421,8 +3431,12 @@ void CallJitEHFinally(CrawlFrame* pCf, BYTE* startPC, EE_ILEXCEPTION_CLAUSE *EHC *pFinallyEnd = EHClausePtr->HandlerEndPC; } + ETW::ExceptionLog::ExceptionFinallyBegin(pCf->GetCodeInfo()->GetMethodDesc(), (PVOID)pCf->GetCodeInfo()->GetStartAddress()); + CallJitEHFinallyHelper(pShadowSP, &context); + ETW::ExceptionLog::ExceptionFinallyEnd(); + // // Update the registers using new context // |