Comparteix a través de


ICorProfilerInfo4::RequestReJIT (Método)

Solicita una recompilación con JIT de todas las instancias de las funciones especificadas.

Sintaxis

HRESULT RequestReJIT (  
   [in] ULONG    cFunctions,  
   [in, size_is(cFunctions)]  ModuleID    moduleIds[],  
   [in, size_is(cFunctions)]  mdMethodDef methodIds[]);  

Parámetros

cFunctions
[in] Número de funciones que se va a recompilar.

moduleIds
[in] Especifica la parte moduleId de los pares (module, methodDef) que identifican las funciones que se van a recompilar.

methodIds
[in] Especifica la parte methodId de los pares (module, methodDef) que identifican las funciones que se van a recompilar.

Valor devuelto

Este método devuelve los siguientes HRESULT específicos y los errores HRESULT que indican un error del método.

HRESULT Descripción
S_OK Se intentó marcar todos los métodos para la recompilación con JIT. Para determinar qué métodos se han marcado correctamente para volver a compilarse mediante el compilador JIT, deberá implementar el método ICorProfilerCallback4::ReJITError en el generador de perfiles.
CORPROF_E_CALLBACK4_REQUIRED Si se devuelve este valor, significa que debe implementar la interfaz ICorProfilerCallback4 en el generador de perfiles para que se admita esta llamada.
CORPROF_E_REJIT_NOT_ENABLED No se habilitó la recompilación con JIT. Deberá habilitar el proceso de nueva compilación mediante el compilador JIT durante la inicialización. Para ello, use el método ICorProfilerInfo::SetEventMask para establecer la marca COR_PRF_ENABLE_REJIT.
E_INVALIDARG cFunctions es 0, o moduleIds o methodIds es NULL.
E_OUTOFMEMORY El CLR no pudo completar la solicitud porque se quedó sin memoria.

Comentarios

Llame a RequestReJIT para que el tiempo de ejecución recompile un conjunto especificado de funciones. Después, podrá usarse la interfaz ICorProfilerFunctionControl mediante un generador de perfiles de código para ajustar el código que se genere cuando las funciones se vuelvan a compilar. Esto no afecta a las funciones actualmente en ejecución, solo a futuras llamadas a funciones. Si alguna de las funciones especificadas ya se había recompilado con JIT, la solicitud de recompilación equivale a revertir y recompilar la función. Para conservar la reversibilidad, cuando el compilador JIT compila la versión original de una función, solo tiene en cuenta las versiones originales de los destinatarios para las decisiones de inserción. Cuando el compilador JIT recompila una función, tiene en cuenta las versiones actuales (recompiladas u originales) de los destinatarios para la inserción.

Normalmente, un generador de perfiles llama a RequestReJIT en respuesta a una entrada del usuario que solicita que el generador de perfiles instrumente uno o más métodos. Normalmente, RequestReJIT suspende el tiempo de ejecución para realizar algunas de sus tareas y puede desencadenar una recolección de elementos no utilizados. Por lo tanto, el generador de perfiles debe llamar a RequestReJIT desde un subproceso creado anteriormente y no desde un subproceso creado por el CLR que está ejecutando actualmente una devolución de llamada del generador de perfiles.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: disponible a partir de la versión 4.5

Consulte también