Compartilhar via


Método ICorProfilerInfo4::RequestReJIT

Solicita 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 serem recompiladas.

moduleIds
[in] Especifica a parte moduleId dos pares (module, methodDef) que identificam as funções a serem recompiladas.

methodIds
[in] Especifica a parte methodId dos pares (module, methodDef) que identificam as funções a serem recompiladas.

Valor Retornado

Esse método retorna os seguintes HRESULTs específicos, bem como erros HRESULT que indicam falha de método.

HRESULT Descrição
S_OK Foi feita uma tentativa de marcar todos os métodos para recompilação JIT. O criador de perfil deve implementar o método ICorProfilerCallback4::ReJITError para determinar quais métodos foram marcados com êxito para recompilação JIT.
CORPROF_E_CALLBACK4_REQUIRED O criador de perfil deve implementar a interface ICorProfilerCallback4 para que essa chamada tenha suporte.
CORPROF_E_REJIT_NOT_ENABLED A recompilação JIT não foi habilitada. Você deve habilitar a recompilação JIT durante a inicialização usando o método ICorProfilerInfo::SetEventMask para definir o sinalizador COR_PRF_ENABLE_REJIT.
E_INVALIDARG cFunctions é 0, ou moduleIds ou methodIds é NULL.
E_OUTOFMEMORY O CLR não pôde concluir a solicitação porque ficou sem memória.

Comentários

Chame RequestReJIT para que o runtime recompile um conjunto de funções especificado. Um criador de perfil de código pode usar a interface ICorProfilerFunctionControl para ajustar o código gerado quando as funções são recompiladas. Isso não afeta as funções em execução no momento, apenas invocações de função futuras. Se alguma das funções especificadas tiver sido recompilada anteriormente por JIT, solicitar uma recompilação será 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, ele considera apenas as versões originais de seus callees para decisões de inlining. Quando o compilador JIT recompila uma função, ele considera as versões atuais (recompiladas ou originais) de seus callees para inlining.

Um criador de perfil normalmente chama RequestReJIT em resposta à entrada do usuário solicitando que o criador de perfil instrumente um ou mais métodos. RequestReJIT normalmente suspende o runtime para realizar alguns de seus trabalhos e pode potencialmente disparar uma coleta de lixo. Dessa forma, o criador de perfil deve chamar RequestReJIT de um thread criado anteriormente e não de um thread criado por CLR que está executando um retorno de chamada do criador de perfil.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 4.5

Confira também