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