From c47362766e24ab4a7195fa1fb851d254c7b84373 Mon Sep 17 00:00:00 2001 From: Bruce Forstall Date: Tue, 4 Oct 2016 15:12:46 -0700 Subject: Enable legacy JIT fallback for CoreCLR on Windows x86 This is to support the eventual case where RyuJIT/x86 becomes the default x86 JIT, but we support fallback to the older, legacy JIT32/x86 (which will be renamed compatjit.dll). This uses the same mechanism that was built for .NET 4.6 when RyuJIT/x64 was shipped, and allowed fallback to JIT64 as compatjit.dll. However, we use a different configuration name to avoid conflicting with the .NET 4.6 COMPlus_useLegacy name (and unintentionally causing users to fall back to JIT64 with their .NET 4.6 apps). The COMPlus variable is COMPlus_UseWindowsX86CoreLegacyJit=1. For the dotnet.exe host, you can set `"System.JIT.UseWindowsX86CoreLegacyJit": true` in the "configProperties" section of the app.runtimeconfig.json file. There is a new COMPlus_RequireLegacyJit=1 option to aid testing JIT fallback. --- src/inc/clrconfigvalues.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/inc') diff --git a/src/inc/clrconfigvalues.h b/src/inc/clrconfigvalues.h index 1bd04197f5..3e166da9cb 100644 --- a/src/inc/clrconfigvalues.h +++ b/src/inc/clrconfigvalues.h @@ -477,6 +477,12 @@ RETAIL_CONFIG_DWORD_INFO(EXTERNAL_UseLegacyJit, W("useLegacyJit"), 0, "Set to 1 RETAIL_CONFIG_STRING_INFO_EX(EXTERNAL_DisableNativeImageLoadList, W("DisableNativeImageLoadList"), "Refuse to load native images corresponding to one of the assemblies on this semicolon-delimited list of assembly names.", CLRConfig::REGUTIL_default) #endif +#if defined(FEATURE_CORECLR) && defined(_TARGET_X86_) +RETAIL_CONFIG_DWORD_INFO(EXTERNAL_UseWindowsX86CoreLegacyJit, W("UseWindowsX86CoreLegacyJit"), 0, "Set to 1 to do all JITing with compatjit.dll. Only applicable to Windows x86 .NET Core.") +#endif + +RETAIL_CONFIG_DWORD_INFO(EXTERNAL_RequireLegacyJit, W("RequireLegacyJit"), 0, "Set to 1 to require the use of legacy JIT (via COMPlus_useLegacyJit=1 or COMPlus_UseWindowsX86CoreLegacyJit=1).") + CONFIG_STRING_INFO_EX(INTERNAL_JitValNumCSE, W("JitValNumCSE"), "Enables ValNum CSE for the specified methods", CLRConfig::REGUTIL_default) CONFIG_STRING_INFO_EX(INTERNAL_JitLexicalCSE, W("JitLexicalCSE"), "Enables Lexical CSE for the specified methods", CLRConfig::REGUTIL_default) CONFIG_DWORD_INFO_EX(INTERNAL_JitNoCSE, W("JitNoCSE"), 0, "", CLRConfig::REGUTIL_default) -- cgit v1.2.3