Método ICorProfilerCallback4::ReJITCompilationStarted
Notifica o criador de perfil de que o compilador JIT (just-in-time) começou a recompilar uma função.
Sintaxe
HRESULT ReJITCompilationStarted(
[in] FunctionID functionId,
[in] ReJITID rejitId,
[in] BOOL fIsSafeToBlock);
Parâmetros
functionId
[in] A ID da função que o compilador JIT começou a recompilar.
rejitId
[in] A 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 o retorno do thread de chamada desse retorno de chamada; false
para indicar que o bloqueio não afetará a operação do runtime. Um valor de true
não prejudica o runtime, mas pode afetar os resultados da criação de perfil.
Comentários
É possível receber mais de um par de ReJITCompilationStarted
chamadas de método ReJITCompilationFinished para cada função devido à maneira como o runtime lida com construtores de classe. Por exemplo, o runtime começa a recompilar o método A, mas o construtor de classe para a classe B precisa ser executado. Portanto, o runtime recompila o construtor para a classe B e o executa. Enquanto o construtor está em execução, ele faz uma chamada para o método A, o que faz com que o método A seja compilado por novamente. Nesse cenário, a primeira recompilação do método A é interrompida. No entanto, ambas as tentativas de recompilar o método A são relatadas com eventos de recompilação JIT.
Os criadores de perfil devem dar suporte à sequência de retornos de chamada de recompilação JIT nos casos em que duas threads estão fazendo retornos de chamada simultaneamente. Por exemplo, o thread A chama ReJITCompilationStarted
; no entanto, antes do thread A chamar ReJITCompilationFinished, o thread B chama ICorProfilerCallback::ExceptionSearchFunctionEnter com a ID da função do retorno de chamada ReJITCompilationStarted
para o thread A. Pode parecer que a ID da função não deve ser mais válida porque uma chamada para ReJITCompilationFinished ainda não havia sido recebida pelo criador de perfil. No entanto, nesse caso, a ID da função é válida.
Requisitos
Plataformas: confira Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponíveis desde 4.5