Método ICorProfilerCallback::JITCompilationStarted
Notifica o criador de perfil de que o compilador just-in-time (JIT) começou a compilar uma função.
Sintaxe
HRESULT JITCompilationStarted(
[in] FunctionID functionId,
[in] BOOL fIsSafeToBlock);
Parâmetros
functionId
[em] O ID da função para a qual a compilação está começando.
fIsSafeToBlock
[em] Um valor que indica ao criador de perfil se o bloqueio afetará a operação do tempo de execução. O valor é true
se o bloqueio pode fazer com que o tempo de execução aguarde o thread de chamada retornar desse retorno de chamada, caso contrário, false
.
Embora um valor de não prejudique o tempo de execução, ele pode distorcer os resultados da criação de true
perfil.
Observações
É possível receber mais de um par de e ICorProfilerCallback::JITCompilationFinished chamadas para cada função devido à maneira como o tempo de execução lida com construtores de JITCompilationStarted
classe. Por exemplo, o tempo de execução começa com o método de compilação JIT A, mas o construtor de classe para a classe B precisa ser executado. Portanto, o tempo de execução JIT-compila 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, que faz com que o método A seja compilado JIT novamente. Nesse cenário, a primeira compilação JIT do método A é interrompida. No entanto, ambas as tentativas para o método de compilação JIT A são relatadas com eventos de compilação JIT. Se o criador de perfil for substituir o código CIL (linguagem intermediária comum) para o método A chamando o método ICorProfilerInfo::SetILFunctionBody , ele deverá fazê-lo para ambos os JITCompilationStarted
eventos, mas poderá usar o mesmo bloco CIL para ambos.
Os criadores de perfil devem suportar a sequência de retornos de chamada JIT nos casos em que dois threads estão simultaneamente fazendo retornos de chamada. Por exemplo, o thread A chama JITCompilationStarted
. No entanto, antes das chamadas JITCompilationFinished
do thread A, o thread B chama ICorProfilerCallback::ExceptionSearchFunctionEnter com o ID da função do retorno de chamada do JITCompilationStarted
thread A. Pode parecer que o ID da função ainda não deve ser válido porque uma chamada para JITCompilationFinished
ainda não foi recebida pelo criador de perfil. No entanto, em um caso como este, o ID da função é válido.
Requisitos
Plataformas: Consulte Requisitos do sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: Disponível desde 2.0