Partilhar via


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 moduleIdsmethodIds é 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

Ver também