Partilhar via


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 JITCompilationFinisheddo 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

Consulte também