summaryrefslogtreecommitdiff
path: root/src/inc/entrypoints.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/inc/entrypoints.h')
-rw-r--r--src/inc/entrypoints.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/inc/entrypoints.h b/src/inc/entrypoints.h
new file mode 100644
index 0000000000..064f4ede29
--- /dev/null
+++ b/src/inc/entrypoints.h
@@ -0,0 +1,60 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+//-----------------------------------------------------------------------------
+// Entrypoint markers
+// Used to identify all external entrypoints into the CLR (via COM, exports, etc)
+// and perform various tasks on all of them
+//-----------------------------------------------------------------------------
+
+
+#ifndef __ENTRYPOINTS_h__
+#define __ENTRYPOINTS_h__
+
+#define BEGIN_ENTRYPOINT_THROWS \
+ BEGIN_SO_INTOLERANT_CODE(GetThread()) \
+
+
+#define END_ENTRYPOINT_THROWS \
+ END_SO_INTOLERANT_CODE;
+
+#define BEGIN_ENTRYPOINT_THROWS_WITH_THREAD(____thread) \
+ BEGIN_SO_INTOLERANT_CODE(____thread) \
+
+#define END_ENTRYPOINT_THROWS_WITH_THREAD \
+ END_SO_INTOLERANT_CODE;
+
+#define BEGIN_ENTRYPOINT_NOTHROW_WITH_THREAD(___thread) \
+ BEGIN_SO_INTOLERANT_CODE_NO_THROW_CHECK_THREAD(return COR_E_STACKOVERFLOW)
+
+#define END_ENTRYPOINT_NOTHROW_WITH_THREAD \
+ END_SO_INTOLERANT_CODE;
+
+#define BEGIN_ENTRYPOINT_NOTHROW \
+ BEGIN_SO_INTOLERANT_CODE_NO_THROW_CHECK_THREAD(return COR_E_STACKOVERFLOW)
+
+#define END_ENTRYPOINT_NOTHROW \
+ END_SO_INTOLERANT_CODE;
+
+extern void (*g_fpHandleSoftStackOverflow)(BOOL fSkipDebugger);
+inline void FailedVoidEntryPoint()
+{
+ if (g_fpHandleSoftStackOverflow)
+ {
+ g_fpHandleSoftStackOverflow(FALSE);
+ }
+}
+#define BEGIN_ENTRYPOINT_VOIDRET \
+ BEGIN_SO_INTOLERANT_CODE_NO_THROW_CHECK_THREAD(FailedVoidEntryPoint();)
+
+#define END_ENTRYPOINT_VOIDRET \
+ END_SO_INTOLERANT_CODE;
+
+#define BEGIN_CLEANUP_ENTRYPOINT \
+ VALIDATE_BACKOUT_STACK_CONSUMPTION;
+
+#define END_CLEANUP_ENTRYPOINT
+
+#endif // __ENTRYPOINTS_h__
+
+