; Licensed to the .NET Foundation under one or more agreements.
; The .NET Foundation licenses this file to you under the MIT license.
;
; Thunk generator input file for generating the thunks from the C++ version of the
; jit interface to COM, into managed, and from COM to C++.
;
; The format of this file is as follows.
; There are NORMALTYPES, RETURNTYPES, and FUNCTIONS regions
;  In the NORMALTYPES/RETURNTYPES region, each type is described. If a type is
;  described in the NORMALTYPES section, but isn't described in the RETURNTYPES section
;  then the NORMALTYPES description can be used for a return value.
;
; TYPES have three fields
; ThunkDescriptionType,ManagedType,NativeType,NativeType2
;   If either ManagedType, NativeType, or NativeType2 are missing, then that form is replaced with ThunkDescriptionType.
;   NativeType is used for representing the type in headers which do not include the PAL and corinfo.h
;   NativeType2 is used for representing the type in headers that are fully integrated with the PAL
;   This feature allows reduction in type for enums and other types where the same type can be used in managed an native
;
;  Specification of a custom native type is done to allow multiple translations of the same native type to managed.
;  i.e.
;  REFIntPointer,ref int *,int**
;  and
;  PointerToIntPointer,int**,int**
;
; Following the TYPES sections, there is the FUNCTIONS section
; Each function that is to be part of the interface is written here. The format is basically the C++ format
; without support for inline comments or sal annotations.
;
; Also, note that an empty line is ignored, and a line that begins with a ; is ignored.
;
; If the boilerplate around the individual functions needs adjustment, edit the thunk generator source code, and
;    rebuild with rebuildthunkgen.cmd in the ThunkGenerator subdir, then rebuildthunks.cmd
; If this file is editted, rebuild with gen.cmd -- DO NOT RUN from within a razzle window.
;
NORMALTYPES
void
void*
const void *,void*
JITINTERFACE_HRESULT,HRESULT
size_t*,UIntPtr*
int
int32_t,int
uint32_t,uint
unsigned,uint
unsigned int, uint
size_t,UIntPtr
uint16_t,ushort
bool,[MarshalAs(UnmanagedType.I1)]bool
const char *,byte*
mdMethodDef,mdToken
mdToken,,unsigned int
uint8_t*,byte*
uint8_t**,byte**
GSCookie*,IntPtr*
GSCookie**,IntPtr**

bool*,ref bool
BoolStar,byte*,bool*,bool*
uint32_t*,ref uint
void **,ref void*
VOIDSTARSTAR,void **,void **,void **
int32_t*,int*
uint16_t*,ushort*
char*,byte*
const char**,byte**
char16_t**,char**
char16_t *,char*
const char16_t *,char*
wchar_t*,char*
const wchar_t*,String

uint32_t**,ref uint*
unsigned*,ref uint
CORJIT_FLAGS*,ref CORJIT_FLAGS
CORINFO_CONST_LOOKUP*,ref CORINFO_CONST_LOOKUP
CORINFO_LOOKUP*,ref CORINFO_LOOKUP
CORINFO_LOOKUP_KIND*,ref CORINFO_LOOKUP_KIND
CORINFO_EH_CLAUSE*,ref CORINFO_EH_CLAUSE
const CORINFO_EH_CLAUSE*,ref CORINFO_EH_CLAUSE
CORINFO_SIG_INFO*
CORINFO_RESOLVED_TOKEN*,ref CORINFO_RESOLVED_TOKEN
CORINFO_RESOLVED_TOKEN_PTR,CORINFO_RESOLVED_TOKEN*,CORINFO_RESOLVED_TOKEN*,CORINFO_RESOLVED_TOKEN*
CORINFO_EE_INFO*,ref CORINFO_EE_INFO
CORINFO_TAILCALL_HELPERS*,ref CORINFO_TAILCALL_HELPERS
CORINFO_GENERICHANDLE_RESULT*,ref CORINFO_GENERICHANDLE_RESULT
CORINFO_METHOD_INFO*,CORINFO_METHOD_INFO*
CORINFO_FIELD_INFO*,CORINFO_FIELD_INFO*
CORINFO_THREAD_STATIC_BLOCKS_INFO*,CORINFO_THREAD_STATIC_BLOCKS_INFO*
CORINFO_CALL_INFO*,CORINFO_CALL_INFO*
CORINFO_DEVIRTUALIZATION_INFO*,CORINFO_DEVIRTUALIZATION_INFO*
CORINFO_TYPE_LAYOUT_NODE*,CORINFO_TYPE_LAYOUT_NODE*
PatchpointInfo*
DelegateCtorArgs*,ref DelegateCtorArgs
ICorDynamicInfo*,IntPtr
va_list,IntPtr
CORINFO_HELPER_DESC*,ref CORINFO_HELPER_DESC
const CORINFO_HELPER_DESC*,ref CORINFO_HELPER_DESC
int*,ref int
unsigned int*,ref uint

CORINFO_JUST_MY_CODE_HANDLE**,ref CORINFO_JUST_MY_CODE_HANDLE_*

ICorJitInfo::PgoInstrumentationSchema**,ref PgoInstrumentationSchema*
ICorJitInfo::PgoInstrumentationSchema*,PgoInstrumentationSchema*
AllocMemArgs*, ref AllocMemArgs

; Enums
CorInfoClassId
CorInfoHelpFunc
CorInfoInitClassResult
CorInfoInlineTypeCheck
CorInfoInlineTypeCheckSource
CorInfoInline
CorInfoArrayIntrinsic
CorInfoIsAccessAllowedResult
CorInfoMethodRuntimeFlags
CorInfoTailCall
CorInfoType
CorInfoHFAElemType
CorInfoTypeWithMod
CorInfoCallConvExtension
InfoAccessType
InfoAccessType*, ref InfoAccessType
CORINFO_LOOKUP_KIND
CORINFO_ACCESS_FLAGS
CORINFO_CALLINFO_FLAGS
CORINFO_GET_TAILCALL_HELPERS_FLAGS
CorJitAllocMemFlag
CorJitFuncKind
CorJitResult
TypeCompareState
CORINFO_InstructionSet,InstructionSet
ICorJitInfo::PgoSource, PgoSource
ICorJitInfo::PgoSource*, ref PgoSource
GetTypeLayoutResult

; Handle types
CORINFO_MODULE_HANDLE,CORINFO_MODULE_STRUCT_*
CORINFO_METHOD_HANDLE,CORINFO_METHOD_STRUCT_*
CORINFO_FIELD_HANDLE,CORINFO_FIELD_STRUCT_*
CORINFO_OBJECT_HANDLE,CORINFO_OBJECT_STRUCT_*
CORINFO_CLASS_HANDLE,CORINFO_CLASS_STRUCT_*
CORINFO_ASSEMBLY_HANDLE,CORINFO_ASSEMBLY_STRUCT_*
CORINFO_JUST_MY_CODE_HANDLE,CORINFO_JUST_MY_CODE_HANDLE_*
CORINFO_MODULE_HANDLE*,CORINFO_MODULE_STRUCT_**
CORINFO_CLASS_HANDLE*,CORINFO_CLASS_STRUCT_**
CORINFO_ARG_LIST_HANDLE,CORINFO_ARG_LIST_STRUCT_*
CORINFO_VARARGS_HANDLE,IntPtr
CORINFO_CONTEXT_HANDLE,CORINFO_CONTEXT_STRUCT*
SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR*,SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR*

ICorDebugInfo::OffsetMapping*,OffsetMapping*
ICorDebugInfo::ILVarInfo**,ILVarInfo**
ICorDebugInfo::NativeVarInfo*,NativeVarInfo*
ICorDebugInfo::BoundaryTypes*,BoundaryTypes*
ICorDebugInfo::InlineTreeNode*,InlineTreeNode*
ICorDebugInfo::RichOffsetMapping*,RichOffsetMapping*

struct _EXCEPTION_POINTERS*,_EXCEPTION_POINTERS*
ICorJitInfo::errorTrapFunction,void*

FUNCTIONS
    bool isIntrinsic(        CORINFO_METHOD_HANDLE       ftn        );
    uint32_t getMethodAttribs(        CORINFO_METHOD_HANDLE       ftn        );
    void setMethodAttribs(        CORINFO_METHOD_HANDLE       ftn,        CorInfoMethodRuntimeFlags   attribs        );
    void getMethodSig(        CORINFO_METHOD_HANDLE      ftn,        CORINFO_SIG_INFO          *sig,        CORINFO_CLASS_HANDLE      memberParent         );
    bool getMethodInfo(CORINFO_METHOD_HANDLE ftn, CORINFO_METHOD_INFO* info, CORINFO_CONTEXT_HANDLE context);
    bool haveSameMethodDefinition(CORINFO_METHOD_HANDLE meth1Hnd, CORINFO_METHOD_HANDLE meth2Hnd);
    CorInfoInline canInline(        CORINFO_METHOD_HANDLE       callerHnd,        CORINFO_METHOD_HANDLE       calleeHnd);
    void beginInlining(CORINFO_METHOD_HANDLE inlinerHnd,        CORINFO_METHOD_HANDLE inlineeHnd);
    void reportInliningDecision(CORINFO_METHOD_HANDLE inlinerHnd,        CORINFO_METHOD_HANDLE inlineeHnd,        CorInfoInline inlineResult,        const char * reason);
    bool canTailCall(        CORINFO_METHOD_HANDLE   callerHnd,        CORINFO_METHOD_HANDLE   declaredCalleeHnd,        CORINFO_METHOD_HANDLE   exactCalleeHnd,        bool fIsTailPrefix        );
    void reportTailCallDecision(CORINFO_METHOD_HANDLE callerHnd,        CORINFO_METHOD_HANDLE calleeHnd,        bool fIsTailPrefix,        CorInfoTailCall tailCallResult,        const char * reason);
    void getEHinfo(        CORINFO_METHOD_HANDLE ftn,        unsigned          EHnumber,        CORINFO_EH_CLAUSE* clause        );
    CORINFO_CLASS_HANDLE getMethodClass(        CORINFO_METHOD_HANDLE       method        );
    void getMethodVTableOffset(        CORINFO_METHOD_HANDLE       method,        unsigned*                   offsetOfIndirection,        unsigned*                   offsetAfterIndirection, bool*                       isRelative);
    bool resolveVirtualMethod(CORINFO_DEVIRTUALIZATION_INFO* info);
    CORINFO_METHOD_HANDLE getUnboxedEntry(CORINFO_METHOD_HANDLE ftn, bool* requiresInstMethodTableArg);
    CORINFO_CLASS_HANDLE getDefaultComparerClass(CORINFO_CLASS_HANDLE elemType);
    CORINFO_CLASS_HANDLE getDefaultEqualityComparerClass(CORINFO_CLASS_HANDLE elemType);
    void expandRawHandleIntrinsic(CORINFO_RESOLVED_TOKEN *        pResolvedToken, CORINFO_GENERICHANDLE_RESULT *  pResult);
    bool isIntrinsicType(           CORINFO_CLASS_HANDLE        classHnd );
    CorInfoCallConvExtension getUnmanagedCallConv(            CORINFO_METHOD_HANDLE       method,            CORINFO_SIG_INFO*           callSiteSig, bool* pSuppressGCTransition);
    bool pInvokeMarshalingRequired(        CORINFO_METHOD_HANDLE       method,        CORINFO_SIG_INFO*           callSiteSig        );
    bool satisfiesMethodConstraints(        CORINFO_CLASS_HANDLE        parent,        CORINFO_METHOD_HANDLE       method        );
    void methodMustBeLoadedBeforeCodeIsRun(        CORINFO_METHOD_HANDLE       method        );
    CORINFO_METHOD_HANDLE mapMethodDeclToMethodImpl(        CORINFO_METHOD_HANDLE       method        );
    void getGSCookie(        GSCookie * pCookieVal,        GSCookie ** ppCookieVal        );
    void setPatchpointInfo(PatchpointInfo* patchpointInfo);
    PatchpointInfo* getOSRInfo(unsigned * ilOffset);
    void resolveToken(CORINFO_RESOLVED_TOKEN * pResolvedToken);
    void findSig(        CORINFO_MODULE_HANDLE       module,        unsigned                    sigTOK,        CORINFO_CONTEXT_HANDLE      context,        CORINFO_SIG_INFO           *sig        );
    void findCallSiteSig(        CORINFO_MODULE_HANDLE       module,unsigned                    methTOK,        CORINFO_CONTEXT_HANDLE      context,        CORINFO_SIG_INFO   *sig)
    CORINFO_CLASS_HANDLE getTokenTypeAsHandle(CORINFO_RESOLVED_TOKEN* pResolvedToken)
    int getStringLiteral(CORINFO_MODULE_HANDLE module, unsigned metaTOK, char16_t* buffer, int bufferSize, int startIndex)
    size_t printObjectDescription(CORINFO_OBJECT_HANDLE handle, char* buffer, size_t bufferSize, size_t* pRequiredBufferSize)
    CorInfoType asCorInfoType(CORINFO_CLASS_HANDLE cls)
    const char* getClassNameFromMetadata(CORINFO_CLASS_HANDLE cls, const char **namespaceName)
    CORINFO_CLASS_HANDLE getTypeInstantiationArgument(CORINFO_CLASS_HANDLE cls, unsigned index)
    size_t printClassName(CORINFO_CLASS_HANDLE cls, char* buffer, size_t bufferSize, size_t* pRequiredBufferSize)
    bool isValueClass(CORINFO_CLASS_HANDLE cls)
    CorInfoInlineTypeCheck canInlineTypeCheck(CORINFO_CLASS_HANDLE cls, CorInfoInlineTypeCheckSource source)
    uint32_t getClassAttribs(CORINFO_CLASS_HANDLE cls)
    CORINFO_MODULE_HANDLE getClassModule(CORINFO_CLASS_HANDLE cls)
    CORINFO_ASSEMBLY_HANDLE getModuleAssembly(CORINFO_MODULE_HANDLE mod)
    const char* getAssemblyName(CORINFO_ASSEMBLY_HANDLE assem)
    void* LongLifetimeMalloc(size_t sz)
    void LongLifetimeFree(void* obj)
    size_t getClassModuleIdForStatics(CORINFO_CLASS_HANDLE cls, CORINFO_MODULE_HANDLE* pModule, VOIDSTARSTAR ppIndirection)
    bool getIsClassInitedFlagAddress(CORINFO_CLASS_HANDLE cls, CORINFO_CONST_LOOKUP* addr, int* offset)
    bool getStaticBaseAddress(CORINFO_CLASS_HANDLE cls, bool isGc, CORINFO_CONST_LOOKUP* addr)
    unsigned getClassSize(CORINFO_CLASS_HANDLE cls)
    unsigned getHeapClassSize(CORINFO_CLASS_HANDLE        cls)
    bool canAllocateOnStack(CORINFO_CLASS_HANDLE cls)
    unsigned getClassAlignmentRequirement(CORINFO_CLASS_HANDLE cls, bool fDoubleAlignHint)
    unsigned getClassGClayout(CORINFO_CLASS_HANDLE cls, uint8_t* gcPtrs)
    unsigned getClassNumInstanceFields(CORINFO_CLASS_HANDLE cls)
    CORINFO_FIELD_HANDLE getFieldInClass(CORINFO_CLASS_HANDLE clsHnd, int32_t num)
    GetTypeLayoutResult getTypeLayout(CORINFO_CLASS_HANDLE typeHnd, CORINFO_TYPE_LAYOUT_NODE* treeNodes, size_t* numTreeNodes)
    bool checkMethodModifier(CORINFO_METHOD_HANDLE hMethod, const char * modifier, bool fOptional)
    CorInfoHelpFunc getNewHelper(CORINFO_CLASS_HANDLE classHandle, bool* pHasSideEffects)
    CorInfoHelpFunc getNewArrHelper(CORINFO_CLASS_HANDLE arrayCls)
    CorInfoHelpFunc getCastingHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, bool fThrowing)
    CorInfoHelpFunc getSharedCCtorHelper(CORINFO_CLASS_HANDLE clsHnd)
    CORINFO_CLASS_HANDLE getTypeForBox(CORINFO_CLASS_HANDLE cls)
    CorInfoHelpFunc getBoxHelper(CORINFO_CLASS_HANDLE cls)
    CorInfoHelpFunc getUnBoxHelper(CORINFO_CLASS_HANDLE cls)
    CORINFO_OBJECT_HANDLE getRuntimeTypePointer(CORINFO_CLASS_HANDLE cls)
    bool isObjectImmutable(CORINFO_OBJECT_HANDLE objPtr)
    bool getStringChar(CORINFO_OBJECT_HANDLE strObj, int index, uint16_t* value);
    CORINFO_CLASS_HANDLE getObjectType(CORINFO_OBJECT_HANDLE objPtr)
    bool getReadyToRunHelper(CORINFO_RESOLVED_TOKEN * pResolvedToken, CORINFO_LOOKUP_KIND * pGenericLookupKind, CorInfoHelpFunc id, CORINFO_CONST_LOOKUP *pLookup)
    void getReadyToRunDelegateCtorHelper(CORINFO_RESOLVED_TOKEN * pTargetMethod, mdToken targetConstraint, CORINFO_CLASS_HANDLE delegateType, CORINFO_LOOKUP *pLookup)
    CorInfoInitClassResult initClass(CORINFO_FIELD_HANDLE field, CORINFO_METHOD_HANDLE method, CORINFO_CONTEXT_HANDLE context)
    void classMustBeLoadedBeforeCodeIsRun(CORINFO_CLASS_HANDLE cls)
    CORINFO_CLASS_HANDLE getBuiltinClass(CorInfoClassId classId)
    CorInfoType getTypeForPrimitiveValueClass(CORINFO_CLASS_HANDLE cls)
    CorInfoType getTypeForPrimitiveNumericClass(CORINFO_CLASS_HANDLE cls)
    bool canCast(CORINFO_CLASS_HANDLE child, CORINFO_CLASS_HANDLE parent)
    TypeCompareState compareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass)
    TypeCompareState compareTypesForEquality(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2)
    bool isMoreSpecificType(CORINFO_CLASS_HANDLE        cls1, CORINFO_CLASS_HANDLE        cls2)
    TypeCompareState isEnum(CORINFO_CLASS_HANDLE cls, CORINFO_CLASS_HANDLE* underlyingType)
    CORINFO_CLASS_HANDLE getParentType(CORINFO_CLASS_HANDLE cls)
    CorInfoType getChildType(CORINFO_CLASS_HANDLE clsHnd, CORINFO_CLASS_HANDLE* clsRet)
    bool isSDArray(CORINFO_CLASS_HANDLE cls)
    unsigned getArrayRank(CORINFO_CLASS_HANDLE cls)
    CorInfoArrayIntrinsic getArrayIntrinsicID(CORINFO_METHOD_HANDLE ftn)
    void* getArrayInitializationData(CORINFO_FIELD_HANDLE field, uint32_t size)
    CorInfoIsAccessAllowedResult canAccessClass(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_METHOD_HANDLE callerHandle, CORINFO_HELPER_DESC* pAccessHelper)
    size_t printFieldName(CORINFO_FIELD_HANDLE field, char* buffer, size_t bufferSize, size_t* pRequiredBufferSize)
    CORINFO_CLASS_HANDLE getFieldClass(CORINFO_FIELD_HANDLE field)
    CorInfoType getFieldType(CORINFO_FIELD_HANDLE field, CORINFO_CLASS_HANDLE* structType, CORINFO_CLASS_HANDLE memberParent)
    unsigned getFieldOffset(CORINFO_FIELD_HANDLE field)
    void getFieldInfo(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_METHOD_HANDLE callerHandle, CORINFO_ACCESS_FLAGS flags, CORINFO_FIELD_INFO* pResult)
    uint32_t getThreadLocalFieldInfo (CORINFO_FIELD_HANDLE  field, bool isGCtype)
    void getThreadLocalStaticBlocksInfo (CORINFO_THREAD_STATIC_BLOCKS_INFO* pInfo, bool isGCType)
    bool isFieldStatic(CORINFO_FIELD_HANDLE fldHnd)
    int getArrayOrStringLength(CORINFO_OBJECT_HANDLE objHnd)
    void getBoundaries(CORINFO_METHOD_HANDLE ftn, unsigned int* cILOffsets, uint32_t** pILOffsets, ICorDebugInfo::BoundaryTypes* implicitBoundaries)
    void setBoundaries(CORINFO_METHOD_HANDLE ftn, uint32_t cMap, ICorDebugInfo::OffsetMapping* pMap)
    void getVars(CORINFO_METHOD_HANDLE ftn, uint32_t* cVars, ICorDebugInfo::ILVarInfo** vars, bool* extendOthers)
    void setVars(CORINFO_METHOD_HANDLE ftn, uint32_t cVars, ICorDebugInfo::NativeVarInfo* vars)
    void reportRichMappings(ICorDebugInfo::InlineTreeNode* inlineTreeNodes, uint32_t numInlineTreeNodes, ICorDebugInfo::RichOffsetMapping* mappings, uint32_t numMappings)
    void*allocateArray(size_t cBytes);
    void freeArray(void*array);
    CORINFO_ARG_LIST_HANDLE getArgNext(CORINFO_ARG_LIST_HANDLE args);
    CorInfoTypeWithMod getArgType(CORINFO_SIG_INFO* sig, CORINFO_ARG_LIST_HANDLE args, CORINFO_CLASS_HANDLE* vcTypeRet);
    int getExactClasses(CORINFO_CLASS_HANDLE baseType, int maxExactClasses, CORINFO_CLASS_HANDLE* exactClsRet);
    CORINFO_CLASS_HANDLE getArgClass(CORINFO_SIG_INFO* sig, CORINFO_ARG_LIST_HANDLE args);
    CorInfoHFAElemType getHFAType(CORINFO_CLASS_HANDLE hClass);
    [ManualNativeWrapper] bool runWithErrorTrap(ICorJitInfo::errorTrapFunction function, void* parameter);
    [ManualNativeWrapper] bool runWithSPMIErrorTrap(ICorJitInfo::errorTrapFunction function, void* parameter);
    void getEEInfo(CORINFO_EE_INFO* pEEInfoOut);
    const char16_t * getJitTimeLogFilename();
    mdMethodDef getMethodDefFromMethod(CORINFO_METHOD_HANDLE hMethod);
    size_t printMethodName(CORINFO_METHOD_HANDLE ftn, char* buffer, size_t bufferSize, size_t* pRequiredBufferSize)
    const char* getMethodNameFromMetadata(CORINFO_METHOD_HANDLE ftn, const char **className, const char **namespaceName, const char **enclosingClassName);
    unsigned getMethodHash(CORINFO_METHOD_HANDLE       ftn);
    bool getSystemVAmd64PassStructInRegisterDescriptor(CORINFO_CLASS_HANDLE  structHnd, SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr);
    uint32_t getLoongArch64PassStructInRegisterFlags(CORINFO_CLASS_HANDLE structHnd);
    uint32_t getRISCV64PassStructInRegisterFlags(CORINFO_CLASS_HANDLE structHnd);
    uint32_t getThreadTLSIndex(void                  **ppIndirection);
    int32_t * getAddrOfCaptureThreadGlobal(void                  **ppIndirection);
    void* getHelperFtn (CorInfoHelpFunc         ftnNum, void                  **ppIndirection);
    void getFunctionEntryPoint(CORINFO_METHOD_HANDLE   ftn, CORINFO_CONST_LOOKUP *  pResult, CORINFO_ACCESS_FLAGS accessFlags);
    void getFunctionFixedEntryPoint(CORINFO_METHOD_HANDLE   ftn, bool isUnsafeFunctionPointer, CORINFO_CONST_LOOKUP *  pResult);
    void* getMethodSync(CORINFO_METHOD_HANDLE               ftn, void                  **ppIndirection);
    CorInfoHelpFunc getLazyStringLiteralHelper(CORINFO_MODULE_HANDLE   handle);
    CORINFO_MODULE_HANDLE embedModuleHandle(CORINFO_MODULE_HANDLE   handle, void                  **ppIndirection);
    CORINFO_CLASS_HANDLE embedClassHandle(CORINFO_CLASS_HANDLE    handle, void                  **ppIndirection);
    CORINFO_METHOD_HANDLE embedMethodHandle(CORINFO_METHOD_HANDLE   handle, void                  **ppIndirection);
    CORINFO_FIELD_HANDLE embedFieldHandle(CORINFO_FIELD_HANDLE    handle, void                  **ppIndirection);
    void embedGenericHandle(CORINFO_RESOLVED_TOKEN *        pResolvedToken, bool fEmbedParent, CORINFO_GENERICHANDLE_RESULT *  pResult);
    void getLocationOfThisType(CORINFO_METHOD_HANDLE context, CORINFO_LOOKUP_KIND* pLookupKind);
    void getAddressOfPInvokeTarget(CORINFO_METHOD_HANDLE   method, CORINFO_CONST_LOOKUP *pLookup);
    void* GetCookieForPInvokeCalliSig(CORINFO_SIG_INFO* szMetaSig, void           ** ppIndirection);
    bool canGetCookieForPInvokeCalliSig(CORINFO_SIG_INFO* szMetaSig);
    CORINFO_JUST_MY_CODE_HANDLE getJustMyCodeHandle(CORINFO_METHOD_HANDLE       method, CORINFO_JUST_MY_CODE_HANDLE**ppIndirection);
    void GetProfilingHandle(bool* pbHookFunction, void **pProfilerHandle, bool* pbIndirectedHandles);
    void getCallInfo(CORINFO_RESOLVED_TOKEN * pResolvedToken, CORINFO_RESOLVED_TOKEN_PTR pConstrainedResolvedToken, CORINFO_METHOD_HANDLE   callerHandle, CORINFO_CALLINFO_FLAGS  flags, CORINFO_CALL_INFO       *pResult);
    unsigned getClassDomainID (CORINFO_CLASS_HANDLE    cls, void                  **ppIndirection);
    bool getStaticFieldContent(CORINFO_FIELD_HANDLE field, uint8_t *buffer, int bufferSize, int valueOffset, bool ignoreMovableObjects);
    bool getObjectContent(CORINFO_OBJECT_HANDLE obj, uint8_t *buffer, int bufferSize, int valueOffset);
    CORINFO_CLASS_HANDLE getStaticFieldCurrentClass(CORINFO_FIELD_HANDLE    field,  BoolStar pIsSpeculative);
    CORINFO_VARARGS_HANDLE getVarArgsHandle(CORINFO_SIG_INFO       *pSig, void                  **ppIndirection);
    bool canGetVarArgsHandle(CORINFO_SIG_INFO       *pSig);
    InfoAccessType constructStringLiteral(CORINFO_MODULE_HANDLE   module, mdToken                 metaTok, void                  **ppValue);
    InfoAccessType emptyStringLiteral(void                  **ppValue);
    uint32_t getFieldThreadLocalStoreID (CORINFO_FIELD_HANDLE    field, void                  **ppIndirection);
    CORINFO_METHOD_HANDLE GetDelegateCtor(CORINFO_METHOD_HANDLE  methHnd, CORINFO_CLASS_HANDLE   clsHnd, CORINFO_METHOD_HANDLE  targetMethodHnd, DelegateCtorArgs *     pCtorData);
    void MethodCompileComplete(CORINFO_METHOD_HANDLE methHnd);
    bool getTailCallHelpers(CORINFO_RESOLVED_TOKEN* callToken, CORINFO_SIG_INFO* sig, CORINFO_GET_TAILCALL_HELPERS_FLAGS flags, CORINFO_TAILCALL_HELPERS* pResult);
    bool convertPInvokeCalliToCall(CORINFO_RESOLVED_TOKEN * pResolvedToken, bool mustConvert);
    bool notifyInstructionSetUsage(CORINFO_InstructionSet instructionSet,bool supportEnabled);
    void updateEntryPointForTailCall(CORINFO_CONST_LOOKUP* entryPoint);
    void allocMem(AllocMemArgs* pArgs);
    void reserveUnwindInfo(bool isFunclet, bool isColdCode, uint32_t unwindSize)
    void allocUnwindInfo(uint8_t* pHotCode, uint8_t* pColdCode, uint32_t startOffset, uint32_t endOffset, uint32_t unwindSize, uint8_t* pUnwindBlock, CorJitFuncKind funcKind)
    void* allocGCInfo(size_t size)
    void setEHcount(unsigned cEH)
    void setEHinfo(unsigned EHnumber, const CORINFO_EH_CLAUSE* clause)
    bool logMsg(unsigned level, const char* fmt, va_list args)
    int doAssert(const char* szFile, int iLine, const char* szExpr)
    void reportFatalError(CorJitResult result)
    JITINTERFACE_HRESULT getPgoInstrumentationResults(CORINFO_METHOD_HANDLE ftnHnd, ICorJitInfo::PgoInstrumentationSchema** pSchema, uint32_t* pCountSchemaItems, uint8_t**pInstrumentationData, ICorJitInfo::PgoSource* pgoSource)
    JITINTERFACE_HRESULT allocPgoInstrumentationBySchema(CORINFO_METHOD_HANDLE ftnHnd, ICorJitInfo::PgoInstrumentationSchema* pSchema, uint32_t countSchemaItems, uint8_t** pInstrumentationData)
    void recordCallSite(uint32_t instrOffset, CORINFO_SIG_INFO* callSig, CORINFO_METHOD_HANDLE methodHandle)
    void recordRelocation(void* location, void* locationRW, void* target, uint16_t fRelocType, int32_t addlDelta)
    uint16_t getRelocTypeHint(void* target)
    uint32_t getExpectedTargetArchitecture()
    uint32_t getJitFlags(CORJIT_FLAGS* flags, uint32_t  sizeInBytes)
