ICorProfilerCallback::JITCachedFunctionSearchStarted-Methode
Benachrichtigt den Profiler, dass eine Suche für eine Funktion begonnen wurde, die vorher mit Native Image Generator (NGen.exe) kompiliert wurde.
HRESULT JITCachedFunctionSearchStarted(
[in] FunctionID functionId,
[out] BOOL *pbUseCachedFunction);
Parameter
functionId
[in] Die ID der Funktion, für die die Suche ausgeführt wird.pbUseCachedFunction
[out] true, wenn das Ausführungsmodul die zwischengespeicherte Version einer Funktion (sofern verfügbar) verwenden soll; andernfalls false. Wenn der Wert false ist, JIT-kompiliert das Ausführungsmodul die Funktion, anstatt eine nicht JIT-kompilierte Version zu verwenden.
Hinweise
In .NET Framework, Version 2.0, finden die JITCachedFunctionSearchStarted-Rückrufe und die ICorProfilerCallback::JITCachedFunctionSearchFinished Method-Rückrufe nicht für alle Funktionen in regulären NGen-Abbildern statt. Nur NGen-Abbilder, die für ein Profil optimiert sind, generieren Rückrufe für alle Funktionen im Abbild. Wegen des zusätzlichen Aufwands sollte ein Profiler für ihn optimierte NGen-Abbilder aber nur anfordern, wenn er diese Rückrufe verwenden möchte, um die JIT-Kompilierung einer Funktion zu erzwingen. Andernfalls sollte der Profiler eine Lazy-Strategie zum Erfassen von Funktionsinformationen verwenden.
Profiler müssen Fälle unterstützen, in denen mehrere Threads einer Anwendung mit Profil dieselbe Methode gleichzeitig aufrufen. Beispielsweise ruft Thread A JITCachedFunctionSearchStarted auf, und der Profiler reagiert durch Festlegen von pbUseCachedFunctionauf FALSE, um die JIT-Kompilierung zu erzwingen. Anschließend ruft Thread A ICorProfilerCallback::JITCompilationStarted und ICorProfilerCallback::JITCompilationFinished auf.
Jetzt ruft Thread B JITCachedFunctionSearchStarted für dieselbe Funktion auf. Auch wenn der Profiler seine Absicht angegeben hat, die Funktion zu JIT-kompilieren, empfängt der Profiler den zweiten Rückruf, weil Thread B den Rückruf sendet, bevor der Profiler auf den Aufruf von JITCachedFunctionSearchStarted durch Thread A reagiert hat. Die Reihenfolge, in der Threads Aufrufe durchführen, hängt davon ab, wie die Threads geplant werden.
Wenn der Profiler doppelte Rückrufe empfängt, muss er den Wert, auf den von pbUseCachedFunction verwiesen wird, für alle doppelten Rückrufe auf denselben Wert festlegen. Das heißt, dass der Profiler bei mehreren Aufrufen von JITCachedFunctionSearchStarted mit demselben functionId-Wert jedes Mal auf die gleiche Weise reagieren muss.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: CorProf.idl, CorProf.h
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0