Método ICorProfilerInfo4::RequestReJIT
Pede uma recompilação JIT de todas as instâncias das funções especificadas.
Sintaxe
HRESULT RequestReJIT (
[in] ULONG cFunctions,
[in, size_is(cFunctions)] ModuleID moduleIds[],
[in, size_is(cFunctions)] mdMethodDef methodIds[]);
Parâmetros
cFunctions
[in] O número de funções a recompilar.
moduleIds
[in] Especifica a moduleId
parte dos pares (module
, methodDef
) que identificam as funções a serem recompiladas.
methodIds
[in] Especifica a methodId
parte dos pares (module
, methodDef
) que identificam as funções a serem recompiladas.
Devolver Valor
Este método devolve os seguintes HRESULTs específicos, bem como erros HRESULT que indicam a falha do método.
HRESULT | Description |
---|---|
S_OK | Foi feita uma tentativa de marcar todos os métodos para a recompilação do JIT. O profiler tem de implementar o método ICorProfilerCallback4::ReJITError para determinar que métodos foram marcados com êxito para a recompilação do JIT. |
CORPROF_E_CALLBACK4_REQUIRED | O profiler tem de implementar a interface ICorProfilerCallback4 para que esta chamada seja suportada. |
CORPROF_E_REJIT_NOT_ENABLED | A recompilação do JIT não foi ativada. Tem de ativar a recompilação do JIT durante a inicialização com o método ICorProfilerInfo::SetEventMask para definir o COR_PRF_ENABLE_REJIT sinalizador. |
E_INVALIDARG | cFunctions é 0 ou moduleIds methodIds é NULL . |
E_OUTOFMEMORY | O CLR não conseguiu concluir o pedido porque ficou sem memória. |
Observações
Chame RequestReJIT
para que o runtime recompile um conjunto especificado de funções. Um gerador de perfis de código pode, em seguida, utilizar a interface ICorProfilerFunctionControl para ajustar o código gerado quando as funções são recompiladas. Isto não afeta a execução atualmente de funções, apenas invocações de funções futuras. Se alguma das funções especificadas tiver sido previamente recompilada com o JIT, pedir uma recompilação é equivalente a reverter e recompilar a função. Para preservar a reversibilidade, quando o compilador JIT compila a versão original de uma função, considera apenas as versões originais dos respetivos callees para inlinizar decisões. Quando o compilador JIT recompila uma função, considera as versões atuais (recompiladas ou originais) dos respetivos callees para inlining.
Normalmente, um gerador de perfis chama RequestReJIT
em resposta à entrada do utilizador, solicitando que o gerador de perfis instrumente um ou mais métodos. RequestReJIT
normalmente, suspende o runtime para fazer parte do seu trabalho e pode potencialmente acionar uma coleção de lixo. Como tal, o gerador de perfis deve chamar RequestReJIT
a partir de um thread que criou anteriormente e não a partir de um thread criado por CLR que esteja a executar uma chamada de retorno do gerador de perfis.
Requisitos
Plataformas: Veja Requisitos do Sistema.
Cabeçalho: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
.NET Framework Versões: Disponível desde 4.5