summaryrefslogtreecommitdiff
path: root/src/inc/entrypoints.h
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2016-11-23 10:09:09 (GMT)
committerJiyoung Yun <jy910.yun@samsung.com>2016-11-23 10:09:09 (GMT)
commit4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch)
tree98110734c91668dfdbb126fcc0e15ddbd93738ca /src/inc/entrypoints.h
parentfa45f57ed55137c75ac870356a1b8f76c84b229c (diff)
downloadcoreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip
coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz
coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2
Imported Upstream version 1.1.0upstream/1.1.0
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 0000000..064f4ed
--- /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__
+
+