Condividi tramite


Metodo ICorProfilerCallback::JITCompilationStarted

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

Sintassi

HRESULT JITCompilationStarted(
    [in] FunctionID functionId,
    [in] BOOL       fIsSafeToBlock);

Parametri

functionId [in] ID della funzione per cui viene avviata la compilazione.

fIsSafeToBlock [in] Valore che indica al profiler se il blocco influirà sull'operazione del runtime. Il valore è true se il blocco può causare l'attesa del runtime per la restituzione del thread chiamante da questo callback; in caso contrario, false.

Anche se un valore di true non danneggia il runtime, può asimmetriare i risultati della profilatura.

Osservazioni:

È possibile ricevere più di una coppia di JITCompilationStarted chiamate e ICorProfilerCallback::JITCompilationFinished per ogni funzione a causa del modo in cui il runtime gestisce i costruttori di classi. Ad esempio, il runtime inizia con il metodo JIT-compile A, ma il costruttore della classe per la classe B deve essere eseguito. Di conseguenza, il runtime JIT compila il costruttore per la classe B e lo esegue. Mentre il costruttore è in esecuzione, esegue una chiamata al metodo A, che determina la compilazione JIT del metodo A. In questo scenario la prima compilazione JIT del metodo A viene interrotta. Tuttavia, entrambi i tentativi al metodo JIT-compile A vengono segnalati con eventi di compilazione JIT. Se il profiler sostituirà il codice CIL (Common Intermediate Language) per il metodo A chiamando il metodo ICorProfilerInfo::SetILFunctionBody , deve farlo per entrambi JITCompilationStarted gli eventi, ma può usare lo stesso blocco CIL per entrambi.

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

Requisiti

Piattaforme: vedere Requisiti di sistema.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: disponibili dalla versione 2.0

Vedi anche