Partager via


ICorProfilerInfo4::RequestReJIT, méthode

Demande une recompilation juste-à-temps de toutes les instances des fonctions spécifiées.

Syntaxe

HRESULT RequestReJIT (  
   [in] ULONG    cFunctions,  
   [in, size_is(cFunctions)]  ModuleID    moduleIds[],  
   [in, size_is(cFunctions)]  mdMethodDef methodIds[]);  

Paramètres

cFunctions
[in] Nombre de fonctions à recompiler.

moduleIds
[in] Spécifie la partie moduleId des paires (module, methodDef) qui identifient les fonctions à recompiler.

methodIds
[in] Spécifie la partie methodId des paires (module, methodDef) qui identifient les fonctions à recompiler.

Valeur de retour

Cette méthode retourne les HRESULT spécifiques suivants ainsi que les erreurs HRESULT indiquant l'échec de la méthode.

HRESULT Description
S_OK Une tentative a été effectuée pour marquer toutes les méthodes de recompilation juste-à-temps. Le profileur doit implémenter la méthode ICorProfilerCallback4::ReJITError pour déterminer les méthodes qui ont été correctement marquées pour la recompilation juste-à-temps.
CORPROF_E_CALLBACK4_REQUIRED Le profileur doit implémenter l’interface ICorProfilerCallback4 pour que cet appel soit pris en charge.
CORPROF_E_REJIT_NOT_ENABLED La recompilation juste-à-temps n'a pas été activée. Vous devez activer la recompilation juste-à-temps pendant l’initialisation à l’aide de la méthode ICorProfilerInfo::SetEventMask pour définir l’indicateur COR_PRF_ENABLE_REJIT.
E_INVALIDARG cFunctions est égal à 0, ou moduleIds ou methodIds a la valeur NULL.
E_OUTOFMEMORY Le CLR n'a pas pu terminer la demande en raison d'une mémoire insuffisante.

Notes

Appelez RequestReJIT pour que le runtime recompile un jeu spécifié de fonctions. Un profileur de code peut ensuite utiliser l’interface ICorProfilerFunctionControl pour ajuster le code généré quand les fonctions sont recompilées. Cela n'affecte pas les fonctions en cours d'exécution ; seules les futurs appels de fonction sont concernés. Si aucune des fonctions spécifiées n'a précédemment été recompilée juste-à-temps, le fait de demander une recompilation équivaut à restaurer et à recompiler la fonction. Pour conserver la capacité de restauration, le compilateur juste-à-temps tient uniquement compte des versions originales de ses appelés dans le cadre des décisions d'incorporation quand il compile la version d'origine d'une fonction. Quand le compilateur juste-à-temps recompile une fonction, il tient compte des versions actuelles (recompilées ou d'origine) de ses appelés pour l'incorporation.

Un profileur appelle généralement RequestReJIT en réponse à une entrée utilisateur demandant au profileur d'instrumenter une ou plusieurs méthodes. RequestReJIT interrompt généralement le runtime pour effectuer une partie de son travail et peut éventuellement déclencher un garbage collection. Par conséquent, le profileur doit appeler RequestReJIT à partir d'un thread créé précédemment et non à partir d'un thread créé par le CLR qui exécute actuellement un rappel de profileur.

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 4.5

Voir aussi