Partager via


ICorProfilerCallback4::ReJITCompilationStarted, méthode

Avertit le profileur que le compilateur juste-à-temps (JIT) a commencé à recompiler une fonction.

Syntaxe

HRESULT ReJITCompilationStarted(
    [in] FunctionID functionId,  
    [in] ReJITID    rejitId,  
    [in] BOOL       fIsSafeToBlock);  

Paramètres

functionId
[in] ID de la fonction que le compilateur JIT a commencé à recompiler.

rejitId
[in] ID de recompilation de la nouvelle version de la fonction.

fIsSafeToBlock
[in] true pour indiquer qu’un blocage peut avoir pour effet que le runtime attende que le thread appelant retourne à partir de ce rappel ; false pour indiquer qu’un blocage n’affectera pas l’opération du runtime. La valeur true ne nuit pas au runtime, mais elle peut affecter les résultats du profilage.

Notes

Il est possible de recevoir plusieurs paires d’appels de méthodes ReJITCompilationStarted et ReJITCompilationFinished pour chaque fonction en raison de la façon dont le runtime gère les constructeurs de classe. Par exemple, le runtime commence à recompiler la méthode A, mais le constructeur de classe de la classe B doit être exécuté. Le runtime recompile donc le constructeur de la classe B, et l’exécute. Pendant l’exécution du constructeur, il appelle la méthode A, ce qui entraîne une nouvelle recompilation de la méthode A. Dans ce scénario, la première recompilation de la méthode A est arrêtée. Toutefois, les deux tentatives de recompilation de la méthode A sont signalées avec les événements de recompilation JIT.

Les profileurs doivent prendre en charge la séquence de rappels de recompilation JIT dans les cas où deux threads effectuent des rappels simultanément. Par exemple, le thread A appelle ReJITCompilationStarted. Toutefois, avant que le thread A n’appelle ReJITCompilationFinished, le thread B appelle ICorProfilerCallback::ExceptionSearchFunctionEnter avec l’ID de fonction du rappel de ReJITCompilationStarted pour le thread A. Il peut arriver que l’ID de fonction ne soit pas encore valide, car le profileur n’a pas encore reçu d’appel à ReJITCompilationFinished. Toutefois, dans ce cas, l’ID de fonction est valide.

Configuration requise

Plateformes : Consultez Configuration requise.

En-tête : CorProf.idl, CorProf.h

Bibliothèque : CorGuids.lib

Versions de .NET Framework : disponible depuis la version 4.5

Voir aussi