Compartilhar via


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

Confira também