Compartilhar via


Método de ICorProfilerCallback::JITCompilationStarted

Notifica o profiler para que o compilador just-in-time (JIT) foi iniciado para compilar uma função.

HRESULT JITCompilationStarted(
    [in] FunctionID functionId,
    [in] BOOL       fIsSafeToBlock);

Parâmetros

  • functionId
    [in] A identificação da função para o qual a compilação está iniciando.

  • fIsSafeToBlock
    [in] Um valor que indica o criador de perfil, se o bloqueio afetará a operação do runtime. O valor é true se o bloqueio pode causar o tempo de execução aguardar o thread de chamada retornar de retorno de chamada; Caso contrário, false.

    Embora um valor de true não danificará o tempo de execução, ele pode distorcer os resultados de criação de perfil.

Comentários

É possível receber mais de um par de JITCompilationStarted e ICorProfilerCallback::JITCompilationFinished chama para cada função por causa da maneira como o runtime alças construtores de classe. Por exemplo, o tempo de execução inicia um método de compilação JIT, mas o construtor de classe para a classe que b precisa ser executado. Portanto, o runtime JIT compila o construtor da classe b e executa-lo. Enquanto o construtor é executado, ele faz uma chamada ao método A, que faz com que o método a ser compilado em JIT novamente. Nesse cenário, a primeira compilação JIT do método a é interrompida. No entanto, ambas as tentativas de um método de compilação JIT são relatadas com eventos de compilação JIT. Se for o criador de perfil para substituir o código do Microsoft intermediate language (MSIL) para o método a chamando o ICorProfilerInfo::SetILFunctionBody método, deverá fazê-lo para ambos JITCompilationStarted eventos, mas ele pode usar o mesmo bloco MSIL para ambos.

Geradores de perfis devem oferecer suporte a seqüência de retornos de chamada JIT em casos onde dois segmentos estão fazendo simultaneamente os retornos de chamada. Por exemplo, o thread a chama JITCompilationStarted. No entanto, antes de chamadas do thread a JITCompilationFinished, chamadas do thread b ICorProfilerCallback::ExceptionSearchFunctionEnter com a ID de função do thread do JITCompilationStarted retorno de chamada. Ele pode parecer que o ID de função não deve ainda ser válido porque uma chamada para JITCompilationFinished ainda não foi recebido pelo profiler. No entanto, em um caso como esse, a identificação de função é válida.

Requisitos

Plataformas: Consulte Requisitos de sistema do .NET Framework.

Cabeçalho: Corprof. idl, CorProf.h

Biblioteca: CorGuids.lib

.NET Framework versões: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Consulte também

Referência

Interface de ICorProfilerCallback

Método de ICorProfilerCallback::JITCompilationFinished