Compartilhar via


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

Confira também