diff options
Diffstat (limited to 'src/vm/compile.cpp')
-rw-r--r-- | src/vm/compile.cpp | 24 |
1 files changed, 7 insertions, 17 deletions
diff --git a/src/vm/compile.cpp b/src/vm/compile.cpp index 91615851c7..9727430398 100644 --- a/src/vm/compile.cpp +++ b/src/vm/compile.cpp @@ -652,22 +652,6 @@ HRESULT CEECompileInfo::SetCompilationTarget(CORINFO_ASSEMBLY_HANDLE assembl } } -#ifdef FEATURE_READYTORUN_COMPILER - if (IsReadyToRunCompilation() && !pModule->IsILOnly()) - { - GetSvcLogger()->Printf(LogLevel_Error, W("Error: /readytorun not supported for mixed mode assemblies\n")); - return E_FAIL; - } -#endif - -#ifdef FEATURE_READYTORUN_COMPILER - if (IsReadyToRunCompilation() && !pModule->IsILOnly()) - { - GetSvcLogger()->Printf(LogLevel_Error, W("Error: /readytorun not supported for mixed mode assemblies\n")); - return E_FAIL; - } -#endif - return S_OK; } @@ -1723,6 +1707,12 @@ mdToken CEECompileInfo::TryEncodeMethodAsToken( if (!pReferencingModule->IsInCurrentVersionBubble()) return mdTokenNil; + // If this is a MemberRef with TypeSpec, we might come to here because we resolved the method + // into a non-generic base class in the same version bubble. However, since we don't have the + // proper type context during ExternalMethodFixupWorker, we can't really encode using token + if (pResolvedToken->pTypeSpec != NULL) + return mdTokenNil; + unsigned methodToken = pResolvedToken->token; switch (TypeFromToken(methodToken)) @@ -6803,7 +6793,7 @@ void CEEPreloader::GetRVAFieldData(mdFieldDef fd, PVOID * ppData, DWORD * pcbSiz if (pFD == NULL) ThrowHR(COR_E_TYPELOAD); - _ASSERTE(pFD->IsILOnlyRVAField()); + _ASSERTE(pFD->IsRVA()); UINT size = pFD->LoadSize(); |