Share via


ICorProfilerCallback::JITCachedFunctionSearchStarted, méthode

Avertit le profileur qu’une recherche a été lancée pour une fonction compilée précédemment à l’aide du générateur d’images natives (NGen.exe).

Syntaxe

HRESULT JITCachedFunctionSearchStarted(  
    [in]  FunctionID functionId,  
    [out] BOOL *pbUseCachedFunction);  

Paramètres

functionId
[in] ID de la fonction pour laquelle la recherche est effectuée.

pbUseCachedFunction
[out] true si le moteur d’exécution doit utiliser la version mise en cache d’une fonction (si disponible) ; sinon, false. Si la valeur est false, le moteur d’exécution utilise le compilateur JIT pour compiler la fonction au lieu d’utiliser une version qui n’est pas compilée par le compilateur JIT.

Notes

Dans .NET Framework version 2.0, les rappels de JITCachedFunctionSearchStarted et de la méthode ICorProfilerCallback::JITCachedFunctionSearchFinished ne seront pas effectués pour toutes les fonctions dans les images NGen normales. Seules les images NGen optimisées pour un profil génèrent des rappels pour toutes les fonctions de l’image. Toutefois, en raison de la surcharge supplémentaire, un profileur ne doit demander des images NGen optimisées pour le profileur que s’il prévoit d’utiliser ces rappels pour forcer la compilation juste-à-temps (JIT) d’une fonction. Sinon, le profileur doit utiliser une stratégie différée pour collecter des informations de fonction.

Les profileurs doivent prendre en charge les situations où plusieurs threads d’une application profilée peuvent appeler simultanément la même méthode. Par exemple, le thread A appelle JITCachedFunctionSearchStarted et le profileur répond en définissant pbUseCachedFunction sur FALSE pour forcer la compilation JIT. Le thread A appelle ensuite ICorProfilerCallback::JITCompilationStarted et ICorProfilerCallback::JITCompilationFinished.

À présent, le thread B appelle JITCachedFunctionSearchStarted pour la même fonction. Même si le profileur a déclaré son intention d’exécuter une compilation JIT sur la fonction, le profileur reçoit le deuxième rappel, car le thread B a envoyé le rappel avant que le profileur ait répondu à l’appel du thread A à JITCachedFunctionSearchStarted. L’ordre dans lequel les threads effectuent les appels dépend de la façon dont les threads sont planifiés.

Lorsque le profileur reçoit des rappels en double, il doit définir la valeur référencée par pbUseCachedFunction sur la même valeur pour tous les rappels en double. Autrement dit, lorsque JITCachedFunctionSearchStarted est appelé plusieurs fois avec la même valeur functionId, le profileur doit répondre la même chose à chaque fois.

Spécifications

Plateformes : Consultez Configuration requise.

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

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi