diff --git a/src/coreclr/inc/corcompile.h b/src/coreclr/inc/corcompile.h index 472b0973664a63..16b688eaa57e2e 100644 --- a/src/coreclr/inc/corcompile.h +++ b/src/coreclr/inc/corcompile.h @@ -99,82 +99,6 @@ enum CORCOMPILE_GCREFMAP_TOKENS GCREFMAP_VASIG_COOKIE = 5, }; -// Tags for fixup blobs -enum CORCOMPILE_FIXUP_BLOB_KIND -{ - ENCODE_NONE = 0, - - ENCODE_MODULE_OVERRIDE = 0x80, /* When the high bit is set, override of the module immediately follows */ - - ENCODE_DICTIONARY_LOOKUP_THISOBJ = 0x07, - ENCODE_DICTIONARY_LOOKUP_TYPE = 0x08, - ENCODE_DICTIONARY_LOOKUP_METHOD = 0x09, - - ENCODE_TYPE_HANDLE = 0x10, /* Type handle */ - ENCODE_METHOD_HANDLE, /* Method handle */ - ENCODE_FIELD_HANDLE, /* Field handle */ - - ENCODE_METHOD_ENTRY, /* For calling a method entry point */ - ENCODE_METHOD_ENTRY_DEF_TOKEN, /* Smaller version of ENCODE_METHOD_ENTRY - method is def token */ - ENCODE_METHOD_ENTRY_REF_TOKEN, /* Smaller version of ENCODE_METHOD_ENTRY - method is ref token */ - - ENCODE_VIRTUAL_ENTRY, /* For invoking a virtual method */ - ENCODE_VIRTUAL_ENTRY_DEF_TOKEN, /* Smaller version of ENCODE_VIRTUAL_ENTRY - method is def token */ - ENCODE_VIRTUAL_ENTRY_REF_TOKEN, /* Smaller version of ENCODE_VIRTUAL_ENTRY - method is ref token */ - ENCODE_VIRTUAL_ENTRY_SLOT, /* Smaller version of ENCODE_VIRTUAL_ENTRY - type & slot */ - - ENCODE_READYTORUN_HELPER, /* ReadyToRun helper */ - ENCODE_STRING_HANDLE, /* String token */ - - ENCODE_NEW_HELPER, /* Dynamically created new helpers */ - ENCODE_NEW_ARRAY_HELPER, - - ENCODE_ISINSTANCEOF_HELPER, /* Dynamically created casting helper */ - ENCODE_CHKCAST_HELPER, - - ENCODE_FIELD_ADDRESS, /* For accessing a cross-module static fields */ - ENCODE_CCTOR_TRIGGER, /* Static constructor trigger */ - - ENCODE_STATIC_BASE_NONGC_HELPER, /* Dynamically created static base helpers */ - ENCODE_STATIC_BASE_GC_HELPER, - ENCODE_THREAD_STATIC_BASE_NONGC_HELPER, - ENCODE_THREAD_STATIC_BASE_GC_HELPER, - - ENCODE_FIELD_BASE_OFFSET, /* Field base */ - ENCODE_FIELD_OFFSET, - - ENCODE_TYPE_DICTIONARY, - ENCODE_METHOD_DICTIONARY, - - ENCODE_CHECK_TYPE_LAYOUT, - ENCODE_CHECK_FIELD_OFFSET, - - ENCODE_DELEGATE_CTOR, - - ENCODE_DECLARINGTYPE_HANDLE, - - ENCODE_INDIRECT_PINVOKE_TARGET, /* For calling a pinvoke method ptr indirectly */ - ENCODE_PINVOKE_TARGET, /* For calling a pinvoke method ptr */ - - ENCODE_CHECK_INSTRUCTION_SET_SUPPORT, /* Define the set of instruction sets that must be supported/unsupported to use the fixup */ - - ENCODE_VERIFY_FIELD_OFFSET, /* Used for the R2R compiler can generate a check against the real field offset used at runtime */ - ENCODE_VERIFY_TYPE_LAYOUT, /* Used for the R2R compiler can generate a check against the real type layout used at runtime */ - - ENCODE_CHECK_VIRTUAL_FUNCTION_OVERRIDE, /* Generate a runtime check to ensure that virtual function resolution has equivalent behavior at runtime as at compile time. If not equivalent, code will not be used */ - ENCODE_VERIFY_VIRTUAL_FUNCTION_OVERRIDE, /* Generate a runtime check to ensure that virtual function resolution has equivalent behavior at runtime as at compile time. If not equivalent, generate runtime failure. */ - - ENCODE_CHECK_IL_BODY, /* Check to see if an IL method is defined the same at runtime as at compile time. A failed match will cause code not to be used. */ - ENCODE_VERIFY_IL_BODY, /* Verify an IL body is defined the same at compile time and runtime. A failed match will cause a hard runtime failure. */ - - ENCODE_MODULE_HANDLE = 0x50, /* Module token */ - ENCODE_SYNC_LOCK, /* For synchronizing access to a type */ - ENCODE_PROFILING_HANDLE, /* For the method's profiling counter */ - ENCODE_VARARGS_METHODDEF, /* For calling a varargs method */ - ENCODE_VARARGS_METHODREF, - ENCODE_VARARGS_SIG, -}; - enum EncodeMethodSigFlags { ENCODE_METHOD_SIG_UnboxingStub = 0x01, @@ -194,11 +118,6 @@ enum EncodeFieldSigFlags ENCODE_FIELD_SIG_OwnerType = 0x40, }; -class SBuffer; -class SigBuilder; -class PEDecoder; -class GCRefMapBuilder; - //REVIEW: include for ee exception info #include "eexcp.h" @@ -233,17 +152,4 @@ struct CORCOMPILE_EXCEPTION_CLAUSE }; }; -/*********************************************************************************/ -// When NGEN install /Profile is run, the ZapProfilingHandleImport fixup table contains -// these 5 values per MethodDesc -enum -{ - kZapProfilingHandleImportValueIndexFixup = 0, - kZapProfilingHandleImportValueIndexEnterAddr = 1, - kZapProfilingHandleImportValueIndexLeaveAddr = 2, - kZapProfilingHandleImportValueIndexTailcallAddr = 3, - kZapProfilingHandleImportValueIndexClientData = 4, - - kZapProfilingHandleImportValueIndexCount -}; #endif /* COR_COMPILE_H_ */ diff --git a/src/coreclr/inc/readytorun.h b/src/coreclr/inc/readytorun.h index 61e9f50504c3eb..f4ec387eb46d24 100644 --- a/src/coreclr/inc/readytorun.h +++ b/src/coreclr/inc/readytorun.h @@ -286,6 +286,9 @@ enum ReadyToRunFixupKind READYTORUN_FIXUP_Check_IL_Body = 0x35, /* Check to see if an IL method is defined the same at runtime as at compile time. A failed match will cause code not to be used. */ READYTORUN_FIXUP_Verify_IL_Body = 0x36, /* Verify an IL body is defined the same at compile time and runtime. A failed match will cause a hard runtime failure. */ + + READYTORUN_FIXUP_ModuleOverride = 0x80, /* followed by sig-encoded UInt with assemblyref index into either the assemblyref table of the MSIL metadata of the master context module for the signature or */ + /* into the extra assemblyref table in the manifest metadata R2R header table (used in cases inlining brings in references to assemblies not seen in the MSIL). */ }; // diff --git a/src/coreclr/vm/frames.h b/src/coreclr/vm/frames.h index 361b3c4d291e9c..1a41e5a0d36e8b 100644 --- a/src/coreclr/vm/frames.h +++ b/src/coreclr/vm/frames.h @@ -3072,6 +3072,8 @@ class InterpreterFrame : public FramedMethodFrame #define ASSERT_ADDRESS_IN_STACK(address) _ASSERTE (Thread::IsAddressInCurrentStack (address)); +class GCRefMapBuilder; + void ComputeCallRefMap(MethodDesc* pMD, GCRefMapBuilder * pBuilder, bool isDispatchCell); diff --git a/src/coreclr/vm/genericdict.cpp b/src/coreclr/vm/genericdict.cpp index 0ad8a2926c7771..f32d4701db2f94 100644 --- a/src/coreclr/vm/genericdict.cpp +++ b/src/coreclr/vm/genericdict.cpp @@ -698,26 +698,26 @@ Dictionary::PopulateEntry( BYTE fixupKind = *pBlob++; ModuleBase * pInfoModule = pModule; - if (fixupKind & ENCODE_MODULE_OVERRIDE) + if (fixupKind & READYTORUN_FIXUP_ModuleOverride) { DWORD moduleIndex = CorSigUncompressData(pBlob); pInfoModule = pModule->GetModuleFromIndex(moduleIndex); - fixupKind &= ~ENCODE_MODULE_OVERRIDE; + fixupKind &= ~READYTORUN_FIXUP_ModuleOverride; } - _ASSERTE(fixupKind == ENCODE_DICTIONARY_LOOKUP_THISOBJ || - fixupKind == ENCODE_DICTIONARY_LOOKUP_TYPE || - fixupKind == ENCODE_DICTIONARY_LOOKUP_METHOD); + _ASSERTE(fixupKind == READYTORUN_FIXUP_ThisObjDictionaryLookup || + fixupKind == READYTORUN_FIXUP_TypeDictionaryLookup || + fixupKind == READYTORUN_FIXUP_MethodDictionaryLookup); - if (fixupKind == ENCODE_DICTIONARY_LOOKUP_THISOBJ) + if (fixupKind == READYTORUN_FIXUP_ThisObjDictionaryLookup) { SigPointer p(pBlob); p.SkipExactlyOne(); pBlob = p.GetPtr(); } - BYTE signatureKind = *pBlob++; - if (signatureKind & ENCODE_MODULE_OVERRIDE) + ReadyToRunFixupKind signatureKind = (ReadyToRunFixupKind)*pBlob++; + if (signatureKind & READYTORUN_FIXUP_ModuleOverride) { DWORD moduleIndex = CorSigUncompressData(pBlob); ModuleBase * pSignatureModule = pModule->GetModuleFromIndex(moduleIndex); @@ -726,20 +726,20 @@ Dictionary::PopulateEntry( pInfoModule = pSignatureModule; } _ASSERTE(pInfoModule == pSignatureModule); - signatureKind &= ~ENCODE_MODULE_OVERRIDE; + signatureKind = (ReadyToRunFixupKind)(signatureKind & ~READYTORUN_FIXUP_ModuleOverride); } - switch ((CORCOMPILE_FIXUP_BLOB_KIND) signatureKind) + switch (signatureKind) { - case ENCODE_DECLARINGTYPE_HANDLE: kind = DeclaringTypeHandleSlot; break; - case ENCODE_TYPE_HANDLE: kind = TypeHandleSlot; break; - case ENCODE_FIELD_HANDLE: kind = FieldDescSlot; break; - case ENCODE_METHOD_HANDLE: kind = MethodDescSlot; break; - case ENCODE_METHOD_ENTRY: kind = MethodEntrySlot; break; - case ENCODE_VIRTUAL_ENTRY: kind = DispatchStubAddrSlot; break; + case READYTORUN_FIXUP_DeclaringTypeHandle: kind = DeclaringTypeHandleSlot; break; + case READYTORUN_FIXUP_TypeHandle: kind = TypeHandleSlot; break; + case READYTORUN_FIXUP_FieldHandle: kind = FieldDescSlot; break; + case READYTORUN_FIXUP_MethodHandle: kind = MethodDescSlot; break; + case READYTORUN_FIXUP_MethodEntry: kind = MethodEntrySlot; break; + case READYTORUN_FIXUP_VirtualEntry: kind = DispatchStubAddrSlot; break; default: - _ASSERTE(!"Unexpected CORCOMPILE_FIXUP_BLOB_KIND"); + _ASSERTE(!"Unexpected ReadyToRunFixupKind"); ThrowHR(COR_E_BADIMAGEFORMAT); } diff --git a/src/coreclr/vm/jitinterface.cpp b/src/coreclr/vm/jitinterface.cpp index 87721965aeee8e..aee129a416174d 100644 --- a/src/coreclr/vm/jitinterface.cpp +++ b/src/coreclr/vm/jitinterface.cpp @@ -13685,8 +13685,6 @@ BOOL TypeLayoutCheck(MethodTable * pMT, PCCOR_SIGNATURE pBlob, BOOL printDiff) return result; } -#endif // FEATURE_READYTORUN - bool IsInstructionSetSupported(CORJIT_FLAGS jitFlags, ReadyToRunInstructionSet r2rInstructionSet) { CORINFO_InstructionSet instructionSet = InstructionSetFromR2RInstructionSet(r2rInstructionSet); @@ -13706,27 +13704,20 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, ModuleBase * pInfoModule = currentModule; - if (kind & ENCODE_MODULE_OVERRIDE) + if (kind & READYTORUN_FIXUP_ModuleOverride) { pInfoModule = currentModule->GetModuleFromIndex(CorSigUncompressData(pBlob)); - kind &= ~ENCODE_MODULE_OVERRIDE; + kind &= ~READYTORUN_FIXUP_ModuleOverride; } MethodDesc * pMD = NULL; - PCCOR_SIGNATURE pSig; - DWORD cSig; - size_t result = 0; switch (kind) { - case ENCODE_MODULE_HANDLE: - result = (size_t)pInfoModule; - break; - - case ENCODE_TYPE_HANDLE: - case ENCODE_TYPE_DICTIONARY: + case READYTORUN_FIXUP_TypeHandle: + case READYTORUN_FIXUP_TypeDictionary: { TypeHandle th = ZapSig::DecodeType(currentModule, pInfoModule, pBlob); @@ -13743,8 +13734,8 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_METHOD_HANDLE: - case ENCODE_METHOD_DICTIONARY: + case READYTORUN_FIXUP_MethodHandle: + case READYTORUN_FIXUP_MethodDictionary: { MethodDesc * pMD = ZapSig::DecodeMethod(currentModule, pInfoModule, pBlob); @@ -13758,11 +13749,11 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_FIELD_HANDLE: + case READYTORUN_FIXUP_FieldHandle: result = (size_t) ZapSig::DecodeField(currentModule, pInfoModule, pBlob); break; - case ENCODE_STRING_HANDLE: + case READYTORUN_FIXUP_StringHandle: { // We need to update strings atomically (due to NoStringInterning attribute). Note // that modules with string interning dont really need this, as the hash tables have @@ -13784,47 +13775,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_VARARGS_SIG: - { - mdSignature token = TokenFromRid( - CorSigUncompressData(pBlob), - mdtSignature); - - IfFailThrow(pInfoModule->GetMDImport()->GetSigFromToken(token, &cSig, &pSig)); - - goto VarArgs; - } - break; - - case ENCODE_VARARGS_METHODREF: - { - mdSignature token = TokenFromRid( - CorSigUncompressData(pBlob), - mdtMemberRef); - - LPCSTR szName_Ignore; - IfFailThrow(pInfoModule->GetMDImport()->GetNameAndSigOfMemberRef(token, &pSig, &cSig, &szName_Ignore)); - - goto VarArgs; - } - break; - - case ENCODE_VARARGS_METHODDEF: - { - mdSignature token = TokenFromRid( - CorSigUncompressData(pBlob), - mdtMethodDef); - - IfFailThrow(pInfoModule->GetMDImport()->GetSigOfMethodDef(token, &cSig, &pSig)); - } - { - VarArgs: - SigTypeContext typeContext = SigTypeContext(); - result = (size_t) CORINFO_VARARGS_HANDLE(currentModule->GetVASigCookie(Signature(pSig, cSig), &typeContext)); - } - break; - - case ENCODE_METHOD_ENTRY_DEF_TOKEN: + case READYTORUN_FIXUP_MethodEntry_DefToken: { mdToken MethodDef = TokenFromRid(CorSigUncompressData(pBlob), mdtMethodDef); _ASSERTE(pInfoModule->IsFullModule()); @@ -13841,7 +13792,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, goto MethodEntry; } - case ENCODE_METHOD_ENTRY_REF_TOKEN: + case READYTORUN_FIXUP_MethodEntry_RefToken: { SigTypeContext typeContext; mdToken MemberRef = TokenFromRid(CorSigUncompressData(pBlob), mdtMemberRef); @@ -13862,7 +13813,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, goto MethodEntry; } - case ENCODE_METHOD_ENTRY: + case READYTORUN_FIXUP_MethodEntry: { pMD = ZapSig::DecodeMethod(currentModule, pInfoModule, pBlob); @@ -13877,15 +13828,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_SYNC_LOCK: - { - TypeHandle th = ZapSig::DecodeType(currentModule, pInfoModule, pBlob); - - result = (size_t) GetClassSync(th.AsMethodTable()); - } - break; - - case ENCODE_INDIRECT_PINVOKE_TARGET: + case READYTORUN_FIXUP_IndirectPInvokeTarget: { MethodDesc *pMethod = ZapSig::DecodeMethod(currentModule, pInfoModule, pBlob); @@ -13895,7 +13838,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_PINVOKE_TARGET: + case READYTORUN_FIXUP_PInvokeTarget: { if (mayUsePrecompiledNDirectMethods) { @@ -13911,50 +13854,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; -#if defined(PROFILING_SUPPORTED) - case ENCODE_PROFILING_HANDLE: - { - MethodDesc *pMethod = ZapSig::DecodeMethod(currentModule, pInfoModule, pBlob); - - // methods with no metadata behind cannot be exposed to tools expecting metadata (profiler, debugger...) - // they shouldnever come here as they are called out in GetCompileFlag - _ASSERTE(!pMethod->IsNoMetadata()); - - FunctionID funId = (FunctionID)pMethod; - - BOOL bHookFunction = TRUE; - CORINFO_PROFILING_HANDLE profilerHandle = (CORINFO_PROFILING_HANDLE)funId; - - { - BEGIN_PROFILER_CALLBACK(CORProfilerFunctionIDMapperEnabled()); - profilerHandle = (CORINFO_PROFILING_HANDLE)(&g_profControlBlock)->EEFunctionIDMapper(funId, &bHookFunction); - END_PROFILER_CALLBACK(); - } - - // Profiling handle is opaque token. It does not have to be aligned thus we can not store it in the same location as token. - *(entry+kZapProfilingHandleImportValueIndexClientData) = (SIZE_T)profilerHandle; - - if (bHookFunction) - { - // Confirm the helpers are non-null and don't require lazy loading. - _ASSERTE(hlpDynamicFuncTable[DYNAMIC_CORINFO_HELP_PROF_FCN_ENTER].pfnHelper != NULL); - _ASSERTE(hlpDynamicFuncTable[DYNAMIC_CORINFO_HELP_PROF_FCN_LEAVE].pfnHelper != NULL); - _ASSERTE(hlpDynamicFuncTable[DYNAMIC_CORINFO_HELP_PROF_FCN_TAILCALL].pfnHelper != NULL); - *(entry+kZapProfilingHandleImportValueIndexEnterAddr) = (SIZE_T)(void *)hlpDynamicFuncTable[DYNAMIC_CORINFO_HELP_PROF_FCN_ENTER].pfnHelper; - *(entry+kZapProfilingHandleImportValueIndexLeaveAddr) = (SIZE_T)(void *)hlpDynamicFuncTable[DYNAMIC_CORINFO_HELP_PROF_FCN_LEAVE].pfnHelper; - *(entry+kZapProfilingHandleImportValueIndexTailcallAddr) = (SIZE_T)(void *)hlpDynamicFuncTable[DYNAMIC_CORINFO_HELP_PROF_FCN_TAILCALL].pfnHelper; - } - else - { - *(entry+kZapProfilingHandleImportValueIndexEnterAddr) = (SIZE_T)(void *)JIT_ProfilerEnterLeaveTailcallStub; - *(entry+kZapProfilingHandleImportValueIndexLeaveAddr) = (SIZE_T)(void *)JIT_ProfilerEnterLeaveTailcallStub; - *(entry+kZapProfilingHandleImportValueIndexTailcallAddr) = (SIZE_T)(void *)JIT_ProfilerEnterLeaveTailcallStub; - } - } - break; -#endif // PROFILING_SUPPORTED - - case ENCODE_FIELD_ADDRESS: + case READYTORUN_FIXUP_FieldAddress: { FieldDesc *pField = ZapSig::DecodeField(currentModule, pInfoModule, pBlob); @@ -13967,8 +13867,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; -#ifdef FEATURE_READYTORUN - case ENCODE_READYTORUN_HELPER: + case READYTORUN_FIXUP_Helper: { DWORD helperNum = CorSigUncompressData(pBlob); @@ -14025,7 +13924,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_FIELD_OFFSET: + case READYTORUN_FIXUP_FieldOffset: { FieldDesc * pFD = ZapSig::DecodeField(currentModule, pInfoModule, pBlob); _ASSERTE(!pFD->IsStatic()); @@ -14039,7 +13938,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_FIELD_BASE_OFFSET: + case READYTORUN_FIXUP_FieldBaseOffset: { TypeHandle th = ZapSig::DecodeType(currentModule, pInfoModule, pBlob); @@ -14053,16 +13952,16 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_CHECK_TYPE_LAYOUT: - case ENCODE_VERIFY_TYPE_LAYOUT: + case READYTORUN_FIXUP_Check_TypeLayout: + case READYTORUN_FIXUP_Verify_TypeLayout: { TypeHandle th = ZapSig::DecodeType(currentModule, pInfoModule, pBlob); MethodTable * pMT = th.AsMethodTable(); _ASSERTE(pMT->IsValueType()); - if (!TypeLayoutCheck(pMT, pBlob, /* printDiff */ kind == ENCODE_VERIFY_TYPE_LAYOUT)) + if (!TypeLayoutCheck(pMT, pBlob, /* printDiff */ kind == READYTORUN_FIXUP_Verify_TypeLayout)) { - if (kind == ENCODE_CHECK_TYPE_LAYOUT) + if (kind == READYTORUN_FIXUP_Check_TypeLayout) { return FALSE; } @@ -14091,7 +13990,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_CHECK_FIELD_OFFSET: + case READYTORUN_FIXUP_Check_FieldOffset: { DWORD dwExpectedOffset = CorSigUncompressData(pBlob); @@ -14109,7 +14008,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_VERIFY_FIELD_OFFSET: + case READYTORUN_FIXUP_Verify_FieldOffset: { DWORD baseOffset = CorSigUncompressData(pBlob); DWORD fieldOffset = CorSigUncompressData(pBlob); @@ -14160,8 +14059,8 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_VERIFY_VIRTUAL_FUNCTION_OVERRIDE: - case ENCODE_CHECK_VIRTUAL_FUNCTION_OVERRIDE: + case READYTORUN_FIXUP_Verify_VirtualFunctionOverride: + case READYTORUN_FIXUP_Check_VirtualFunctionOverride: { PCCOR_SIGNATURE updatedSignature = pBlob; @@ -14234,7 +14133,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, if (pImplMethodRuntime != pImplMethodCompiler) { - if (kind == ENCODE_CHECK_VIRTUAL_FUNCTION_OVERRIDE) + if (kind == READYTORUN_FIXUP_Check_VirtualFunctionOverride) { return FALSE; } @@ -14281,7 +14180,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, break; - case ENCODE_CHECK_INSTRUCTION_SET_SUPPORT: + case READYTORUN_FIXUP_Check_InstructionSetSupport: { DWORD dwInstructionSetCount = CorSigUncompressData(pBlob); CORJIT_FLAGS corjitFlags = ExecutionManager::GetEEJitManager()->GetCPUCompileFlags(); @@ -14300,8 +14199,8 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; - case ENCODE_CHECK_IL_BODY: - case ENCODE_VERIFY_IL_BODY: + case READYTORUN_FIXUP_Check_IL_Body: + case READYTORUN_FIXUP_Verify_IL_Body: { DWORD dwBlobSize = CorSigUncompressData(pBlob); const uint8_t *const pBlobStart = pBlob; @@ -14312,7 +14211,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, for (DWORD iType = 0; iType < cTypes && !fail; iType++) { - if (kind == ENCODE_CHECK_IL_BODY) + if (kind == READYTORUN_FIXUP_Check_IL_Body) { EX_TRY { @@ -14335,7 +14234,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, if (!fail) { - if (kind == ENCODE_CHECK_IL_BODY) + if (kind == READYTORUN_FIXUP_Check_IL_Body) { EX_TRY { @@ -14387,7 +14286,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } else { - if (kind == ENCODE_CHECK_IL_BODY || (!fail && currentModule->GetReadyToRunInfo()->IsForbidProcessMoreILBodyFixups())) + if (kind == READYTORUN_FIXUP_Check_IL_Body || (!fail && currentModule->GetReadyToRunInfo()->IsForbidProcessMoreILBodyFixups())) { return FALSE; } @@ -14423,10 +14322,9 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, } break; } -#endif // FEATURE_READYTORUN default: - STRESS_LOG1(LF_ZAP, LL_WARNING, "Unknown FIXUP_BLOB_KIND %d\n", kind); - _ASSERTE(!"Unknown FIXUP_BLOB_KIND"); + STRESS_LOG1(LF_ZAP, LL_WARNING, "Unknown ReadyToRunFixupKind %d\n", kind); + _ASSERTE(!"Unknown ReadyToRunFixupKind"); return FALSE; } @@ -14435,6 +14333,7 @@ BOOL LoadDynamicInfoEntry(Module *currentModule, return TRUE; } +#endif // FEATURE_READYTORUN bool CEEInfo::getTailCallHelpersInternal(CORINFO_RESOLVED_TOKEN* callToken, CORINFO_SIG_INFO* sig, diff --git a/src/coreclr/vm/prestub.cpp b/src/coreclr/vm/prestub.cpp index 57b0af8fdbb755..43321600e4548d 100644 --- a/src/coreclr/vm/prestub.cpp +++ b/src/coreclr/vm/prestub.cpp @@ -2506,17 +2506,17 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl BYTE kind = *pBlob++; ModuleBase * pInfoModule = pModule; - if (kind & ENCODE_MODULE_OVERRIDE) + if (kind & READYTORUN_FIXUP_ModuleOverride) { DWORD moduleIndex = CorSigUncompressData(pBlob); pInfoModule = pModule->GetModuleFromIndex(moduleIndex); - kind &= ~ENCODE_MODULE_OVERRIDE; + kind &= ~READYTORUN_FIXUP_ModuleOverride; } TypeHandle th; switch (kind) { - case ENCODE_METHOD_ENTRY: + case READYTORUN_FIXUP_MethodEntry: { pMD = ZapSig::DecodeMethod(pModule, pInfoModule, @@ -2533,7 +2533,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl break; } - case ENCODE_METHOD_ENTRY_DEF_TOKEN: + case READYTORUN_FIXUP_MethodEntry_DefToken: { mdToken MethodDef = TokenFromRid(CorSigUncompressData(pBlob), mdtMethodDef); _ASSERTE(pInfoModule->IsFullModule()); @@ -2550,7 +2550,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl break; } - case ENCODE_METHOD_ENTRY_REF_TOKEN: + case READYTORUN_FIXUP_MethodEntry_RefToken: { SigTypeContext typeContext; mdToken MemberRef = TokenFromRid(CorSigUncompressData(pBlob), mdtMemberRef); @@ -2570,7 +2570,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl break; } - case ENCODE_VIRTUAL_ENTRY: + case READYTORUN_FIXUP_VirtualEntry: { pMD = ZapSig::DecodeMethod(pModule, pInfoModule, pBlob, &th); @@ -2594,7 +2594,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl break; } - case ENCODE_VIRTUAL_ENTRY_DEF_TOKEN: + case READYTORUN_FIXUP_VirtualEntry_DefToken: { mdToken MethodDef = TokenFromRid(CorSigUncompressData(pBlob), mdtMethodDef); _ASSERTE(pInfoModule->IsFullModule()); @@ -2603,7 +2603,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl goto VirtualEntry; } - case ENCODE_VIRTUAL_ENTRY_REF_TOKEN: + case READYTORUN_FIXUP_VirtualEntry_RefToken: { mdToken MemberRef = TokenFromRid(CorSigUncompressData(pBlob), mdtMemberRef); @@ -2617,7 +2617,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl } default: - _ASSERTE(!"Unexpected CORCOMPILE_FIXUP_BLOB_KIND"); + _ASSERTE(!"Unexpected ReadyToRunFixupKind"); ThrowHR(COR_E_BADIMAGEFORMAT); } @@ -2767,7 +2767,7 @@ EXTERN_C PCODE STDCALL ExternalMethodFixupWorker(TransitionBlock * pTransitionBl #ifdef FEATURE_READYTORUN -static PCODE getHelperForInitializedStatic(Module * pModule, CORCOMPILE_FIXUP_BLOB_KIND kind, MethodTable * pMT, FieldDesc * pFD) +static PCODE getHelperForInitializedStatic(Module * pModule, ReadyToRunFixupKind kind, MethodTable * pMT, FieldDesc * pFD) { STANDARD_VM_CONTRACT; @@ -2775,7 +2775,7 @@ static PCODE getHelperForInitializedStatic(Module * pModule, CORCOMPILE_FIXUP_BL switch (kind) { - case ENCODE_STATIC_BASE_NONGC_HELPER: + case READYTORUN_FIXUP_StaticBaseNonGC: { PVOID baseNonGC; { @@ -2785,7 +2785,7 @@ static PCODE getHelperForInitializedStatic(Module * pModule, CORCOMPILE_FIXUP_BL pHelper = DynamicHelpers::CreateReturnConst(pModule->GetLoaderAllocator(), (TADDR)baseNonGC); } break; - case ENCODE_STATIC_BASE_GC_HELPER: + case READYTORUN_FIXUP_StaticBaseGC: { PVOID baseGC; { @@ -2795,10 +2795,10 @@ static PCODE getHelperForInitializedStatic(Module * pModule, CORCOMPILE_FIXUP_BL pHelper = DynamicHelpers::CreateReturnConst(pModule->GetLoaderAllocator(), (TADDR)baseGC); } break; - case ENCODE_CCTOR_TRIGGER: + case READYTORUN_FIXUP_CctorTrigger: pHelper = DynamicHelpers::CreateReturn(pModule->GetLoaderAllocator()); break; - case ENCODE_FIELD_ADDRESS: + case READYTORUN_FIXUP_FieldAddress: { _ASSERTE(pFD->IsStatic()); @@ -2824,18 +2824,18 @@ static PCODE getHelperForInitializedStatic(Module * pModule, CORCOMPILE_FIXUP_BL } break; default: - _ASSERTE(!"Unexpected statics CORCOMPILE_FIXUP_BLOB_KIND"); + _ASSERTE(!"Unexpected statics ReadyToRunFixupKind"); ThrowHR(COR_E_BADIMAGEFORMAT); } return pHelper; } -static PCODE getHelperForSharedStatic(Module * pModule, CORCOMPILE_FIXUP_BLOB_KIND kind, MethodTable * pMT, FieldDesc * pFD) +static PCODE getHelperForSharedStatic(Module * pModule, ReadyToRunFixupKind kind, MethodTable * pMT, FieldDesc * pFD) { STANDARD_VM_CONTRACT; - _ASSERTE(kind == ENCODE_FIELD_ADDRESS); + _ASSERTE(kind == READYTORUN_FIXUP_FieldAddress); CorInfoHelpFunc helpFunc = CEEInfo::getSharedStaticsHelper(pFD, pMT); @@ -2891,13 +2891,13 @@ static PCODE getHelperForSharedStatic(Module * pModule, CORCOMPILE_FIXUP_BLOB_KI return pHelper; } -static PCODE getHelperForStaticBase(Module * pModule, CORCOMPILE_FIXUP_BLOB_KIND kind, MethodTable * pMT) +static PCODE getHelperForStaticBase(Module * pModule, ReadyToRunFixupKind kind, MethodTable * pMT) { STANDARD_VM_CONTRACT; - bool GCStatic = (kind == ENCODE_STATIC_BASE_GC_HELPER || kind == ENCODE_THREAD_STATIC_BASE_GC_HELPER); + bool GCStatic = (kind == READYTORUN_FIXUP_StaticBaseGC || kind == READYTORUN_FIXUP_ThreadStaticBaseGC); bool noCtor = pMT->IsClassInitedOrPreinited(); - bool threadStatic = (kind == ENCODE_THREAD_STATIC_BASE_NONGC_HELPER || kind == ENCODE_THREAD_STATIC_BASE_GC_HELPER); + bool threadStatic = (kind == READYTORUN_FIXUP_ThreadStaticBaseNonGC || kind == READYTORUN_FIXUP_ThreadStaticBaseGC); CorInfoHelpFunc helper; @@ -2945,7 +2945,7 @@ static PCODE getHelperForStaticBase(Module * pModule, CORCOMPILE_FIXUP_BLOB_KIND void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock, Module * pModule, ModuleBase * pInfoModule, - BYTE kind, + ReadyToRunFixupKind kind, PCCOR_SIGNATURE pBlob, PCCOR_SIGNATURE pBlobStart, CORINFO_RUNTIME_LOOKUP * pResult, @@ -2967,7 +2967,7 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock MethodTable* pContextMT = NULL; MethodDesc* pContextMD = NULL; - if (kind == ENCODE_DICTIONARY_LOOKUP_METHOD) + if (kind == READYTORUN_FIXUP_MethodDictionaryLookup) { pContextMD = (MethodDesc*)genericContextPtr; numGenericArgs = pContextMD->GetNumGenericMethodArgs(); @@ -2977,7 +2977,7 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock { pContextMT = (MethodTable*)genericContextPtr; - if (kind == ENCODE_DICTIONARY_LOOKUP_THISOBJ) + if (kind == READYTORUN_FIXUP_ThisObjDictionaryLookup) { TypeHandle contextTypeHandle = ZapSig::DecodeType(pModule, pInfoModule, pBlob); @@ -2994,19 +2994,19 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock _ASSERTE(numGenericArgs > 0); - CORCOMPILE_FIXUP_BLOB_KIND signatureKind = (CORCOMPILE_FIXUP_BLOB_KIND)CorSigUncompressData(pBlob); + ReadyToRunFixupKind signatureKind = (ReadyToRunFixupKind)CorSigUncompressData(pBlob); // // Optimization cases // - if (signatureKind == ENCODE_TYPE_HANDLE) + if (signatureKind == READYTORUN_FIXUP_TypeHandle) { SigPointer sigptr(pBlob, -1); CorElementType type; IfFailThrow(sigptr.GetElemType(&type)); - if ((type == ELEMENT_TYPE_MVAR) && (kind == ENCODE_DICTIONARY_LOOKUP_METHOD)) + if ((type == ELEMENT_TYPE_MVAR) && (kind == READYTORUN_FIXUP_MethodDictionaryLookup)) { pResult->indirections = 2; pResult->offsets[0] = offsetof(InstantiatedMethodDesc, m_pPerInstInfo); @@ -3017,7 +3017,7 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock return; } - else if ((type == ELEMENT_TYPE_VAR) && (kind != ENCODE_DICTIONARY_LOOKUP_METHOD)) + else if ((type == ELEMENT_TYPE_VAR) && (kind != READYTORUN_FIXUP_MethodDictionaryLookup)) { pResult->indirections = 3; pResult->offsets[0] = MethodTable::GetOffsetOfPerInstInfo(); @@ -3041,7 +3041,7 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock WORD dictionarySlot; - if (kind == ENCODE_DICTIONARY_LOOKUP_METHOD) + if (kind == READYTORUN_FIXUP_MethodDictionaryLookup) { if (DictionaryLayout::FindToken(pContextMD, pModule->GetLoaderAllocator(), 1, NULL, (BYTE*)pBlobStart, FromReadyToRunImage, pResult, &dictionarySlot)) { @@ -3084,7 +3084,7 @@ void ProcessDynamicDictionaryLookup(TransitionBlock * pTransitionBlock } } -PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWORD sectionIndex, Module * pModule, CORCOMPILE_FIXUP_BLOB_KIND * pKind, TypeHandle * pTH, MethodDesc ** ppMD, FieldDesc ** ppFD) +PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWORD sectionIndex, Module * pModule, ReadyToRunFixupKind * pKind, TypeHandle * pTH, MethodDesc ** ppMD, FieldDesc ** ppFD) { STANDARD_VM_CONTRACT; @@ -3104,14 +3104,14 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR PCCOR_SIGNATURE pBlob = (BYTE *)pNativeImage->GetRvaData(pSignatures[index]); PCCOR_SIGNATURE pBlobStart = pBlob; - BYTE kind = *pBlob++; + ReadyToRunFixupKind kind = (ReadyToRunFixupKind)*pBlob++; ModuleBase * pInfoModule = pModule; - if (kind & ENCODE_MODULE_OVERRIDE) + if (kind & READYTORUN_FIXUP_ModuleOverride) { DWORD moduleIndex = CorSigUncompressData(pBlob); pInfoModule = pModule->GetModuleFromIndex(moduleIndex); - kind &= ~ENCODE_MODULE_OVERRIDE; + kind = (ReadyToRunFixupKind)(kind & ~READYTORUN_FIXUP_ModuleOverride); } bool fReliable = false; @@ -3123,47 +3123,44 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR switch (kind) { - case ENCODE_NEW_HELPER: + case READYTORUN_FIXUP_NewObject: th = ZapSig::DecodeType(pModule, pInfoModule, pBlob); th.AsMethodTable()->EnsureInstanceActive(); break; - case ENCODE_ISINSTANCEOF_HELPER: - case ENCODE_CHKCAST_HELPER: + case READYTORUN_FIXUP_IsInstanceOf: + case READYTORUN_FIXUP_ChkCast: fReliable = true; FALLTHROUGH; - case ENCODE_NEW_ARRAY_HELPER: + case READYTORUN_FIXUP_NewArray: th = ZapSig::DecodeType(pModule, pInfoModule, pBlob); break; - case ENCODE_THREAD_STATIC_BASE_NONGC_HELPER: - case ENCODE_THREAD_STATIC_BASE_GC_HELPER: - case ENCODE_STATIC_BASE_NONGC_HELPER: - case ENCODE_STATIC_BASE_GC_HELPER: - case ENCODE_CCTOR_TRIGGER: + case READYTORUN_FIXUP_ThreadStaticBaseNonGC: + case READYTORUN_FIXUP_ThreadStaticBaseGC: + case READYTORUN_FIXUP_StaticBaseNonGC: + case READYTORUN_FIXUP_StaticBaseGC: + case READYTORUN_FIXUP_CctorTrigger: th = ZapSig::DecodeType(pModule, pInfoModule, pBlob); Statics: th.AsMethodTable()->EnsureInstanceActive(); th.AsMethodTable()->CheckRunClassInitThrowing(); - if (kind == ENCODE_THREAD_STATIC_BASE_NONGC_HELPER || kind == ENCODE_THREAD_STATIC_BASE_GC_HELPER || - (kind == ENCODE_FIELD_ADDRESS && pFD->IsThreadStatic())) + if (kind == READYTORUN_FIXUP_ThreadStaticBaseNonGC || kind == READYTORUN_FIXUP_ThreadStaticBaseGC || + (kind == READYTORUN_FIXUP_FieldAddress && pFD->IsThreadStatic())) { th.AsMethodTable()->EnsureTlsIndexAllocated(); } fReliable = true; break; - case ENCODE_FIELD_ADDRESS: + case READYTORUN_FIXUP_FieldAddress: pFD = ZapSig::DecodeField(pModule, pInfoModule, pBlob, &th); _ASSERTE(pFD->IsStatic()); goto Statics; - case ENCODE_VIRTUAL_ENTRY: - // case ENCODE_VIRTUAL_ENTRY_DEF_TOKEN: - // case ENCODE_VIRTUAL_ENTRY_REF_TOKEN: - // case ENCODE_VIRTUAL_ENTRY_SLOT: + case READYTORUN_FIXUP_VirtualEntry: fReliable = true; FALLTHROUGH; - case ENCODE_DELEGATE_CTOR: + case READYTORUN_FIXUP_DelegateCtor: { pMD = ZapSig::DecodeMethod(pModule, pInfoModule, pBlob, &th); if (pMD->RequiresInstArg()) @@ -3178,14 +3175,14 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR } break; - case ENCODE_DICTIONARY_LOOKUP_THISOBJ: - case ENCODE_DICTIONARY_LOOKUP_TYPE: - case ENCODE_DICTIONARY_LOOKUP_METHOD: + case READYTORUN_FIXUP_ThisObjDictionaryLookup: + case READYTORUN_FIXUP_TypeDictionaryLookup: + case READYTORUN_FIXUP_MethodDictionaryLookup: ProcessDynamicDictionaryLookup(pTransitionBlock, pModule, pInfoModule, kind, pBlob, pBlobStart, &genericLookup, &dictionaryIndexAndSlot); break; default: - _ASSERTE(!"Unexpected CORCOMPILE_FIXUP_BLOB_KIND"); + _ASSERTE(!"Unexpected ReadyToRunFixupKind"); ThrowHR(COR_E_BADIMAGEFORMAT); } @@ -3198,25 +3195,25 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR { switch (kind) { - case ENCODE_ISINSTANCEOF_HELPER: - case ENCODE_CHKCAST_HELPER: + case READYTORUN_FIXUP_IsInstanceOf: + case READYTORUN_FIXUP_ChkCast: { - CorInfoHelpFunc helpFunc = CEEInfo::getCastingHelperStatic(th, /* throwing */ (kind == ENCODE_CHKCAST_HELPER)); + CorInfoHelpFunc helpFunc = CEEInfo::getCastingHelperStatic(th, /* throwing */ (kind == READYTORUN_FIXUP_ChkCast)); pHelper = DynamicHelpers::CreateHelperArgMove(pModule->GetLoaderAllocator(), th.AsTAddr(), CEEJitInfo::getHelperFtnStatic(helpFunc)); } break; - case ENCODE_THREAD_STATIC_BASE_NONGC_HELPER: - case ENCODE_THREAD_STATIC_BASE_GC_HELPER: - case ENCODE_STATIC_BASE_NONGC_HELPER: - case ENCODE_STATIC_BASE_GC_HELPER: - case ENCODE_CCTOR_TRIGGER: - case ENCODE_FIELD_ADDRESS: + case READYTORUN_FIXUP_ThreadStaticBaseNonGC: + case READYTORUN_FIXUP_ThreadStaticBaseGC: + case READYTORUN_FIXUP_StaticBaseNonGC: + case READYTORUN_FIXUP_StaticBaseGC: + case READYTORUN_FIXUP_CctorTrigger: + case READYTORUN_FIXUP_FieldAddress: { MethodTable * pMT = th.AsMethodTable(); bool fNeedsNonTrivialHelper = false; - if (pMT->Collectible() && (kind != ENCODE_CCTOR_TRIGGER)) + if (pMT->Collectible() && (kind != READYTORUN_FIXUP_CctorTrigger)) { // Collectible statics are not pinned - the fast getters expect statics to be pinned fNeedsNonTrivialHelper = true; @@ -3229,7 +3226,7 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR } else { - fNeedsNonTrivialHelper = (kind == ENCODE_THREAD_STATIC_BASE_NONGC_HELPER) || (kind == ENCODE_THREAD_STATIC_BASE_GC_HELPER); + fNeedsNonTrivialHelper = (kind == READYTORUN_FIXUP_ThreadStaticBaseNonGC) || (kind == READYTORUN_FIXUP_ThreadStaticBaseGC); } } @@ -3243,27 +3240,24 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR } else { - pHelper = getHelperForSharedStatic(pModule, (CORCOMPILE_FIXUP_BLOB_KIND)kind, pMT, pFD); + pHelper = getHelperForSharedStatic(pModule, (ReadyToRunFixupKind)kind, pMT, pFD); } } else { - pHelper = getHelperForStaticBase(pModule, (CORCOMPILE_FIXUP_BLOB_KIND)kind, pMT); + pHelper = getHelperForStaticBase(pModule, (ReadyToRunFixupKind)kind, pMT); } } else { // Delay the creation of the helper until the type is initialized if (pMT->IsClassInitedOrPreinited()) - pHelper = getHelperForInitializedStatic(pModule, (CORCOMPILE_FIXUP_BLOB_KIND)kind, pMT, pFD); + pHelper = getHelperForInitializedStatic(pModule, (ReadyToRunFixupKind)kind, pMT, pFD); } } break; - case ENCODE_VIRTUAL_ENTRY: - // case ENCODE_VIRTUAL_ENTRY_DEF_TOKEN: - // case ENCODE_VIRTUAL_ENTRY_REF_TOKEN: - // case ENCODE_VIRTUAL_ENTRY_SLOT: + case READYTORUN_FIXUP_VirtualEntry: { if (!pMD->IsVtableMethod()) { @@ -3314,14 +3308,14 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR { switch (kind) { - case ENCODE_NEW_HELPER: + case READYTORUN_FIXUP_NewObject: { bool fHasSideEffectsUnused; CorInfoHelpFunc helpFunc = CEEInfo::getNewHelperStatic(th.AsMethodTable(), &fHasSideEffectsUnused); pHelper = DynamicHelpers::CreateHelper(pModule->GetLoaderAllocator(), th.AsTAddr(), CEEJitInfo::getHelperFtnStatic(helpFunc)); } break; - case ENCODE_NEW_ARRAY_HELPER: + case READYTORUN_FIXUP_NewArray: { CorInfoHelpFunc helpFunc = CEEInfo::getNewArrHelperStatic(th); MethodTable *pArrayMT = th.AsMethodTable(); @@ -3329,7 +3323,7 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR } break; - case ENCODE_DELEGATE_CTOR: + case READYTORUN_FIXUP_DelegateCtor: { MethodTable * pDelegateType = NULL; @@ -3388,9 +3382,9 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR } break; - case ENCODE_DICTIONARY_LOOKUP_THISOBJ: - case ENCODE_DICTIONARY_LOOKUP_TYPE: - case ENCODE_DICTIONARY_LOOKUP_METHOD: + case READYTORUN_FIXUP_ThisObjDictionaryLookup: + case READYTORUN_FIXUP_TypeDictionaryLookup: + case READYTORUN_FIXUP_MethodDictionaryLookup: { pHelper = DynamicHelpers::CreateDictionaryLookupHelper(pModule->GetLoaderAllocator(), &genericLookup, dictionaryIndexAndSlot, pModule); } @@ -3406,7 +3400,7 @@ PCODE DynamicHelperFixup(TransitionBlock * pTransitionBlock, TADDR * pCell, DWOR } } - *pKind = (CORCOMPILE_FIXUP_BLOB_KIND)kind; + *pKind = (ReadyToRunFixupKind)kind; *pTH = th; *ppMD = pMD; *ppFD = pFD; @@ -3455,7 +3449,7 @@ extern "C" SIZE_T STDCALL DynamicHelperWorker(TransitionBlock * pTransitionBlock TypeHandle th; MethodDesc * pMD = NULL; FieldDesc * pFD = NULL; - CORCOMPILE_FIXUP_BLOB_KIND kind = ENCODE_NONE; + ReadyToRunFixupKind kind = (ReadyToRunFixupKind)0; { GCX_PREEMP_THREAD_EXISTS(CURRENT_THREAD); @@ -3469,10 +3463,10 @@ extern "C" SIZE_T STDCALL DynamicHelperWorker(TransitionBlock * pTransitionBlock switch (kind) { - case ENCODE_ISINSTANCEOF_HELPER: - case ENCODE_CHKCAST_HELPER: + case READYTORUN_FIXUP_IsInstanceOf: + case READYTORUN_FIXUP_ChkCast: { - BOOL throwInvalidCast = (kind == ENCODE_CHKCAST_HELPER); + BOOL throwInvalidCast = (kind == READYTORUN_FIXUP_ChkCast); if (*(Object **)pArgument == NULL || ObjIsInstanceOf(*(Object **)pArgument, th, throwInvalidCast)) { result = (SIZE_T)(*(Object **)pArgument); @@ -3484,27 +3478,24 @@ extern "C" SIZE_T STDCALL DynamicHelperWorker(TransitionBlock * pTransitionBlock } } break; - case ENCODE_STATIC_BASE_NONGC_HELPER: + case READYTORUN_FIXUP_StaticBaseNonGC: result = (SIZE_T)th.AsMethodTable()->GetNonGCStaticsBasePointer(); break; - case ENCODE_STATIC_BASE_GC_HELPER: + case READYTORUN_FIXUP_StaticBaseGC: result = (SIZE_T)th.AsMethodTable()->GetGCStaticsBasePointer(); break; - case ENCODE_THREAD_STATIC_BASE_NONGC_HELPER: + case READYTORUN_FIXUP_ThreadStaticBaseNonGC: result = (SIZE_T)th.AsMethodTable()->GetNonGCThreadStaticsBasePointer(); break; - case ENCODE_THREAD_STATIC_BASE_GC_HELPER: + case READYTORUN_FIXUP_ThreadStaticBaseGC: result = (SIZE_T)th.AsMethodTable()->GetGCThreadStaticsBasePointer(); break; - case ENCODE_CCTOR_TRIGGER: + case READYTORUN_FIXUP_CctorTrigger: break; - case ENCODE_FIELD_ADDRESS: + case READYTORUN_FIXUP_FieldAddress: result = (SIZE_T)pFD->GetCurrentStaticAddress(); break; - case ENCODE_VIRTUAL_ENTRY: - // case ENCODE_VIRTUAL_ENTRY_DEF_TOKEN: - // case ENCODE_VIRTUAL_ENTRY_REF_TOKEN: - // case ENCODE_VIRTUAL_ENTRY_SLOT: + case READYTORUN_FIXUP_VirtualEntry: { OBJECTREF objRef = ObjectToOBJECTREF(*(Object **)pArgument); diff --git a/src/coreclr/vm/zapsig.h b/src/coreclr/vm/zapsig.h index 83fe44bfe6400c..31b0f4fab63dd7 100644 --- a/src/coreclr/vm/zapsig.h +++ b/src/coreclr/vm/zapsig.h @@ -18,6 +18,8 @@ #include "common.h" +class SigBuilder; + typedef DWORD(*ENCODEMODULE_CALLBACK)(LPVOID pModuleContext, CORINFO_MODULE_HANDLE moduleHandle); typedef DWORD (*EncodeModuleCallback)(void* pModuleContext, Module *pReferencedModule); enum {