diff options
Diffstat (limited to 'src/jit/ee_il_dll.cpp')
-rw-r--r-- | src/jit/ee_il_dll.cpp | 185 |
1 files changed, 16 insertions, 169 deletions
diff --git a/src/jit/ee_il_dll.cpp b/src/jit/ee_il_dll.cpp index d5705ab353..c0384f3858 100644 --- a/src/jit/ee_il_dll.cpp +++ b/src/jit/ee_il_dll.cpp @@ -20,7 +20,7 @@ XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX #include "emit.h" #include "corexcep.h" -#if !defined(PLATFORM_UNIX) +#if !defined(_HOST_UNIX_) #include <io.h> // For _dup, _setmode #include <fcntl.h> // For _O_TEXT #include <errno.h> // For EINVAL @@ -66,9 +66,9 @@ extern "C" void __stdcall jitStartup(ICorJitHost* jitHost) assert(!JitConfig.isInitialized()); JitConfig.initialize(jitHost); -#if defined(PLATFORM_UNIX) +#if defined(_HOST_UNIX_) jitstdout = procstdout(); -#else +#else // !_HOST_UNIX_ if (jitstdout == nullptr) { int stdoutFd = _fileno(procstdout()); @@ -99,7 +99,7 @@ extern "C" void __stdcall jitStartup(ICorJitHost* jitHost) { jitstdout = procstdout(); } -#endif // PLATFORM_UNIX +#endif // !_HOST_UNIX_ #ifdef FEATURE_TRACELOGGING JitTelemetry::NotifyDllProcessAttach(); @@ -136,9 +136,6 @@ extern "C" BOOL WINAPI DllMain(HANDLE hInstance, DWORD dwReason, LPVOID pvReserv { g_hInst = (HINSTANCE)hInstance; DisableThreadLibraryCalls((HINSTANCE)hInstance); -#if defined(SELF_NO_HOST) && COR_JIT_EE_VERSION <= 460 - jitStartup(JitHost::getJitHost()); -#endif } else if (dwReason == DLL_PROCESS_DETACH) { @@ -158,10 +155,6 @@ extern "C" void __stdcall sxsJitStartup(CoreClrCallbacks const& cccallbacks) #ifndef SELF_NO_HOST InitUtilcode(cccallbacks); #endif - -#if COR_JIT_EE_VERSION <= 460 - jitStartup(JitHost::getJitHost()); -#endif } #endif // !FEATURE_MERGE_JIT_AND_ENGINE @@ -286,15 +279,11 @@ CorJitResult CILJit::compileMethod( JitFlags jitFlags; -#if COR_JIT_EE_VERSION > 460 assert(flags == CORJIT_FLAGS::CORJIT_FLAG_CALL_GETJITFLAGS); CORJIT_FLAGS corJitFlags; DWORD jitFlagsSize = compHnd->getJitFlags(&corJitFlags, sizeof(corJitFlags)); assert(jitFlagsSize == sizeof(corJitFlags)); jitFlags.SetFromFlags(corJitFlags); -#else // COR_JIT_EE_VERSION <= 460 - jitFlags.SetFromOldFlags(flags, 0); -#endif // COR_JIT_EE_VERSION <= 460 int result; void* methodCodePtr = nullptr; @@ -382,11 +371,7 @@ void CILJit::getVersionIdentifier(GUID* versionIdentifier) * Determine the maximum length of SIMD vector supported by this JIT. */ -#if COR_JIT_EE_VERSION > 460 unsigned CILJit::getMaxIntrinsicSIMDVectorLength(CORJIT_FLAGS cpuCompileFlags) -#else -unsigned CILJit::getMaxIntrinsicSIMDVectorLength(DWORD cpuCompileFlags) -#endif { if (g_realJitCompiler != nullptr) { @@ -394,12 +379,7 @@ unsigned CILJit::getMaxIntrinsicSIMDVectorLength(DWORD cpuCompileFlags) } JitFlags jitFlags; - -#if COR_JIT_EE_VERSION > 460 jitFlags.SetFromFlags(cpuCompileFlags); -#else // COR_JIT_EE_VERSION <= 460 - jitFlags.SetFromOldFlags(cpuCompileFlags, 0); -#endif // COR_JIT_EE_VERSION <= 460 #ifdef FEATURE_SIMD #ifdef _TARGET_XARCH_ @@ -409,16 +389,25 @@ unsigned CILJit::getMaxIntrinsicSIMDVectorLength(DWORD cpuCompileFlags) { if (JitConfig.EnableAVX() != 0) { - JITDUMP("getMaxIntrinsicSIMDVectorLength: returning 32\n"); + if (GetJitTls() != nullptr && JitTls::GetCompiler() != nullptr) + { + JITDUMP("getMaxIntrinsicSIMDVectorLength: returning 32\n"); + } return 32; } } #endif // FEATURE_AVX_SUPPORT - JITDUMP("getMaxIntrinsicSIMDVectorLength: returning 16\n"); + if (GetJitTls() != nullptr && JitTls::GetCompiler() != nullptr) + { + JITDUMP("getMaxIntrinsicSIMDVectorLength: returning 16\n"); + } return 16; #endif // _TARGET_XARCH_ #else // !FEATURE_SIMD - JITDUMP("getMaxIntrinsicSIMDVectorLength: returning 0\n"); + if (GetJitTls() != nullptr && JitTls::GetCompiler() != nullptr) + { + JITDUMP("getMaxIntrinsicSIMDVectorLength: returning 0\n"); + } return 0; #endif // !FEATURE_SIMD } @@ -1235,146 +1224,6 @@ void Compiler::eeGetSystemVAmd64PassStructInRegisterDescriptor( #endif // FEATURE_UNIX_AMD64_STRUCT_PASSING -#if COR_JIT_EE_VERSION <= 460 - -// Validate the token to determine whether to turn the bad image format exception into -// verification failure (for backward compatibility) -static bool isValidTokenForTryResolveToken(ICorJitInfo* corInfo, CORINFO_RESOLVED_TOKEN* resolvedToken) -{ - if (!corInfo->isValidToken(resolvedToken->tokenScope, resolvedToken->token)) - return false; - - CorInfoTokenKind tokenType = resolvedToken->tokenType; - switch (TypeFromToken(resolvedToken->token)) - { - case mdtModuleRef: - case mdtTypeDef: - case mdtTypeRef: - case mdtTypeSpec: - if ((tokenType & CORINFO_TOKENKIND_Class) == 0) - return false; - break; - - case mdtMethodDef: - case mdtMethodSpec: - if ((tokenType & CORINFO_TOKENKIND_Method) == 0) - return false; - break; - - case mdtFieldDef: - if ((tokenType & CORINFO_TOKENKIND_Field) == 0) - return false; - break; - - case mdtMemberRef: - if ((tokenType & (CORINFO_TOKENKIND_Method | CORINFO_TOKENKIND_Field)) == 0) - return false; - break; - - default: - return false; - } - - return true; -} - -// This type encapsulates the information necessary for `TryResolveTokenFilter` and -// `eeTryResolveToken` below. -struct TryResolveTokenFilterParam -{ - ICorJitInfo* m_corInfo; - CORINFO_RESOLVED_TOKEN* m_resolvedToken; - EXCEPTION_POINTERS m_exceptionPointers; - bool m_success; -}; - -LONG TryResolveTokenFilter(struct _EXCEPTION_POINTERS* exceptionPointers, void* theParam) -{ - assert(exceptionPointers->ExceptionRecord->ExceptionCode != SEH_VERIFICATION_EXCEPTION); - - // Backward compatibility: Convert bad image format exceptions thrown by the EE while resolving token to - // verification exceptions if we are verifying. Verification exceptions will cause the JIT of the basic block to - // fail, but the JITing of the whole method is still going to succeed. This is done for backward compatibility only. - // Ideally, we would always treat bad tokens in the IL stream as fatal errors. - if (exceptionPointers->ExceptionRecord->ExceptionCode == EXCEPTION_COMPLUS) - { - auto* param = reinterpret_cast<TryResolveTokenFilterParam*>(theParam); - if (!isValidTokenForTryResolveToken(param->m_corInfo, param->m_resolvedToken)) - { - param->m_exceptionPointers = *exceptionPointers; - return param->m_corInfo->FilterException(exceptionPointers); - } - } - - return EXCEPTION_CONTINUE_SEARCH; -} - -bool Compiler::eeTryResolveToken(CORINFO_RESOLVED_TOKEN* resolvedToken) -{ - TryResolveTokenFilterParam param; - param.m_corInfo = info.compCompHnd; - param.m_resolvedToken = resolvedToken; - param.m_success = true; - - PAL_TRY(TryResolveTokenFilterParam*, pParam, ¶m) - { - pParam->m_corInfo->resolveToken(pParam->m_resolvedToken); - } - PAL_EXCEPT_FILTER(TryResolveTokenFilter) - { - if (param.m_exceptionPointers.ExceptionRecord->ExceptionCode == EXCEPTION_COMPLUS) - { - param.m_corInfo->HandleException(¶m.m_exceptionPointers); - } - - param.m_success = false; - } - PAL_ENDTRY - - return param.m_success; -} - -struct TrapParam -{ - ICorJitInfo* m_corInfo; - EXCEPTION_POINTERS m_exceptionPointers; - - void (*m_function)(void*); - void* m_param; - bool m_success; -}; - -static LONG __EEFilter(PEXCEPTION_POINTERS exceptionPointers, void* param) -{ - auto* trapParam = reinterpret_cast<TrapParam*>(param); - trapParam->m_exceptionPointers = *exceptionPointers; - return trapParam->m_corInfo->FilterException(exceptionPointers); -} - -bool Compiler::eeRunWithErrorTrapImp(void (*function)(void*), void* param) -{ - TrapParam trapParam; - trapParam.m_corInfo = info.compCompHnd; - trapParam.m_function = function; - trapParam.m_param = param; - trapParam.m_success = true; - - PAL_TRY(TrapParam*, __trapParam, &trapParam) - { - __trapParam->m_function(__trapParam->m_param); - } - PAL_EXCEPT_FILTER(__EEFilter) - { - trapParam.m_corInfo->HandleException(&trapParam.m_exceptionPointers); - trapParam.m_success = false; - } - PAL_ENDTRY - - return trapParam.m_success; -} - -#else // CORJIT_EE_VER <= 460 - bool Compiler::eeTryResolveToken(CORINFO_RESOLVED_TOKEN* resolvedToken) { return info.compCompHnd->tryResolveToken(resolvedToken); @@ -1385,8 +1234,6 @@ bool Compiler::eeRunWithErrorTrapImp(void (*function)(void*), void* param) return info.compCompHnd->runWithErrorTrap(function, param); } -#endif // CORJIT_EE_VER > 460 - /***************************************************************************** * * Utility functions |