Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Powiadamia profilera, że kompilator just in time (JIT) rozpoczął kompilowanie funkcji.
Składnia
HRESULT JITCompilationStarted(
[in] FunctionID functionId,
[in] BOOL fIsSafeToBlock);
Parametry
functionId
[in] Identyfikator funkcji, dla której rozpoczyna się kompilacja.
fIsSafeToBlock
[in] Wartość wskazująca profiler, czy blokowanie wpłynie na działanie środowiska uruchomieniowego. Wartość jest true
taka, jeśli blokowanie może spowodować, że środowisko uruchomieniowe będzie czekać, aż wątek wywołujący powróci z tego wywołania zwrotnego; w przeciwnym razie . false
Chociaż wartość true
nie zaszkodzi środowisku uruchomieniowemu, może wypaczyć wyniki profilowania.
Uwagi
Istnieje możliwość odbierania więcej niż jednej pary JITCompilationStarted
wywołań i ICorProfilerCallback::JITCompilationFinished wywołań dla każdej funkcji ze względu na sposób, w jaki środowisko uruchomieniowe obsługuje konstruktory klas. Na przykład środowisko uruchomieniowe uruchamia metodę JIT-compile A, ale należy uruchomić konstruktor klasy dla klasy B. W związku z tym środowisko uruchomieniowe JIT kompiluje konstruktor klasy B i uruchamia go. Gdy konstruktor jest uruchomiony, wykonuje wywołanie metody A, co powoduje ponowne skompilowanie metody A. W tym scenariuszu zostanie zatrzymana pierwsza kompilacja JIT metody A. Jednak obie próby kompilacji JIT-compile A są zgłaszane ze zdarzeniami kompilacji JIT. Jeśli profiler zastąpi kod wspólnego języka pośredniego (CIL) dla metody A, wywołując metodę ICorProfilerInfo::SetILFunctionBody , musi to zrobić dla obu zdarzeń, ale może używać tego samego bloku CIL dla obu JITCompilationStarted
tych zdarzeń.
Profileery muszą obsługiwać sekwencję wywołań zwrotnych JIT w przypadkach, gdy dwa wątki jednocześnie robią wywołania zwrotne. Na przykład wątek A wywołuje metodę JITCompilationStarted
. Jednak przed wywołaniem JITCompilationFinished
wątku A wątek B wywołuje wywołanie ICorProfilerCallback ::ExceptionSearchFunctionEnter z identyfikatorem funkcji z wywołania zwrotnego wątku JITCompilationStarted
A. Może się wydawać, że identyfikator funkcji nie powinien być jeszcze prawidłowy, ponieważ wywołanie elementu JITCompilationFinished
nie zostało jeszcze odebrane przez profilera. Jednak w takim przypadku identyfikator funkcji jest prawidłowy.
Wymagania
Platformy: zobacz Wymagania systemowe.
Nagłówek: CorProf.idl, CorProf.h
Biblioteka: CorGuids.lib
Wersje programu .NET Framework: dostępne od wersji 2.0