Condividi tramite


Metodo ICorProfilerCallback::JITCompilationStarted

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

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

Parametri

  • functionId
    [in] ID della funzione per la quale sta iniziando la compilazione.

  • fIsSafeToBlock
    [in] Valore che indica al profiler se un eventuale blocco può incidere sul funzionamento del runtime. Il valore è true se, a seguito del blocco, vi è la possibilità che il runtime debba attendere che il thread chiamante esca da questo callback; in caso contrario, è false.

    Anche se un valore true può non influire sul runtime, può comunque alterare i risultati dell'analisi.

Note

È possibile ricevere più di una coppia di chiamate a JITCompilationStarted e ICorProfilerCallback::JITCompilationFinished per ogni funzione a causa della modalità con cui il runtime gestisce i costruttori di classi. Ad esempio, il runtime inizia a compilare tramite JIT il metodo A, ma è necessario eseguire il costruttore per classe B. Pertanto, il runtime compila tramite JIT il costruttore per classe B e lo esegue. Mentre il costruttore è in esecuzione, effettua una chiamata al metodo A, dando luogo a una nuova compilazione JIT del metodo A. In questo scenario viene arrestata la prima compilazione JIT del metodo A. Entrambi i tentativi di compilare tramite JIT il metodo A vengono comunque segnalati con gli eventi di compilazione JIT. Se il profiler sostituisce il codice MSIL (Microsoft Intermediate Language) per il metodo A chiamando il metodo ICorProfilerInfo::SetILFunctionBody, dovrà eseguire la stessa operazione per entrambi gli eventi JITCompilationStarted, ma potrà utilizzare lo stesso blocco MSIL per l'uno e l'altro.

I profiler devono supportare la sequenza di callback JIT nei casi in cui due thread effettuano callback simultaneamente. Ad esempio, il thread A chiama JITCompilationStarted. Tuttavia, prima che il thread A chiami JITCompilationFinished, il thread B chiamerà ICorProfilerCallback::ExceptionSearchFunctionEnter con l'ID funzione del callback JITCompilationStarted del thread A. Potrebbe sembrare che l'ID funzione non sia ancora valido perché il profiler non ha ancora ricevuto una chiamata a JITCompilationFinished. In un caso come questo l'ID funzione è comunque valido.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vedere anche

Riferimenti

Interfaccia ICorProfilerCallback

Metodo ICorProfilerCallback::JITCompilationFinished