diff options
Diffstat (limited to 'src/inc/entrypoints.h')
-rw-r--r-- | src/inc/entrypoints.h | 60 |
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__ + + |