diff options
Diffstat (limited to 'src/inc')
-rw-r--r-- | src/inc/CrstTypes.def | 2 | ||||
-rw-r--r-- | src/inc/clrconfigvalues.h | 14 | ||||
-rw-r--r-- | src/inc/corcompile.h | 9 | ||||
-rw-r--r-- | src/inc/corprof.idl | 18 | ||||
-rw-r--r-- | src/inc/crsttypes.h | 3 | ||||
-rw-r--r-- | src/inc/daccess.h | 6 | ||||
-rw-r--r-- | src/inc/eventtracebase.h | 21 | ||||
-rw-r--r-- | src/inc/profilepriv.inl | 15 | ||||
-rw-r--r-- | src/inc/switches.h | 3 | ||||
-rw-r--r-- | src/inc/winrt/paraminstanceapi.h | 7 |
10 files changed, 70 insertions, 28 deletions
diff --git a/src/inc/CrstTypes.def b/src/inc/CrstTypes.def index 227f986a85..5bf4ec63db 100644 --- a/src/inc/CrstTypes.def +++ b/src/inc/CrstTypes.def @@ -781,5 +781,5 @@ Crst InlineTrackingMap End Crst EventPipe - AcquiredBefore ThreadIdDispenser ThreadStore + AcquiredBefore ThreadIdDispenser ThreadStore DomainLocalBlock InstMethodHashTable End diff --git a/src/inc/clrconfigvalues.h b/src/inc/clrconfigvalues.h index a0c24567d7..c4722bc44a 100644 --- a/src/inc/clrconfigvalues.h +++ b/src/inc/clrconfigvalues.h @@ -460,20 +460,6 @@ RETAIL_CONFIG_STRING_INFO_EX(INTERNAL_AltJitNgen, W("AltJitNgen"), "Enables AltJ #endif // defined(ALLOW_SXS_JIT_NGEN) CONFIG_DWORD_INFO_EX(INTERNAL_JitNoCMOV, W("JitNoCMOV"), 0, "", CLRConfig::REGUTIL_default) -#if defined(_TARGET_AMD64_) -// UseRyuJIT is only looked up in HKLM in the registry, not in config files or environment variables. It should only be set by the .NET 4.6 (and later version) installers, -// not by users. See the "RyuJIT Compatibility Fallback Design Specification.docx" document for details. -RETAIL_CONFIG_DWORD_INFO_EX(INTERNAL_UseRyuJit, W("UseRyuJIT"), 0, "Set to 1 by .NET 4.6 installer to indicate RyuJIT should be used, not JIT64.", CLRConfig::IgnoreEnv | CLRConfig::IgnoreHKCU | CLRConfig::IgnoreConfigFiles) -RETAIL_CONFIG_DWORD_INFO(EXTERNAL_UseLegacyJit, W("useLegacyJit"), 0, "Set to 1 to do all JITing with compatjit.dll. Only applicable to x64.") -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(_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) diff --git a/src/inc/corcompile.h b/src/inc/corcompile.h index f99e27eec0..68eefc143a 100644 --- a/src/inc/corcompile.h +++ b/src/inc/corcompile.h @@ -468,15 +468,6 @@ struct CORCOMPILE_EE_INFO_TABLE DWORD threadTlsIndex; DWORD rvaStaticTlsIndex; - -// These are used by the 64-bit JITs to detect calls to thunks in the .nep section -// and conditionally eliminate double-thunking (managed-to-native-to-managed). -// During prejit these are set to the RVAs of the .nep section. When the prejitted -// image is actually loaded, these are fixed up to point to the actual .nep section -// of the ijw image (not the native image). - - BYTE * nativeEntryPointStart; - BYTE * nativeEntryPointEnd; }; /*********************************************************************************/ diff --git a/src/inc/corprof.idl b/src/inc/corprof.idl index 3378431317..db67b3c6bb 100644 --- a/src/inc/corprof.idl +++ b/src/inc/corprof.idl @@ -621,9 +621,11 @@ typedef enum COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED = 0x00000002, + COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS = 0x00000004, + COR_PRF_HIGH_REQUIRE_PROFILE_IMAGE = 0, - COR_PRF_HIGH_ALLOWABLE_AFTER_ATTACH = COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED, + COR_PRF_HIGH_ALLOWABLE_AFTER_ATTACH = COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED | COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS, // MONITOR_IMMUTABLE represents all flags that may only be set during initialization. // Trying to change any of these flags elsewhere will result in a @@ -2408,6 +2410,20 @@ interface ICorProfilerCallback8 : ICorProfilerCallback7 [in] BOOL fIsSafeToBlock); } +[ + object, + uuid(27583EC3-C8F5-482F-8052-194B8CE4705A), + pointer_default(unique), + local +] +interface ICorProfilerCallback9 : ICorProfilerCallback8 +{ + // This event is triggered whenever a dynamic method is garbage collected + // and subsequently unloaded. + + HRESULT DynamicMethodUnloaded([in] FunctionID functionId); +} + /* * COR_PRF_CODEGEN_FLAGS controls various flags and hooks for a specific diff --git a/src/inc/crsttypes.h b/src/inc/crsttypes.h index b4f6f49e64..55dc5bd4ab 100644 --- a/src/inc/crsttypes.h +++ b/src/inc/crsttypes.h @@ -237,7 +237,7 @@ int g_rgCrstLevelMap[] = 3, // CrstDynamicMT 3, // CrstDynLinkZapItems 7, // CrstEtwTypeLogHash - 11, // CrstEventPipe + 17, // CrstEventPipe 0, // CrstEventStore 0, // CrstException 7, // CrstExecuteManLock @@ -560,4 +560,3 @@ inline static LPCSTR GetCrstName(CrstType crstType) } #endif // defined(__IN_CRST_CPP) && defined(_DEBUG) - diff --git a/src/inc/daccess.h b/src/inc/daccess.h index 7d82e86cb9..40aba86f21 100644 --- a/src/inc/daccess.h +++ b/src/inc/daccess.h @@ -617,6 +617,11 @@ typedef struct _DacGlobals ULONG fn__ThreadpoolMgr__AsyncTimerCallbackCompletion; ULONG fn__DACNotifyCompilationFinished; ULONG fn__ThePreStub; + +#ifdef _TARGET_ARM_ + ULONG fn__ThePreStubCompactARM; +#endif // _TARGET_ARM_ + ULONG fn__ThePreStubPatchLabel; ULONG fn__PrecodeFixupThunk; ULONG fn__StubDispatchFixupStub; @@ -2345,6 +2350,7 @@ typedef ArrayDPTR(signed char) PTR_SBYTE; typedef ArrayDPTR(const BYTE) PTR_CBYTE; typedef DPTR(INT8) PTR_INT8; typedef DPTR(INT16) PTR_INT16; +typedef DPTR(UINT16) PTR_UINT16; typedef DPTR(WORD) PTR_WORD; typedef DPTR(USHORT) PTR_USHORT; typedef DPTR(DWORD) PTR_DWORD; diff --git a/src/inc/eventtracebase.h b/src/inc/eventtracebase.h index bd5ad1a2d0..2ed5317250 100644 --- a/src/inc/eventtracebase.h +++ b/src/inc/eventtracebase.h @@ -103,7 +103,18 @@ enum EtwThreadFlags #else //defined(FEATURE_PAL) +#if defined(FEATURE_PERFTRACING) +#define ETW_INLINE +#define ETWOnStartup(StartEventName, EndEventName) +#define ETWFireEvent(EventName) +#define ETW_TRACING_INITIALIZED(RegHandle) (TRUE) +#define ETW_EVENT_ENABLED(Context, EventDescriptor) (EventPipeHelper::Enabled() || XplatEventLogger::IsEventLoggingEnabled()) +#define ETW_CATEGORY_ENABLED(Context, Level, Keyword) (EventPipeHelper::Enabled() || XplatEventLogger::IsEventLoggingEnabled()) +#define ETW_TRACING_ENABLED(Context, EventDescriptor) (EventEnabled##EventDescriptor()) +#define ETW_TRACING_CATEGORY_ENABLED(Context, Level, Keyword) (EventPipeHelper::Enabled() || XplatEventLogger::IsEventLoggingEnabled()) +#define ETW_PROVIDER_ENABLED(ProviderSymbol) (TRUE) +#else //defined(FEATURE_PERFTRACING) #define ETW_INLINE #define ETWOnStartup(StartEventName, EndEventName) #define ETWFireEvent(EventName) @@ -114,7 +125,7 @@ enum EtwThreadFlags #define ETW_TRACING_ENABLED(Context, EventDescriptor) (EventEnabled##EventDescriptor()) #define ETW_TRACING_CATEGORY_ENABLED(Context, Level, Keyword) (XplatEventLogger::IsEventLoggingEnabled()) #define ETW_PROVIDER_ENABLED(ProviderSymbol) (TRUE) - +#endif // defined(FEATURE_PERFTRACING) #endif // !defined(FEATURE_PAL) #else // FEATURE_EVENT_TRACE @@ -217,6 +228,14 @@ extern BOOL g_fEEIJWStartup; #define GetClrInstanceId() (static_cast<UINT16>(g_nClrInstanceId)) +#if defined(FEATURE_PERFTRACING) +class EventPipeHelper +{ +public: + static bool Enabled(); +}; +#endif // defined(FEATURE_PERFTRACING) + #if defined(FEATURE_EVENT_TRACE) || defined(FEATURE_EVENTSOURCE_XPLAT) #include "clrconfig.h" diff --git a/src/inc/profilepriv.inl b/src/inc/profilepriv.inl index e7c82074be..d334e1086b 100644 --- a/src/inc/profilepriv.inl +++ b/src/inc/profilepriv.inl @@ -736,6 +736,21 @@ inline BOOL CORProfilerInMemorySymbolsUpdatesEnabled() ((&g_profControlBlock)->dwEventMaskHigh & COR_PRF_HIGH_IN_MEMORY_SYMBOLS_UPDATED)); } +inline BOOL CORProfilerIsMonitoringDynamicFunctionUnloads() +{ + CONTRACTL + { + NOTHROW; + GC_NOTRIGGER; + CANNOT_TAKE_LOCK; + SO_NOT_MAINLINE; + } + CONTRACTL_END; + + return (CORProfilerPresent() && + ((&g_profControlBlock)->dwEventMaskHigh & COR_PRF_HIGH_MONITOR_DYNAMIC_FUNCTION_UNLOADS)); +} + #if defined(PROFILING_SUPPORTED) && !defined(CROSSGEN_COMPILE) #if defined(FEATURE_PROFAPI_ATTACH_DETACH) diff --git a/src/inc/switches.h b/src/inc/switches.h index bb303876e8..79964530fa 100644 --- a/src/inc/switches.h +++ b/src/inc/switches.h @@ -235,3 +235,6 @@ #endif // !defined(CROSSGEN_COMPILE) +#if defined(FEATURE_INTERPRETER) && defined(CROSSGEN_COMPILE) +#undef FEATURE_INTERPRETER +#endif diff --git a/src/inc/winrt/paraminstanceapi.h b/src/inc/winrt/paraminstanceapi.h index 062c7f3d08..81ee4c51c9 100644 --- a/src/inc/winrt/paraminstanceapi.h +++ b/src/inc/winrt/paraminstanceapi.h @@ -1642,7 +1642,14 @@ namespace Ro { namespace detail { DWORD dwcb; DWORD dwcbResult; +#ifdef _PREFAST_ +#pragma warning(push) +#pragma warning(disable: 33098) // "Banned hash algorithm is used" - SHA-1 is required for compatibility +#endif // _PREFAST_ CHKNT(BCryptOpenAlgorithmProvider(&_hAlg, BCRYPT_SHA1_ALGORITHM, MS_PRIMITIVE_PROVIDER, 0)); +#ifdef _PREFAST_ +#pragma warning(pop) +#endif // _PREFAST_ CHKNT(BCryptGetProperty(_hAlg, BCRYPT_OBJECT_LENGTH, reinterpret_cast<PBYTE>(&dwcb), sizeof(dwcb), &dwcbResult, 0)); |