Sdílet prostřednictvím


ICorProfilerCallback4::ReJITCompilationStarted – metoda

Upozorní profiler, že kompilátor za běhu (JIT) začal znovu zkompilovat funkci.

Syntaxe

HRESULT ReJITCompilationStarted(
    [in] FunctionID functionId,  
    [in] ReJITID    rejitId,  
    [in] BOOL       fIsSafeToBlock);  

Parametry

functionId
[v] ID funkce, kterou kompilátor JIT začal znovu zkompilovat.

rejitId
[v] ID rekompilace nové verze funkce.

fIsSafeToBlock
[v] true k označení, že blokování může způsobit, že modul runtime bude čekat, až se volající vlákno vrátí z tohoto zpětného volání; false označuje, že blokování nebude mít vliv na provoz modulu runtime. Hodnota true nepoškozuje modul runtime, ale může ovlivnit výsledky profilace.

Poznámky

Je možné přijímat více než jednu dvojici ReJITCompilationStarted volání metody ReJITCompilationFinished pro každou funkci kvůli způsobu, jakým modul runtime zpracovává konstruktory třídy. Například modul runtime začne rekompilovat metodu A, ale je třeba spustit konstruktor třídy pro třídu B. Proto modul runtime znovu zkompiluje konstruktor pro třídu B a spustí ho. Zatímco konstruktor je spuštěn, provede volání metody A, což způsobí, že metoda A bude znovu zkompilována. V tomto scénáři je první rekompilace metody A zastavena. Oba pokusy o rekompilaci metody A jsou však hlášeny s událostmi rekompilace JIT.

Profilátory musí podporovat posloupnost zpětných volání JIT rekompilace v případech, kdy dvě vlákna současně provádí zpětná volání. Například vlákno A volá ReJITCompilationStarted; ale před vláknem A volá ReJITCompilationFinished, vlákno B volá ICorProfilerCallback::ExceptionSearchFunctionEnter s ID funkce ze zpětného ReJITCompilationStarted volání pro vlákno A. Může se zdát, že ID funkce by ještě nemělo být platné, protože profiler ještě nepřijal volání ReJITCompilationFinished . V tomto případě je však ID funkce platné.

Požadavky

Platformy: Viz Požadavky na systém.

Záhlaví: CorProf.idl, CorProf.h

Knihovny: CorGuids.lib

Verze rozhraní .NET Framework: K dispozici od verze 4.5

Viz také