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