; 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 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*,void*
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*
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_CALL_INFO*,CORINFO_CALL_INFO*
CORINFO_DEVIRTUALIZATION_INFO*,CORINFO_DEVIRTUALIZATION_INFO*
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
CorInfoIntrinsics
CorInfoIsAccessAllowedResult
CorInfoMethodRuntimeFlags
CorInfoTailCall
CorInfoType
CorInfoHFAElemType
CorInfoTypeWithMod
CorInfoCallConvExtension
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

; Handle types
CORINFO_MODULE_HANDLE,CORINFO_MODULE_STRUCT_*
CORINFO_METHOD_HANDLE,CORINFO_METHOD_STRUCT_*
CORINFO_FIELD_HANDLE,CORINFO_FIELD_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*

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

FUNCTIONS
    bool isJitIntrinsic(        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        );
    CorInfoInline canInline(        CORINFO_METHOD_HANDLE       callerHnd,        CORINFO_METHOD_HANDLE       calleeHnd,        uint32_t*                      pRestrictions        );
    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        );
    CORINFO_MODULE_HANDLE getMethodModule(        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);
    CorInfoIntrinsics getIntrinsicID(        CORINFO_METHOD_HANDLE       method        , BoolStar pMustExpand);
    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        );
    bool isCompatibleDelegate(        CORINFO_CLASS_HANDLE        objCls,        CORINFO_CLASS_HANDLE        methodParentCls,        CORINFO_METHOD_HANDLE       method,        CORINFO_CLASS_HANDLE        delegateCls,        bool                        *pfIsOpenDelegate        );
    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);
    bool tryResolveToken(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)
    bool isValidToken(CORINFO_MODULE_HANDLE module, unsigned metaTOK)
    bool isValidStringRef(CORINFO_MODULE_HANDLE module, unsigned metaTOK)
    const char16_t * getStringLiteral(CORINFO_MODULE_HANDLE module, unsigned metaTOK, int* length)
    CorInfoType asCorInfoType(CORINFO_CLASS_HANDLE cls)
    const char* getClassName(CORINFO_CLASS_HANDLE cls)
    const char* getClassNameFromMetadata(CORINFO_CLASS_HANDLE cls, const char **namespaceName)
    CORINFO_CLASS_HANDLE getTypeInstantiationArgument(CORINFO_CLASS_HANDLE cls, unsigned index)
    int appendClassName(char16_t** ppBuf, int* pnBufLen, CORINFO_CLASS_HANDLE cls, bool fNamespace, bool fFullInst, bool fAssembly)
    bool isValueClass(CORINFO_CLASS_HANDLE cls)
    CorInfoInlineTypeCheck canInlineTypeCheck(CORINFO_CLASS_HANDLE cls, CorInfoInlineTypeCheckSource source)
    uint32_t getClassAttribs(CORINFO_CLASS_HANDLE cls)
    bool isStructRequiringStackAllocRetBuf(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)
    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)
    bool checkMethodModifier(CORINFO_METHOD_HANDLE hMethod, const char * modifier, bool fOptional)
    CorInfoHelpFunc getNewHelper(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_METHOD_HANDLE callerHandle, 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)
    bool getReadyToRunHelper(CORINFO_RESOLVED_TOKEN * pResolvedToken, CORINFO_LOOKUP_KIND * pGenericLookupKind, CorInfoHelpFunc id, CORINFO_CONST_LOOKUP *pLookup)
    void getReadyToRunDelegateCtorHelper(CORINFO_RESOLVED_TOKEN * pTargetMethod, CORINFO_CLASS_HANDLE delegateType, CORINFO_LOOKUP *pLookup)
    const char* getHelperName(CorInfoHelpFunc helpFunc)
    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)
    bool areTypesEquivalent(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2)
    TypeCompareState compareTypesForCast(CORINFO_CLASS_HANDLE fromClass, CORINFO_CLASS_HANDLE toClass)
    TypeCompareState compareTypesForEquality(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2)
    CORINFO_CLASS_HANDLE mergeClasses(CORINFO_CLASS_HANDLE cls1, CORINFO_CLASS_HANDLE cls2)
    bool isMoreSpecificType(CORINFO_CLASS_HANDLE        cls1, CORINFO_CLASS_HANDLE        cls2)
    CORINFO_CLASS_HANDLE getParentType(CORINFO_CLASS_HANDLE cls)
    CorInfoType getChildType(CORINFO_CLASS_HANDLE clsHnd, CORINFO_CLASS_HANDLE* clsRet)
    bool satisfiesClassConstraints(CORINFO_CLASS_HANDLE cls)
    bool isSDArray(CORINFO_CLASS_HANDLE cls)
    unsigned getArrayRank(CORINFO_CLASS_HANDLE cls)
    void* getArrayInitializationData(CORINFO_FIELD_HANDLE field, uint32_t size)
    CorInfoIsAccessAllowedResult canAccessClass(CORINFO_RESOLVED_TOKEN* pResolvedToken, CORINFO_METHOD_HANDLE callerHandle, CORINFO_HELPER_DESC* pAccessHelper)
    const char* getFieldName(CORINFO_FIELD_HANDLE ftn, const char** moduleName)
    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)
    bool isFieldStatic(CORINFO_FIELD_HANDLE fldHnd)
    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*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);
    CORINFO_CLASS_HANDLE getArgClass(CORINFO_SIG_INFO* sig, CORINFO_ARG_LIST_HANDLE args);
    CorInfoHFAElemType getHFAType(CORINFO_CLASS_HANDLE hClass);
    JITINTERFACE_HRESULT GetErrorHRESULT(struct _EXCEPTION_POINTERS *pExceptionPointers);
    uint32_t GetErrorMessage(char16_t * buffer, uint32_t bufferLength);
    [ManualNativeWrapper] int FilterException(struct _EXCEPTION_POINTERS* pExceptionPointers);
    void ThrowExceptionForJitResult(JITINTERFACE_HRESULT result);
    void ThrowExceptionForHelper(const CORINFO_HELPER_DESC* throwHelper);
    [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);
    const char* getMethodName(CORINFO_METHOD_HANDLE ftn, const char **moduleName);
    const char* getMethodNameFromMetadata(CORINFO_METHOD_HANDLE ftn, const char **className, const char **namespaceName, const char **enclosingClassName);
    unsigned getMethodHash(CORINFO_METHOD_HANDLE       ftn);
    size_t findNameOfToken(CORINFO_MODULE_HANDLE       moduleHandle,mdToken                     token, char * szFQName,size_t FQNameCapacity);
    bool getSystemVAmd64PassStructInRegisterDescriptor(CORINFO_CLASS_HANDLE  structHnd, SYSTEMV_AMD64_CORINFO_STRUCT_REG_PASSING_DESCRIPTOR* structPassInRegDescPtr);
    uint32_t getThreadTLSIndex(void                  **ppIndirection);
    const void * getInlinedCallFrameVptr(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, 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);
    bool canAccessFamily(CORINFO_METHOD_HANDLE hCaller, CORINFO_CLASS_HANDLE hInstanceType);
    bool isRIDClassDomainID(CORINFO_CLASS_HANDLE cls);
    unsigned getClassDomainID (CORINFO_CLASS_HANDLE    cls, void                  **ppIndirection);
    void* getFieldAddress(CORINFO_FIELD_HANDLE    field, VOIDSTARSTAR ppIndirection);
    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);
    void setOverride(ICorDynamicInfo             *pOverride, CORINFO_METHOD_HANDLE       currentMethod);
    void addActiveDependency(CORINFO_MODULE_HANDLE       moduleFrom, CORINFO_MODULE_HANDLE       moduleTo);
    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 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, uint16_t slotNum, int32_t addlDelta)
    uint16_t getRelocTypeHint(void* target)
    uint32_t getExpectedTargetArchitecture()
    uint32_t getJitFlags(CORJIT_FLAGS* flags, uint32_t  sizeInBytes)
    bool doesFieldBelongToClass(CORINFO_FIELD_HANDLE fldHnd, CORINFO_CLASS_HANDLE cls)
