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