From 2970be4f509085c1ecf703e2d0957183e0b726f6 Mon Sep 17 00:00:00 2001 From: David Barbet Date: Wed, 16 Apr 2025 15:13:54 -0700 Subject: [PATCH] Write ETW event for CreateNonLockingLoader --- src/Compilers/Core/Portable/CodeAnalysisEventSource.Common.cs | 3 +++ .../Core/Portable/DiagnosticAnalyzer/AnalyzerAssemblyLoader.cs | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/Compilers/Core/Portable/CodeAnalysisEventSource.Common.cs b/src/Compilers/Core/Portable/CodeAnalysisEventSource.Common.cs index 2cfdcf8cfbbce..b8e9e1df6ab39 100644 --- a/src/Compilers/Core/Portable/CodeAnalysisEventSource.Common.cs +++ b/src/Compilers/Core/Portable/CodeAnalysisEventSource.Common.cs @@ -109,6 +109,9 @@ internal unsafe void NodeTransform(int nodeHashCode, string name, string tableTy [Event(11, Message = "ALC for directory '{0}' disposal failed with exception '{1}'", Keywords = Keywords.Performance, Level = EventLevel.Error, Opcode = EventOpcode.Stop, Task = Tasks.AnalyzerAssemblyLoader)] internal void DisposeAssemblyLoadContextException(string directory, string errorMessage) => WriteEvent(11, directory, errorMessage); + [Event(12, Message = "CreateNonLockingLoader", Keywords = Keywords.Performance, Level = EventLevel.Informational, Task = Tasks.AnalyzerAssemblyLoader)] + internal void CreateNonLockingLoader(string directory) => WriteEvent(12, directory); + private static unsafe EventData GetEventDataForString(string value, char* ptr) { fixed (char* ptr2 = value) diff --git a/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerAssemblyLoader.cs b/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerAssemblyLoader.cs index da4e4cc62478b..1dea7a216e13d 100644 --- a/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerAssemblyLoader.cs +++ b/src/Compilers/Core/Portable/DiagnosticAnalyzer/AnalyzerAssemblyLoader.cs @@ -409,6 +409,7 @@ internal static IAnalyzerAssemblyLoaderInternal CreateNonLockingLoader( ImmutableArray assemblyResolvers = default, System.Runtime.Loader.AssemblyLoadContext? compilerLoadContext = null) { + CodeAnalysisEventSource.Log.CreateNonLockingLoader(windowsShadowPath); pathResolvers = pathResolvers.NullToEmpty(); assemblyResolvers = assemblyResolvers.NullToEmpty(); @@ -448,6 +449,7 @@ internal static IAnalyzerAssemblyLoaderInternal CreateNonLockingLoader( string windowsShadowPath, ImmutableArray pathResolvers = default) { + CodeAnalysisEventSource.Log.CreateNonLockingLoader(windowsShadowPath); pathResolvers = pathResolvers.NullToEmpty(); // The goal here is to avoid locking files on disk that are reasonably expected to be changed by