Método ICorProfilerCallback::JITCachedFunctionSearchStarted
Notifica o gerador de perfis de que foi iniciada uma pesquisa para uma função compilada anteriormente com o Gerador de Imagens Nativo (NGen.exe).
Sintaxe
HRESULT JITCachedFunctionSearchStarted(
[in] FunctionID functionId,
[out] BOOL *pbUseCachedFunction);
Parâmetros
functionId
[in] O ID da função para a qual a pesquisa está a ser executada.
pbUseCachedFunction
[fora] true
se o motor de execução deve utilizar a versão em cache de uma função (se disponível); caso contrário false
, . Se o valor for false
, o motor de execução JIT compila a função em vez de utilizar uma versão que não é compilada pelo JIT.
Observações
No .NET Framework versão 2.0, as chamadas de retorno do JITCachedFunctionSearchStarted
Método ICorProfilerCallback::JITCachedFunctionSearchFinished não serão feitas para todas as funções em imagens NGen normais. Apenas as imagens NGen otimizadas para um perfil irão gerar chamadas de retorno para todas as funções na imagem. No entanto, devido à sobrecarga adicional, um gerador de perfis deve pedir imagens NGen otimizadas para geradores de perfis apenas se pretender utilizar estas chamadas de retorno para forçar uma função a ser compilada just-in-time (JIT). Caso contrário, o gerador de perfis deve utilizar uma estratégia preguiçosa para recolher informações da função.
Os geradores de perfis têm de suportar casos em que vários threads de uma aplicação com perfis estão a chamar o mesmo método em simultâneo. Por exemplo, as chamadas JITCachedFunctionSearchStarted
thread A e o gerador de perfis respondem ao definir pbUseCachedFunctioncomo FALSE para forçar a compilação JIT. Em seguida, o Thread A chama ICorProfilerCallback::JITCompilationStarted e ICorProfilerCallback::JITCompilationFinished.
Agora, o thread B chama JITCachedFunctionSearchStarted
para a mesma função. Apesar de o gerador de perfis ter declarado a sua intenção de compilar a função pelo JIT, o gerador de perfis recebe a segunda chamada de retorno porque o thread B envia a chamada de retorno antes de o gerador de perfis responder à chamada do thread A para JITCachedFunctionSearchStarted
. A ordem pela qual os threads fazem chamadas depende da forma como os threads são agendados.
Quando o gerador de perfis recebe chamadas de retorno duplicadas, tem de definir o valor referenciado por pbUseCachedFunction
para o mesmo valor para todas as chamadas de retorno duplicadas. Ou seja, quando JITCachedFunctionSearchStarted
é chamado várias vezes com o mesmo functionId
valor, o gerador de perfis tem de responder sempre o mesmo.
Requisitos
Plataformas: Veja Requisitos de Sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 2.0