ICorProfilerCallback4::ReJITCompilationStarted — Metoda
Powiadamia profilera, że kompilator just in time (JIT) zaczął ponownie kompilować funkcję.
Składnia
HRESULT ReJITCompilationStarted(
[in] FunctionID functionId,
[in] ReJITID rejitId,
[in] BOOL fIsSafeToBlock);
Parametry
functionId
[w] Identyfikator funkcji, którą kompilator JIT zaczął ponownie kompilować.
rejitId
[w] Identyfikator ponownej kompilacji nowej wersji funkcji.
fIsSafeToBlock
[w] true
aby wskazać, że blokowanie może spowodować, że środowisko uruchomieniowe będzie czekać, aż wątek wywołujący powróci z tego wywołania zwrotnego; false
aby wskazać, że blokowanie nie wpłynie na działanie środowiska uruchomieniowego. Wartość nie true
szkodzi środowisku uruchomieniowemu, ale może mieć wpływ na wyniki profilowania.
Uwagi
Można odbierać więcej niż jedną parę metod ReJITCompilationStarted
i ReJITCompilationFinished wywołania dla każdej funkcji ze względu na sposób obsługi konstruktorów klas przez środowisko uruchomieniowe. Na przykład środowisko uruchomieniowe zaczyna ponownie kompilować metodę A, ale należy uruchomić konstruktor klasy dla klasy B. W związku z tym środowisko uruchomieniowe ponownie kompiluje konstruktor klasy B i uruchamia go. Gdy konstruktor jest uruchomiony, wykonuje wywołanie metody A, co powoduje ponowne skompilowane metody A. W tym scenariuszu zostanie zatrzymana pierwsza ponowna kompilacja metody A. Jednak obie próby ponownego kompilowania metody A są zgłaszane ze zdarzeniami ponownego kompilowania JIT.
Profileery muszą obsługiwać sekwencję wywołań zwrotnych rekompilacji JIT w przypadkach, gdy dwa wątki jednocześnie robią wywołania zwrotne. Na przykład wątek A wywołuje ; ReJITCompilationStarted
jednak przed wątkiem A wywołuje funkcję ReJITCompilationFinished, wątek B wywołuje ICorProfilerCallback::ExceptionSearchFunctionEnter z identyfikatorem funkcji z wywołania zwrotnego dla wątku ReJITCompilationStarted
A. Może się wydawać, że identyfikator funkcji nie powinien być jeszcze prawidłowy, ponieważ wywołanie funkcji ReJITCompilationFinished nie zostało jeszcze odebrane przez profilera. Jednak w tym przypadku identyfikator funkcji jest prawidłowy.
Wymagania
Platformy: Zobacz Wymagania systemowe.
Nagłówka: CorProf.idl, CorProf.h
Biblioteki: CorGuids.lib
.NET Framework wersje: dostępne od wersji 4.5