Condividi tramite


Metodo ICorProfilerCallback4::ReJITCompilationStarted

Notifica al profiler che il compilatore JIT (Just-In-Time) ha iniziato a ricompilare una funzione.

Sintassi

HRESULT ReJITCompilationStarted(
    [in] FunctionID functionId,  
    [in] ReJITID    rejitId,  
    [in] BOOL       fIsSafeToBlock);  

Parametri

functionId
[in] ID della funzione avviata dal compilatore JIT.

rejitId
[in] ID ricompilazione della nuova versione della funzione.

fIsSafeToBlock
[in] true per indicare che il blocco può causare l'attesa del runtime per il ritorno del thread chiamante da questo callback; false per indicare che il blocco non influisce sull'operazione del runtime. Un valore di true non danneggiare il runtime, ma può influire sui risultati della profilatura.

Commenti

È possibile ricevere più di una coppia di ReJITCompilationStarted chiamate al metodo ReJITCompilationFinished per ogni funzione a causa del modo in cui il runtime gestisce i costruttori di classi. Ad esempio, il runtime inizia a ricompilare il metodo A, ma il costruttore della classe per la classe B deve essere eseguito. Pertanto, il runtime ricompila il costruttore per la classe B ed è in esecuzione. Mentre il costruttore è in esecuzione, esegue una chiamata al metodo A, che causa la ricompilata del metodo A. In questo scenario viene interrotta la prima ricompilazione del metodo A. Tuttavia, entrambi i tentativi di ricompilare il metodo A vengono segnalati con eventi di ricompilazione JIT.

I profiler devono supportare la sequenza di callback di ricompilazione JIT nei casi in cui due thread eseguono simultaneamente il callback. Ad esempio, thread A chiama ReJITCompilationStarted; tuttavia, prima del thread A chiama ReJITCompilationFinished, thread B chiama ICorProfilerCallback::ExceptionSearchFunctionEnter con l'ID ReJITCompilationStarted funzione dal callback per thread A. Potrebbe sembrare che l'ID funzione non sia ancora valido perché una chiamata a ReJITCompilationFinished non è ancora stata ricevuta dal profiler. Tuttavia, in questo caso, l'ID funzione è valido.

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