Метод ICorProfilerCallback::JITCachedFunctionSearchStarted
Уведомляет профилировщика о начале поиска функции, скомпилированной ранее с помощью генератора образов в машинном коде (NGen.exe).
Синтаксис
HRESULT JITCachedFunctionSearchStarted(
[in] FunctionID functionId,
[out] BOOL *pbUseCachedFunction);
Параметры
functionId
[in] Идентификатор функции, для которой выполняется поиск.
pbUseCachedFunction
[out] true
Значение , если подсистема выполнения должна использовать кэшированную версию функции (если она доступна); в противном случае false
. Если значение равно false
, обработчик выполнения JIT-компилирует функцию вместо использования версии, которая не компилируется JIT-скомпилированной.
Комментарии
В платформа .NET Framework версии 2.0 JITCachedFunctionSearchStarted
обратные вызовы метода ICorProfilerCallback::JITCachedFunctionSearchFinished не будут выполняться для всех функций в обычных образах NGen. Только образы NGen, оптимизированные для профиля, будут создавать обратные вызовы для всех функций в образе. Однако из-за дополнительных издержек профилировщик должен запрашивать оптимизированные для профилировщика образы NGen только в том случае, если он намерен использовать эти обратные вызовы для принудительной компиляции функции JIT. В противном случае профилировщик должен использовать отложенную стратегию для сбора сведений о функциях.
Профилировщики должны поддерживать случаи, когда несколько потоков профилированного приложения одновременно вызывает один и тот же метод. Например, поток A вызывает JITCachedFunctionSearchStarted
, и профилировщик отвечает, устанавливая для pbUseCachedFunctionзначение FALSE, чтобы принудительная JIT-компиляция. Затем поток A вызывает ICorProfilerCallback::JITCompilationStarted и ICorProfilerCallback::JITCompilationFinished.
Теперь поток B вызывает JITCachedFunctionSearchStarted
ту же функцию. Несмотря на то, что профилировщик заявил о своем намерении выполнить JIT-компиляцию функции, профилировщик получает второй обратный вызов, так как поток B отправляет обратный вызов до того, как профилировщик ответил на вызов потока A к JITCachedFunctionSearchStarted
. Порядок, в котором потоки выполняют вызовы, зависит от того, как запланированы потоки.
Когда профилировщик получает повторяющиеся обратные вызовы, он должен задать для значения, на которое ссылается pbUseCachedFunction
параметр , одинаковое значение для всех повторяющихся обратных вызовов. То есть, когда JITCachedFunctionSearchStarted
вызывается несколько раз с одинаковым functionId
значением, профилировщик должен отвечать один и тот же каждый раз.
Требования
Платформы: см. раздел Требования к системе.
Заголовок: CorProf.idl, CorProf.h
Библиотека: CorGuids.lib
версии платформа .NET Framework: доступно с версии 2.0