Metodo ICorProfilerInfo4::RequestReJIT
Richiede la ricompilazione JIT di tutte le istanze delle funzioni specificate.
Sintassi
HRESULT RequestReJIT (
[in] ULONG cFunctions,
[in, size_is(cFunctions)] ModuleID moduleIds[],
[in, size_is(cFunctions)] mdMethodDef methodIds[]);
Parametri
cFunctions
[in] Numero di funzioni da ricompilare.
moduleIds
[in] Specifica la parte moduleId
delle coppie (module
, methodDef
) che identificano le funzioni da ricompilare.
methodIds
[in] Specifica la parte methodId
delle coppie (module
, methodDef
) che identificano le funzioni da ricompilare.
Valore restituito
Questo metodo restituisce gli specifici HRESULT seguenti, nonché gli errori di HRESULT che indicano la mancata riuscita del metodo.
HRESULT | Descrizione |
---|---|
S_OK | Si è tentato di contrassegnare tutti i metodi per la ricompilazione JIT. Il profiler deve implementare il metodo ICorProfilerCallback4::ReJITError per determinare quali metodi sono stati contrassegnati correttamente per la ricompilazione JIT. |
CORPROF_E_CALLBACK4_REQUIRED | Il profiler deve implementare l'interfaccia ICorProfilerCallback4 per questa chiamata da supportare. |
CORPROF_E_REJIT_NOT_ENABLED | La ricompilazione JIT non è stata abilitata. È necessario abilitare la ricompilazione JIT durante l'inizializzazione usando il metodo ICorProfilerInfo::SetEventMask per impostare il COR_PRF_ENABLE_REJIT flag. |
E_INVALIDARG | Il parametro cFunctions è pari a 0 oppure moduleIds o methodIds è NULL . |
E_OUTOFMEMORY | CLR non è stato in grado di completare la richiesta a causa di memoria insufficiente. |
Commenti
Chiamare RequestReJIT
per ottenere la ricompilazione tramite il runtime di un set di funzioni specificato. Un profiler di codice può quindi usare l'interfaccia ICorProfilerFunctionControl per modificare il codice generato quando le funzioni vengono ricompilate. Questa operazione non influisce sulle funzioni attualmente in esecuzione, ma solo sulle chiamate di funzione future. Se una delle funzioni specificate è stata precedentemente ricompilata tramite JIT, la richiesta di ricompilazione equivale al ripristino e alla ricompilazione della funzione. Per mantenere la reversibilità, quando il compilatore JIT compila la versione originale di una funzione, considera solo le versioni originali dei relativi chiamati per le decisioni di incorporamento (inlining). Quando il compilatore JIT ricompila una funzione, considera le versioni correnti (ricompilate o originali) dei relativi chiamati per l'incorporamento.
In genere, un profiler chiama RequestReJIT
in risposta all'input dell'utente che richiede al profiler di instrumentare uno o più metodi. RequestReJIT
in genere sospende il runtime per eseguire le proprie attività e potrebbe attivare una Garbage Collection. Di conseguenza, il profiler dovrebbe chiamare RequestReJIT
da un thread creato in precedenza e non da un thread creato da CLR che sta eseguendo un callback del profiler.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorProf.idl, CorProf.h
Libreria: CorGuids.lib
Versioni di .NET Framework: Disponibile dalla versione 4.5