Compartir a través de


ICorProfilerCallback4::ReJITCompilationStarted (Método)

Este método puede usarse para notificar al generador de perfiles de que el compilador Just-In-Time (JIT) ha comenzado a volver a compilar una función.

Sintaxis

HRESULT ReJITCompilationStarted(
    [in] FunctionID functionId,  
    [in] ReJITID    rejitId,  
    [in] BOOL       fIsSafeToBlock);  

Parámetros

functionId
[in] Identificador de la función que el compilador JIT ha iniciado para volver a compilar.

rejitId
[in] Identificador de recompilación de la nueva versión de la función.

fIsSafeToBlock
[in] El valor de este parámetro debe ser true para indicar que un bloqueo puede hacer que el tiempo de ejecución entre en espera hasta que el subproceso que hace la llamada vuelva de esta devolución de llamada. A su vez, el valor debe ser false para indicar que el bloqueo no afectará al funcionamiento del tiempo de ejecución. El uso de un valor true no afectará negativamente al tiempo de ejecución, pero sí que puede afectar a los resultados de los procesos de generación de perfiles.

Comentarios

Es posible recibir más de un par de llamadas de método ReJITCompilationStarted y ReJITCompilationFinished para cada función debido a la forma en que los constructores de clase se controlan en tiempo de ejecución. Por ejemplo, comienza a recompilarse el método A en tiempo de ejecución, pero es necesario ejecutar el constructor de clase para la clase B. Por lo tanto, se vuelve a compilar el constructor de la clase B en tiempo de ejecución y se ejecuta. Mientras se ejecuta el constructor, realiza una llamada al método A, lo que hace que el método A se vuelva a compilar. En este escenario, se detiene la primera recompilación del método A. Sin embargo, ambos intentos de recompilar el método A se notifican con eventos de recompilación JIT.

Los generadores de perfiles deben admitir la secuencia de devoluciones de llamada de recompilación JIT en casos en los que dos subprocesos realizan devoluciones de llamada simultáneas. Por ejemplo, el subproceso A llama a ReJITCompilationStarted; sin embargo, antes de que el subproceso A llame a ReJITCompilationFinished, el subproceso B llama a ICorProfilerCallback::ExceptionSearchFunctionEnter con el identificador de función de la devolución de llamada ReJITCompilationStarted del subproceso A. Es posible que parezca que el identificador de función aún no debe ser válido porque el generador de perfiles no ha recibido todavía una llamada a ReJITCompilationFinished. Sin embargo, en este caso, el identificador de función es válido.

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