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 ...