Compartir a través de


ICorProfilerCallback::JITCompilationStarted (Método)

Notifica al generador de perfiles que el compilador Just-In-Time (JIT) ha comenzado a compilar una función.

HRESULT JITCompilationStarted(
    [in] FunctionID functionId,
    [in] BOOL       fIsSafeToBlock);

Parámetros

  • functionId
    [in] Identificador de la función cuya compilación se está iniciando.

  • fIsSafeToBlock
    [in] Valor que indica al generador de perfiles si el bloqueo afectará al funcionamiento del motor en tiempo de ejecución. El valor es true si el bloqueo puede dar lugar a que el motor en tiempo de ejecución tenga que esperar a que el subproceso que realiza la llamada regrese de esta devolución de llamada; de lo contrario, es false.

    Si bien el valor true no afecta negativamente al motor en tiempo de ejecución, puede sesgar los resultados de la generación de perfiles.

Comentarios

Es posible que se reciban varios pares de llamadas a JITCompilationStarted e ICorProfilerCallback::JITCompilationFinished para cada función debido a la forma en que el motor en tiempo de ejecución controla los constructores de clase. Por ejemplo, el motor en tiempo de ejecución inicia la compilación JIT del método A, pero el constructor de la clase B necesita ejecutarse. El motor en tiempo de ejecución, por tanto, efectúa la compilación JIT del constructor de la clase B y lo ejecuta. Mientras se está ejecutando el constructor, realiza una llamada al método A, por lo que vuelve a realizarse la compilación JIT del método A. En este escenario, se detiene la primera compilación JIT del método A. No obstante, ambos intentos de compilación JIT del método A se notifican con los eventos de compilación JIT. Si el generador de perfiles va a reemplazar el código de lenguaje intermedio de Microsoft (MSIL) del método A llamando al método ICorProfilerInfo::SetILFunctionBody, deberá hacerlo para los dos eventos JITCompilationStarted, aunque puede utilizar el mismo bloque MSIL para ambos.

Los generadores de perfiles deben ser compatibles con la secuencia de devoluciones de llamada JIT en los casos en los que dos subprocesos están realizando simultáneamente devoluciones de llamada. Por ejemplo, el subproceso A llama a JITCompilationStarted. Sin embargo, antes de que el subproceso A llame a JITCompilationFinished, el subproceso B llama a ICorProfilerCallback::ExceptionSearchFunctionEnter con el identificador de función de la devolución de llamada JITCompilationStarted del subproceso A. Podría parecer que el identificador de función aún no es válido porque el generador de perfiles todavía no ha recibido una llamada a JITCompilationFinished. No obstante, en un caso como éste, el identificador de función es válido.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICorProfilerCallback (Interfaz)

ICorProfilerCallback::JITCompilationFinished (Método)