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