Condividi tramite


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

Vedi anche