ICorProfilerCallback::JITCompilationStarted-Methode

Benachrichtigt den Profiler, dass der JIT-Compiler (Just-In-Time) mit dem Kompilieren einer Funktion begonnen hat.

Syntax

HRESULT JITCompilationStarted(
    [in] FunctionID functionId,
    [in] BOOL       fIsSafeToBlock);

Parameter

functionId [in] Die ID der Funktion, für die die Kompilierung gestartet wird.

fIsSafeToBlock [in] Ein Wert, der angibt, ob sich die Blockierung auf den Vorgang der Laufzeit auswirkt. Der Wert entspricht true, wenn die Blockierung dazu führen kann, dass die Runtime wartet, bis der aufrufende Thread von diesem Rückruf zurückgegeben wird. Andernfalls lautet er false.

Obwohl ein Wert von true die Runtime nicht beeinträchtigt, kann er die Profilerstellungsergebnisse verzerren.

Bemerkungen

Aufgrund der Art und Weise, wie die Runtime Klassenkonstruktoren verarbeitet, ist es möglich, mehr als ein Paar von JITCompilationStarted- und ICorProfilerCallback::JITCompilationFinished-Aufrufen für jede Funktion zu empfangen. Beispielsweise beginnt die Runtime mit der JIT-Compiler-Methode A, aber der Klassenkonstruktor für Klasse B muss ausgeführt werden. Daher kompiliert die Runtime den Konstruktor für Klasse B Just-In-Time und führt ihn aus. Während der Konstruktor ausgeführt wird, wird die Methode A aufgerufen, wodurch Methode A erneut JIT-kompiliert wird. In diesem Szenario wird die erste JIT-Kompilierung der Methode A angehalten. Beide Versuche der JIT-Kompilierung von Methode A werden jedoch mit JIT-Kompilierungsereignissen gemeldet. Wenn der Profiler den CIL-Code (Common Intermediate Language) für Methode A durch Aufrufen der ICorProfilerInfo::SetILFunctionBody-Methode ersetzt, muss dies für beide JITCompilationStarted Ereignisse erfolgen, aber er kann denselben CIL-Block für beide Verwenden.

Profiler müssen die Sequenz von JIT-Rückrufen unterstützen, wenn zwei Threads gleichzeitig Rückrufe ausführen. Thread A ruft beispielsweise JITCompilationStarted auf. Bevor Thread A jedoch JITCompilationFinished aufruft, ruft Thread B die ICorProfilerCallback::ExceptionSearchFunctionEnter-Methode mit der Funktions-ID des JITCompilationStarted-Rückrufs von Thread A auf. Möglicherweise ist die Funktions-ID noch nicht gültig, weil der Profiler noch keinen Aufruf von JITCompilationFinished empfangen hat. In einem Fall wie diesem ist die Funktions-ID jedoch gültig.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch