Execution Engine Macros
-
BEGIN_FORBID -
ENDFORBID Defined in
clr/src/vm/threads.h, these macros bracket code in which garbage collection is forbidden. They are activated in debug-enabled builds only.-
COMPlusThrow This macro, defined in
clr/src/vm/exceptmacros.h, is used to throw exceptions from within execution engine code.-
COMPLUS_TRY -
COMPLUS_CATCH -
COMPLUS_END_CATCH -
COMPLUS_FINALLY -
COMPLUS_END_FINALLY These macros wrap the
PAL_TRYfamily of macros with additional code that maintains internal execution engine data structures. In particular, these protect the integrity of the frame chain. They are defined inclr/src/vm/exceptmacros.h.-
EE_TRY_FOR_FINALLY -
EE_FINALLY -
EE_END_FINALLY This is a simplified version of the
COMPLUS_TRYmacro that supports only finally clauses. (COMPLUS_TRYsupports both catch and finally clauses.) It is defined inclr/src/vm/exceptmacros.h.-
FCDECL* -
FCIMPL* The macros from this large series, defined and documented in
clr/src/vm/fcall.h, are used to declare and implement FCalls. Platform-to-platform differences in FCall calling conventions are encapsulated inside these macros.-
FCThrow This macro is used to throw exceptions from within FCall implementations when a helper frame is not erected for the FCall. (
COMPlusThrowwould be used to throw exceptions if a helper frame were erected.) It is defined inclr/src/vm/frames.h.-
GCPROTECT_BEGIN -
GCPROTECT_ARRAY_BEGIN -
GCPROTECT_BEGININTERIOR -
GCPROTECT_END This series of macros is used to mark memory locations ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access