summaryrefslogtreecommitdiff
path: root/src/zap/zapinfo.h
diff options
context:
space:
mode:
authorPat Gavlin <pagavlin@microsoft.com>2016-05-03 12:58:16 -0700
committerPat Gavlin <pagavlin@microsoft.com>2016-05-03 12:58:16 -0700
commit8f71b159a1edb4fbb187bcc95c6e20bc9e2ea4d8 (patch)
tree5d88aeed51400b36d38af662acff9ad60f3e2703 /src/zap/zapinfo.h
parentadce1932c1138b9e6b48592aa21b6729d4dedcc8 (diff)
downloadcoreclr-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.h2
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);