ICorProfilerCallback4::ReJITCompilationStarted-Methode
Benachrichtigt den Profiler, dass der JIT-Compiler (Just-in-Time) die erneute Kompilierung einer Funktion begonnen hat.
Syntax
HRESULT ReJITCompilationStarted(
[in] FunctionID functionId,
[in] ReJITID rejitId,
[in] BOOL fIsSafeToBlock);
Parameter
functionId
[in] Die ID der Funktion, deren erneute Kompilierung durch den JIT-Compiler gestartet wurde.
rejitId
[in] Die Neukompilierungs-ID der neuen Version der Funktion.
fIsSafeToBlock
[in] true
, wenn die Blockierung dazu führen kann, dass die Runtime auf die Rückkehr des aufrufenden Threads von diesem Rückruf wartet; false
, wenn die Blockierung sich nicht auf Vorgänge der Runtime auswirkt. Ein Wert von true
schadet der Runtime nicht, kann sich aber auf die Profilerstellungsergebnisse auswirken.
Bemerkungen
Aufgrund der Art und Weise, wie die Runtime Klassenkonstruktoren verarbeitet, ist es möglich, mehr als ein Paar von ReJITCompilationStarted
- und ReJITCompilationFinished-Methodenaufrufen für die einzelnen Funktionen zu empfangen. Beispielsweise beginnt die Runtime mit dem erneuten Kompilieren der Methode A, aber der Klassenkonstruktor für Klasse B muss ausgeführt werden. Daher kompiliert die Runtime den Konstruktor für Klasse B erneut und führt ihn aus. Während der Konstruktor ausgeführt wird, erfolgt ein Aufruf der Methode A, wodurch Methode A erneut kompiliert wird. In diesem Szenario wird die erste Neukompilierung der Methode A angehalten. Beide Versuche der erneuten Kompilierung von Methode A werden jedoch mit JIT-Neukompilierungsereignissen gemeldet.
Profiler müssen die Sequenz von JIT-Rückrufen zur Neukompilierung unterstützen, wenn zwei Threads gleichzeitig Rückrufe ausführen. Beispielsweise ruft Thread A ReJITCompilationStarted
auf. Bevor Thread A ReJITCompilationFinished aufruft, ruft Thread B jedoch ICorProfilerCallback::ExceptionSearchFunctionEnter mit der Funktions-ID aus dem ReJITCompilationStarted
-Rückruf für Thread A auf. Es wäre anzunehmen, dass die Funktions-ID noch nicht gültig ist, da vom Profiler noch kein Aufruf von ReJITCompilationFinished empfangen wurde. In diesem Fall 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 Version 4.5 verfügbar