diff options
author | Gleb Balykov <g.balykov@samsung.com> | 2019-04-26 17:04:38 +0300 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2019-04-26 07:04:38 -0700 |
commit | f3a932ad6ebcb1135562843a53476e373f7b5de3 (patch) | |
tree | 8a0fbeddbb05a835c6fc9191517f6913df1ee88f | |
parent | 03e79408df6b14d36467cfc7eb30bd699f8d3849 (diff) | |
download | coreclr-f3a932ad6ebcb1135562843a53476e373f7b5de3.tar.gz coreclr-f3a932ad6ebcb1135562843a53476e373f7b5de3.tar.bz2 coreclr-f3a932ad6ebcb1135562843a53476e373f7b5de3.zip |
Add config value for jit host slab cache maximum size (#24254)
-rw-r--r-- | src/inc/clrconfigvalues.h | 2 | ||||
-rw-r--r-- | src/vm/eeconfig.cpp | 4 | ||||
-rw-r--r-- | src/vm/eeconfig.h | 4 | ||||
-rw-r--r-- | src/vm/jithost.cpp | 2 |
4 files changed, 11 insertions, 1 deletions
diff --git a/src/inc/clrconfigvalues.h b/src/inc/clrconfigvalues.h index 61258ae09c..3d8c26929d 100644 --- a/src/inc/clrconfigvalues.h +++ b/src/inc/clrconfigvalues.h @@ -369,6 +369,8 @@ RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_StackSamplingNumMethods, W("StackSamplingNu RETAIL_CONFIG_STRING_INFO_EX(INTERNAL_AltJitNgen, W("AltJitNgen"), "Enables AltJit for NGEN and selectively limits it to the specified methods.", CLRConfig::REGUTIL_default) #endif // defined(ALLOW_SXS_JIT_NGEN) +RETAIL_CONFIG_DWORD_INFO(EXTERNAL_JitHostMaxSlabCache, W("JitHostMaxSlabCache"), 0x1000000, "Sets jit host max slab cache size, 16MB default") + RETAIL_CONFIG_DWORD_INFO_DIRECT_ACCESS(EXTERNAL_JitOptimizeType, W("JitOptimizeType"), "") RETAIL_CONFIG_DWORD_INFO_EX(EXTERNAL_JitPrintInlinedMethods, W("JitPrintInlinedMethods"), 0, "", CLRConfig::REGUTIL_default) RETAIL_CONFIG_DWORD_INFO(EXTERNAL_JitTelemetry, W("JitTelemetry"), 1, "If non-zero, gather JIT telemetry data") diff --git a/src/vm/eeconfig.cpp b/src/vm/eeconfig.cpp index 9cb07fc2e8..0d4021fc88 100644 --- a/src/vm/eeconfig.cpp +++ b/src/vm/eeconfig.cpp @@ -211,6 +211,8 @@ HRESULT EEConfig::Init() dwSpinRetryCount = 0xA; dwMonitorSpinCount = 0; + dwJitHostMaxSlabCache = 0; + iJitOptimizeType = OPT_DEFAULT; fJitFramed = false; fJitAlignLoops = false; @@ -1003,6 +1005,8 @@ HRESULT EEConfig::sync() dwSpinRetryCount = CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_SpinRetryCount); dwMonitorSpinCount = CLRConfig::GetConfigValue(CLRConfig::INTERNAL_Monitor_SpinCount); + dwJitHostMaxSlabCache = CLRConfig::GetConfigValue(CLRConfig::EXTERNAL_JitHostMaxSlabCache); + fJitFramed = (GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_JitFramed, fJitFramed) != 0); fJitAlignLoops = (GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_JitAlignLoops, fJitAlignLoops) != 0); fJitMinOpts = (GetConfigDWORD_DontUse_(CLRConfig::UNSUPPORTED_JITMinOpts, fJitMinOpts) == 1); diff --git a/src/vm/eeconfig.h b/src/vm/eeconfig.h index 3a22adc74a..aef34b3236 100644 --- a/src/vm/eeconfig.h +++ b/src/vm/eeconfig.h @@ -272,6 +272,8 @@ public: DWORD MonitorSpinCount(void) const {LIMITED_METHOD_CONTRACT; return dwMonitorSpinCount; } // Jit-config + + DWORD JitHostMaxSlabCache(void) const {LIMITED_METHOD_CONTRACT; return dwJitHostMaxSlabCache; } unsigned int GenOptimizeType(void) const {LIMITED_METHOD_CONTRACT; return iJitOptimizeType; } bool JitFramed(void) const {LIMITED_METHOD_CONTRACT; return fJitFramed; } @@ -782,6 +784,8 @@ private: //---------------------------------------------------------------- // Jit-config + DWORD dwJitHostMaxSlabCache; // max size for jit host slab cache + bool fJitFramed; // Enable/Disable EBP based frames bool fJitAlignLoops; // Enable/Disable loop alignment bool fAddRejitNops; // Enable/Disable nop padding for rejit. default is true diff --git a/src/vm/jithost.cpp b/src/vm/jithost.cpp index a037af4857..a3190bb6b5 100644 --- a/src/vm/jithost.cpp +++ b/src/vm/jithost.cpp @@ -119,7 +119,7 @@ void JitHost::freeSlab(void* slab, size_t actualSize) { CrstHolder lock(&m_jitSlabAllocatorCrst); - if (m_totalCached < 0x1000000) // Do not cache more than 16MB + if (m_totalCached < g_pConfig->JitHostMaxSlabCache()) // Do not cache more than maximum allowed value { m_totalCached += actualSize; |