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