Método ICorProfilerCallback::JITCompilationStarted
Notifica o criador de perfil de que o compilador JIT (just-in-time) 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á sendo iniciada.
fIsSafeToBlock
[in] Um valor que indica ao criador de perfil se o bloqueio afetará a operação do runtime. O valor é true
se o bloqueio puder fazer com que o runtime aguarde o retorno da thread de chamada desse retorno de chamada; caso contrário, será false
.
Embora um valor de true
não prejudique o runtime, ele pode distorcer os resultados da criação de perfil.
Comentários
É possível receber mais de um par de chamadas JITCompilationStarted
e ICorProfilerCallback::JITCompilationFinished para cada função devido à maneira como o runtime lida com construtores de classe. Por exemplo, o runtime começa com o método A de compilação JIT, mas o construtor de classe para a classe B precisa ser executado. Portanto, o JIT de runtime 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, o que faz com que o método A seja compilado por JIT novamente. Nesse cenário, a primeira compilação JIT do método A é interrompida. No entanto, ambas as tentativas de compilar o método A do JIT 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á fazer isso para ambos os JITCompilationStarted
eventos, mas poderá usar o mesmo bloco CIL para ambos.
Os criadores de perfil devem dar suporte à sequência de retornos de chamada JIT nos casos em que duas threads estão simultaneamente fazendo retornos de chamada. Por exemplo, a thread A chama JITCompilationStarted
. No entanto, antes da thread A chamar JITCompilationFinished
, a thread B chama ICorProfilerCallback::ExceptionSearchFunctionEnter com a ID da função do retorno de chamada JITCompilationStarted
da thread A. Pode parecer que a ID da função ainda não deve ser válida porque uma chamada para JITCompilationFinished
ainda não havia sido recebida pelo criador de perfil. No entanto, em um caso como este, 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 2.0