Comparteix a través de


ICorProfilerCallback::JITCompilationStarted (Método)

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

Sintaxis

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

Parámetros

functionId [in] Identificador de la función para la que se inicia la compilación.

fIsSafeToBlock [in] El valor de este parámetro se usa para indicar al generador de perfiles si el bloqueo afectará al funcionamiento del tiempo de ejecución. El valor es true si el bloqueo puede hacer que el runtime espere a que el subproceso que realiza la llamada devuelva un valor desde esta devolución de llamada; de lo contrario, es false.

Aunque un valor de true no dañará el runtime, puede distorsionar los resultados de la generación de perfiles.

Comentarios

Es posible recibir más de un par de llamadas de JITCompilationStarted y iCorProfilerCallback::JITCompilationFinished para cada función debido a la forma en que el runtime controla los constructores de clase. Por ejemplo, el runtime se inicia en el método A de compilación mediante JIT, pero para la clase B es necesario ejecutar el constructor de clase. Por lo tanto, el runtime compila mediante JIT el constructor de la clase B y lo ejecuta. Mientras se ejecuta el constructor, realiza una llamada al método A, lo que hace que este método se vuelva a compilar mediante JIT. En este escenario, se detiene la primera compilación JIT del método A. Pero ambos intentos del método A de compilación mediante JIT se notifican con eventos de compilación JIT. Si el generador de perfiles va a reemplazar el código de lenguaje intermedio común (CIL) para el método A llamando al método ICorProfilerInfo::SetILFunctionBody , debe hacerlo para ambos JITCompilationStarted eventos, pero puede usar el mismo bloque CIL para ambos.

Los generadores de perfiles deben admitir la secuencia de devoluciones de llamada JIT en los casos en los que dos subprocesos realizan devoluciones de llamada simultáneamente. Por ejemplo, el subproceso A llama a JITCompilationStarted. Pero antes de que el subproceso A llame a JITCompilationFinished, el subproceso B llama a ICorProfilerCallback::ExceptionSearchFunctionEnter con el id. de función de la devolución de llamada de JITCompilationStarted del subproceso A. Es posible que parezca que el id. de función aún no debe ser válido porque el generador de perfiles todavía no ha recibido una llamada a JITCompilationFinished. Pero en un caso como este, el id. 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 2.0

Consulte también