Método ICorProfilerCallback4::ReJITCompilationStarted
Notifica o gerador de perfis de que o compilador just-in-time (JIT) começou a recompilar uma função.
Sintaxe
HRESULT ReJITCompilationStarted(
[in] FunctionID functionId,
[in] ReJITID rejitId,
[in] BOOL fIsSafeToBlock);
Parâmetros
functionId
[in] O ID da função que o compilador JIT começou a recompilar.
rejitId
[in] O ID de recompilação da nova versão da função.
fIsSafeToBlock
[in] true
para indicar que o bloqueio pode fazer com que o runtime aguarde que o thread de chamada regresse desta chamada de retorno; false
para indicar que o bloqueio não afetará o funcionamento do runtime. Um valor de true
não prejudica o runtime, mas pode afetar os resultados da criação de perfis.
Observações
É possível receber mais do que um par de chamadas de ReJITCompilationStarted
método ReJITCompilationFinished para cada função devido à forma como o runtime processa os construtores de classes. Por exemplo, o runtime começa a recompilar o método A, mas o construtor de classes da classe B tem de ser executado. Por conseguinte, o runtime recompila o construtor da classe B e executa-o. Enquanto o construtor está em execução, faz uma chamada para o método A, o que faz com que o método A seja novamente recompilado. Neste cenário, a primeira recompilação do método A é interrompida. No entanto, ambas as tentativas de recompilar o método A são comunicadas com eventos de recompilação do JIT.
Os profilers têm de suportar a sequência de chamadas de retorno de recompilação do JIT nos casos em que dois threads estejam simultaneamente a efetuar chamadas de retorno. Por exemplo, o thread A chama ReJITCompilationStarted
; no entanto, antes do thread A chamar ReJITCompilationFinished, o thread B chama ICorProfilerCallback::ExceptionSearchFunctionEnter com o ID da função da chamada de retorno para o ReJITCompilationStarted
thread A. Pode parecer que o ID da função ainda não deve ser válido porque uma chamada para ReJITCompilationFinished ainda não tinha sido recebida pelo gerador de perfis. No entanto, neste caso, o ID da função é válido.
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 4.5