diff options
author | Pat Gavlin <pagavlin@microsoft.com> | 2016-05-03 12:58:16 -0700 |
---|---|---|
committer | Pat Gavlin <pagavlin@microsoft.com> | 2016-05-03 12:58:16 -0700 |
commit | 8f71b159a1edb4fbb187bcc95c6e20bc9e2ea4d8 (patch) | |
tree | 5d88aeed51400b36d38af662acff9ad60f3e2703 /src/zap/zapinfo.h | |
parent | adce1932c1138b9e6b48592aa21b6729d4dedcc8 (diff) | |
download | coreclr-8f71b159a1edb4fbb187bcc95c6e20bc9e2ea4d8.tar.gz coreclr-8f71b159a1edb4fbb187bcc95c6e20bc9e2ea4d8.tar.bz2 coreclr-8f71b159a1edb4fbb187bcc95c6e20bc9e2ea4d8.zip |
Remove SEH interactions between the JIT and the EE.
This change replaces the final uses of SEH between the JIT and the EE with a new method
on ICorJitInfo, `ICorJitInfo::runWithErrorTrap`. This method runs a given function under an
error trap that prevents recoverable errors from propagating out of the call. This allows
the JIT to make calls to JIT/EE interface functions that may throw exceptions without
needing to be aware of the EH ABI, exception types, etc. The method returns true if the
given function completed successfully and false otherwise. This change deprecates
all other SEH-related functionality on the JIT/EE interface (e.g. `ICJI::FilterException` and
`ICJI::HandleException`).
This change does not completely eliminate SEH over the JIT/EE interface: there are still a
handful of places where the JIT expects to be able to catch exceptions thrown by
SuperPMI. These uses of SEH will be removed later on.
Fixes #3058 and #4130.
[tfs-changeset: 1601288]
Diffstat (limited to 'src/zap/zapinfo.h')
-rw-r--r-- | src/zap/zapinfo.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/zap/zapinfo.h b/src/zap/zapinfo.h index 7fc93820d2..b472d4870b 100644 --- a/src/zap/zapinfo.h +++ b/src/zap/zapinfo.h @@ -317,6 +317,8 @@ public: DWORD getJitFlags(CORJIT_FLAGS* jitFlags, DWORD sizeInBytes); + bool runWithErrorTrap(void (*function)(void*), void* param); + // ICorDynamicInfo DWORD getThreadTLSIndex(void **ppIndirection); |