Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Уведомляет профилировщика о том, что JIT-компилятор начал компилировать функцию.
Синтаксис
HRESULT JITCompilationStarted(
[in] FunctionID functionId,
[in] BOOL fIsSafeToBlock);
Параметры
functionId [in] Идентификатор функции, для которой начинается компиляция.
fIsSafeToBlock [in] Значение, указывающее профилировщику, влияет ли блокировка на операцию среды выполнения. Значение заключается в том true , что блокировка может привести к тому, что среда выполнения ожидает возврата вызывающего потока из этого обратного вызова; в противном случае false.
Хотя значение true не повредит среде выполнения, оно может сломить результаты профилирования.
Замечания
Можно получить несколько пар JITCompilationStarted и вызовов ICorProfilerCallback::JITCompilationFinished для каждой функции из-за того, что среда выполнения обрабатывает конструкторы классов. Например, среда выполнения запускает метод JIT-компиляции A, но конструктор классов для класса B должен выполняться. Поэтому JIT-компилирует конструктор класса B и запускает его. Во время выполнения конструктора выполняется вызов метода A, что приводит к повторному компиляции метода A. В этом сценарии первая компиляция JIT метода A останавливается. Однако обе попытки JIT-компиляции метода A сообщаются с событиями JIT-компиляции. Если профилировщик заменит код общего промежуточного языка (CIL) для метода A путем вызова метода ICorProfilerInfo::SetILFunctionBody , он должен сделать это для обоих событий, но он может использовать один и тот же блок CIL для обоих JITCompilationStarted событий.
Профилировщики должны поддерживать последовательность обратных вызовов JIT в случаях, когда два потока одновременно выполняют обратные вызовы. Например, вызовы JITCompilationStartedпотока A. Однако перед вызовами JITCompilationFinishedпотока A поток B вызывает ICorProfilerCallback::ExceptionSearchFunctionEnter с идентификатором функции из обратного JITCompilationStarted вызова потока A. Возможно, идентификатор функции еще не должен быть допустимым, так как вызов, к которому JITCompilationFinished еще не был получен профилировщиком. Однако в таком случае идентификатор функции действителен.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: Доступно с версии 2.0