Partilhar via


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

Ver também